![]() |
Adresse im Compilat suchen ?
Hi, folgendes Problem:
Ich habe eine Anwendung, die in einer bestimmten Konstellation beim beenden eine Access Violation hochbringt. Die kommt leider so spät beim Beenden, das mir der Debugger keinen Aufruf-Stack mehr bringt. Wie kann ich nun anhand der Hex-Adresse die mir in der Exception angezeigt wird herausfinden, wo die in meinem Code ausgelöst wird? Grüßle, Sebastian |
Re: Adresse im Compilat suchen ?
Moin Sebastian,
das Problem hatte ich bislang nur, wenn ich mir im Programm z.B. den Stack zerschossen hatte, und unter dieser Voraussetzung kommst Du dann nicht an die Sourcecode Position, da es sie unmittelbar, also in Deinem Source, nicht gibt. ;-) Du könntest mal den Sourcecode anhängen, denn bei der Personal wird es nicht gehen können das Projekt mit den Debug DCUs zu kompilieren, so dass Du auch die VCL Sourcen beim Debuggen mit angezeigt bekommst. |
Re: Adresse im Compilat suchen ?
Der Source ist leider sehr umfangreich und dürfte an der Stelle nicht wirklich helfen.
Hier auf der Arbeit hab ich übrigens D5 Prof. Ich hab das Problem das ich bei einem EC-Terminal immer nach einem Logon die AccVio bekomme sobald ich das Programm beende - aber eben auch nur in dem Moment. Vorher nicht :shock: |
Re: Adresse im Compilat suchen ?
Moin Sebastian,
ach so. Dann könntest Du es ja mal mit den Debug DCUs versuchen. Ich tippe immer noch auf das Überschreiben eines wichtigen Speicherbereiches. |
Re: Adresse im Compilat suchen ?
Die helfen nichts. Das knallt in SYSTEM procedure _Halt0:
Delphi-Quellcode:
Wenn ich den Logon durchgeführt habe, steht bei ExitProc an zweiter Stelle irgendwann $FFFFEFFFF und der aufruf von P rauscht dann freilich ins Leere.
while ExitProc <> nil do
begin @P := ExitProc; ExitProc := nil; P; end; Aber ich frage mich, wie die Aufrufadresse da reinkommt? |
Re: Adresse im Compilat suchen ?
Moin Sebastian,
hast Du irgendwo finalization Abschnitte? |
Re: Adresse im Compilat suchen ?
Nein.
Das einzige was ich ausser der Reihe mache ist mir mal einen Speicherbereich mit GetMem zu reservieren, den gebe ich aber auch sauber hinterher wieder frei. So langsam wurmt mich das ganze recht deutlich. |
Re: Adresse im Compilat suchen ?
Moin Sebastian,
es könnte auch in einem der finalization Abschnitte der Delphi Units einen Hinweis geben. Irgenwo muss da ja eine Adresse zerschossen worden sein. |
Re: Adresse im Compilat suchen ?
Hrm ja. An irgendeiner Stelle wird eine Adresse in der EndProc - Liste verbogen. Allerdings weiss ich noch nicht, an welche Stelle da reingeschrieben wird.
Die Frage ist jetzt: Wie bekomme ich am einfachsten heraus, wann irgendetwas den Wert einer bestimmten Speicheradresse ändert? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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