Wie könnte man ein Programm debuggen, während es in Verwendung ist?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Im Produktiven Einsatz sollte man das eigentlich gar nicht machen, da sollte man höchstens die Logfiles lesen die das Programm schreibt.

Wenn man ein Programm debuggen will sollte man das Programm im Optimalfall direkt mit dem Debugger starten und normal debuggen.

Wenns wirklich nicht anders geht kann man einen Debugger auch nach dem Start dazuhängen, auf Englisch wird das Attach genannt. Der gdb kann das, das ist zB nützlich wenn man eine C Bibliothek zB in Java verwenden möchte, aber während dem Einsatz im Javaprogramm debuggen möchte.

Allerdings musst du hierbei beachten, dass Programme für den Produktiveinsatz meistens optimiert werden, sprich das Programm muss nicht mehr 1 zu 1 dem Quellcode entsprechen, womit das Debuggen unter Verwendung des Quellcodes schwerer wird, auf Assemblerebene kann man natürlich auch dann noch das Programm problemlos debuggen.

VisualStudio bietet (zumindest bei .NET-Programmen) die Möglichkeit, sich an einen laufenden Prozess anzuhängen.

Frag mich nicht, wie das funktioniert (irgendeine Form von Magie), aber wenn Du den SourceCode dazu hast, kannst Du so ein Programm debuggen.

Solltest Du aber nur tun, wenn's wirklich nicht anders geht, denn dabei kann es auch zu unerwartetem Verhalten kommen. Mit Magie spielt man eben nicht :D
Außerdem kann es sehr gut sein, dass dein SourceCode nicht mehr zum Programm passt, de der Compiler je nach Einstellung einiges optimiert und umstellt.

Es gibt daneben noch Tools wie "DnSpy". DnSpy ist Decompiler und Debugger in Einem. Ob der sich auch an einen Prozess anhängen kann, weiß ich aber nicht.

Mit nem Debugger...

Oder geht es dir darum, dich an ein bereits laufendes Programm anzuhängen? Auch in dem Fall wäre die Antwort "mit nem Debugger", allerdings wäre die Auswahl ein wenig eingeschränkter.

Was heißt "in Verwendung"? Dass es läuft? Das muss es ja, sonst kann man's nicht debuggen.

Kommt darauf an. Mit Visual Studio und Windbg kannst du dich an einen laufenden Prozess hängen.

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer