AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Extern Debuggen?

Ein Thema von ralfiii · begonnen am 27. Jul 2010 · letzter Beitrag vom 28. Jul 2010
Antwort Antwort
Benutzerbild von ralfiii
ralfiii

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

AW: Extern Debuggen?

  Alt 28. Jul 2010, 14: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
Angehängte Grafiken
Dateityp: png NewStack.png (10,6 KB, 7x aufgerufen)
Dateityp: png StackwithMadExcept.png (7,5 KB, 9x aufgerufen)

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz