Autor |
Beitrag |
Rolf_Geisler
      
Beiträge: 16
WIN XP
D7 Prof
|
Verfasst: Di 09.08.05 10:54
Hallo,
habe da ein kleines Problem. In einer Anwendung taucht urplötzlich ein Laufzeitfehler auf, und Windows zieht in Windeseile viele kleine Fensterchen mit immer der gleichen Meldung auf, unter anderem der Fehleradresse.
Wie kommt man denn nun von dieser Adresse - wahrscheinlich über die MAP-Datei - zur Problemstelle im Quellcode?
Vielleicht hat jemand eine Idee ...
Danke, Rolf 
|
|
rochus
      
Beiträge: 416
Win XP Prof, Fedora Core 4, SuSE 7.0
D7 Ent, D2005 Pers
|
Verfasst: Di 09.08.05 11:06
du kannst einen Addresshaltepunkt setzen (sieh OH), aber einfacher dürfte es sein, wenn du ungefährt weißt, wo der Fehler kommt, ihn reproduzierst und in der Schleife/Prozedur einen normalen Haltepunkt setzt und debuggst bis du ran kommst.
Gruß
_________________ Im Nachhinein ist man immer ein Schlauch!
"Dream as if you'll live forever, live as if you'll die today!" James Dean
|
|
Rolf_Geisler 
      
Beiträge: 16
WIN XP
D7 Prof
|
Verfasst: Di 09.08.05 11:31
Danke für den Tip. Funktioniert aber leider nicht, da das Projekt auf einem Rechner weit weg beim Kunden läuft  Den Quellcode habe ich dort nicht verfügbar ...
Ich habe wirklich nur Zugriff auf die von Windows gemeldete Fehleradresse und auf die MAP-Datei, die ich hier beim Compilieren habe erzeugen lassen.
|
|
rochus
      
Beiträge: 416
Win XP Prof, Fedora Core 4, SuSE 7.0
D7 Ent, D2005 Pers
|
Verfasst: Di 09.08.05 11:34
Hmm, sorry außer den Tipps fällt mir nur ein, eine Debuggerklasse zu schreiben, aber ich nehme an, das lässt sich für dich so schnell nicht realisieren.
Gruß
_________________ Im Nachhinein ist man immer ein Schlauch!
"Dream as if you'll live forever, live as if you'll die today!" James Dean
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Di 09.08.05 12:13
Hi,
für diesen Einsatzzweck gibt es fertige komponenten.
Unter anderem gibt es da MadExcept bei www.madshi.net und Eurekalog bei www.eurekalog.com.
Ich habe beide erfolgreich eingesetzt. Aktuell verwende ich Eurekalog, kann ich nur empfehlen.
Beide Tools fangen Fehler ab und erstellen eine Log-Datei mit einem Stacktrace und genauer Angabe von Unit, Methode und Zeile in der der Fehler aufgetreten ist.
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 09.08.05 13:19
Wenn die Fehleradresse innerhalb diener Anwendung liegt, kannst Du das Programm unter Delphi stoppen und Suchen\Laufzeitfehler aufrufen um dort $Fehleradresse zu suchen. Wenn Du glück hast, öffnet Delphi Dir dann ne konkrete Fehlerzeile, ansonsten das CPU-Fenster. Dort kannst Du dann auf jeden Fall nen Haltepunkt setzen und über den Aufruf-Stack an eine brauchbare Position navigieren.
Debug-Tools a la MadExcept und EurekaLog sind zwar schön, helfen aber gerade nicht bei Anfängern den Umgang mit nem Debugger zu erlernen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Rolf_Geisler 
      
Beiträge: 16
WIN XP
D7 Prof
|
Verfasst: Di 09.08.05 15:57
Danke. EurekaLog sieht wirklich gut aus, die Trial-Version hat alle für den Test eingebauten Fehler gefunden und dokumentiert. Ist genau das, was ich gesucht habe. Ich hoffe, der Chef gibt das Geld für mich aus ...
Rolf 
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Mi 10.08.05 15:37
BenBE hat folgendes geschrieben: | Wenn die Fehleradresse innerhalb diener Anwendung liegt, kannst Du das Programm unter Delphi stoppen und Suchen\Laufzeitfehler aufrufen um dort $Fehleradresse zu suchen. Wenn Du glück hast, öffnet Delphi Dir dann ne konkrete Fehlerzeile, ansonsten das CPU-Fenster. Dort kannst Du dann auf jeden Fall nen Haltepunkt setzen und über den Aufruf-Stack an eine brauchbare Position navigieren.
Debug-Tools a la MadExcept und EurekaLog sind zwar schön, helfen aber gerade nicht bei Anfängern den Umgang mit nem Debugger zu erlernen. |
Das Problem war in diesem Fall aber, daß kein Delphi zum Debuggen verwendet werden kann, da der Fehler nur beim Kunden auftrat. Und der hat kein Delphi 
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 10.08.05 15:47
Geht genauso
Anwendung in Delphi ausführen, Start\Programm anhalten --> Dann besagte Funktion aufrufen.
Wichtig ist nur, dass die Versionen der EXE-Datei von Delphi und beim Kunden identisch sind, sonst stimmen die Adressen nicht vollständig (oder auch gar nicht).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Do 11.08.05 18:32
Oh, danke, habe ich gerade ausprobiert und mal wieder was dazugelernt
Gruß
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
|