Autor Beitrag
Rolf_Geisler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 16

WIN XP
D7 Prof
BeitragVerfasst: 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, Rolfuser profile icon
rochus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416

Win XP Prof, Fedora Core 4, SuSE 7.0
D7 Ent, D2005 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 16

WIN XP
D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416

Win XP Prof, Fedora Core 4, SuSE 7.0
D7 Ent, D2005 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 16

WIN XP
D7 Prof
BeitragVerfasst: 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 ... :wink:
Rolfuser profile icon
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Mi 10.08.05 15:37 
user profile iconBenBE 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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.