Thema: Delphi Extern Debuggen?

Einzelnen Beitrag anzeigen

Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Extern Debuggen?

  Alt 28. Jul 2010, 13:17
Ok, hier noch ein paar Infos:

Der Remote Debugger ist nur eine Option, wenn der Rechner übers Netz vom Entwicklungs-Rechner aus erreichbar ist.
Er erfordert, dass man die Anwendung mit ein paar speziellen Compiler-Optionen erzeugt (map-file, rsm-file, stack-frames...).
Dann startet man am Zielrechner "rmtdbg105.exe -listen". Danach kann man sich mit dem Zielrechner verbinden (Start/Mit Prozess verbinden/Ip eingeben) und mit dem Prozess verbinden.
Man landet dann in einem nichtssagenden CPU-Fenster mit zwei Zeilen
:7c911231 ntdll.DbgBreakPoint + 0x1
:7c9607a8 ntdll.DbgUiRemoteBreakin + 0x2d
Einfach Play drücken und dann wieder Pause, dann ist zumindest der Callstack OK.
Da kann man sich dann schon ganz orientieren, breakpoints setzen und halt normal mit dem Debugger arbeiten.


Wenn eine Anwendung im Feld spinnt wäre der Process Explorer die Wahl der Dinge. Man muss nichts an der Exe ändern, braucht sie nicht neu zu starten, man kann sich einfach in die Anwendung einklinken und den Stack anschauen.
Blöderweise erkennt man da nicht viel. (siehe Screenshot in vorigem Post).
Man kann für die Anwendung ein Map-File erzeugen und das mit map2dbg (http://code.google.com/p/map2dbg/downloads/list) in ein MS-kompatibles Format konvertieren, dann wird der Output vom Process Explorer etwas besser (siehe Anhang) aber so richtig toll ist das noch nicht. Meine Testapplikation bleibt in einer Routine "Hang" hängen, die sieht man im Callstack nicht)


Ich hab mich nun für ein Recompile entschieden und baue einfach madExcept ein. Dort kann man sagen man will einen Callstack wenn die Anwendung z.B: über 5 sec einfriert. Bild im Anhang. Und das neue Exe muss keinerlei Verbindung zum Entwicklungsrechner haben, funktioniert einfach so. Nach der Fehlersuche wirf ich's aber wieder raus.


Ach ja: Will man Log-Ausgaben die mit OutputDebugString gemacht wurden mitlesen, so empfehle ich DebugView von Sysinternals:
http://technet.microsoft.com/en-us/s.../bb896647.aspx


Hier noch ein paar nützliche Links:

http://blog.eurekalog.com/how-to-deb...ications-hang/
http://stackoverflow.com/questions/2...hi-application
Miniaturansicht angehängter Grafiken
newstack.png   stackwithmadexcept.png  

Geändert von ralfiii (28. Jul 2010 um 13:30 Uhr)
  Mit Zitat antworten Zitat