Ausnahmefehler während der Debuglaufzeit

fujitsufan

Erfahrenes Mitglied
Hallo,

ich bin dabei eine Programmabstrutz zu loklisieren.

Situation:
Im Debugmodus kommt keine Exceptionmeldung während der Laufzeit.
Erst wenn das Programm geschlossen wird kommt eine Meldung Zugriffsverletzung
(MSVS08_1.jpg).
In diesem Fenster gelangt man zum Disasembler Code.
Was mir fehlt ist, dass ich an dieser Stelle im Disasembler Code einen Verweis
auf die Stelle des Quellcodes hätte.
Wie komme ich in dieser Situation weiter****?

Läuft das Programm auf der richtigen Umgebung, so stürzt da Programm ab.


MfG.
fujitsufan
 
Moin,

Du kannst dann aber an der Stelle über den CallStack sehen, welches die letzte Position in Deiner Anwendung war, um dort zu schauen, was den Fehler verursacht hat !

Gruß
Klaus
 
Hi

mach als Erstes mal einen Haltepunkt am Anfang des Schließvorgangs.
Dann Zeile für Zeile weitergehen und auf den Crash warten.

Wenns viel Code ist mehrere Bereiche mit Haltepunkten abgrenzen
und zuerst mal den Bereich rausfinden, dann zeilenweise weiter.

Zur "richtigen" Umgebung: Könnte man den Prozess auch dort mitdebuggen?

@Vflfreak: Oder so, wenn man einen hat.
 
Hallo vfl_freak,

wenn Du mit CallStack die Aufrufliste meinst, da sind nur ca. 200 Dissasemblerzeilen drin,
mit denen kann ich nichts anfangen. Kein Verweis auf meinen C- Code.

Trotzdem Danke.

MfG.
fujitsufan
 
Hi.

@fujitsufan: Hast du denn auch die .pdb Datei zu deinem Code generieren lassen? Welchen Debugger verwendest du denn?

Kannst du denn dein Programm nicht direkt im Debugger laufen lassen?

Gruß
 
Hallo sheel,

dies stellt ja das Problem dar, dass kein Crash verursacht und auch keine Exception ausgelöst wird.
Oder kann ich in VS2008 eine Einstellung vornehmen, dass auch Lesefehler zu einer Exception Meldung führen?

MfG.
fujitsufan
 
dies stellt ja das Problem dar, dass kein Crash verursacht und auch keine Exception ausgelöst wird.
Unter welchen Bedingungen wird denn jetzt die Ausnahme / der Absturz verursacht, und unter welchen nicht?
Oder kann ich in VS2008 eine Einstellung vornehmen, dass auch Lesefehler zu einer Exception Meldung führen?
Es ist eine Zugriffsverletzung aufgetreten, da ist es egal ob beim Lesen oder Schreiben.

Gruß
 
Hallo

fujitsufan hat gesagt.:
Im Debugmodus kommt keine Exceptionmeldung während der Laufzeit.
Erst wenn das Programm geschlossen wird kommt eine Meldung Zugriffsverletzung
Wie meinst du das? Läuft das Programm im Debug- oder im Releasemode?
Im Releasemode wird bei mir auch nur Assemblercode dargestellt, im Debugmode sehe ich den Haltepunkt.

Gruss
cwriter
 
Hast du denn viele Lesezugriffe in deinem Code? Du könntest diese mal in try catch blöcke packen, dann solltest du genau sehen, wo deine Exception auftritt.
Hast du denn die richtige Konfiguration fürs Debuggen verwendet? (Optimierungen abgeschaltet, Symbole behalten etc.)
siehe z.B. http://msdn.microsoft.com/de-de/library/kcw4dzyf(v=vs.80).aspx
Ansonsten wenn du dich mit dem Debugger noch nicht auskennst:
http://www.codeproject.com/Articles/79508/Mastering-Debugging-in-Visual-Studio-2010-A-Beginn
 
Hallo zusammen,
das Problem mit dem Lesezugriff kann ich nicht exakt eingrenzen.
Läuft das Programm nicht im Debugmodus, so stürzt es nicht immer an der gleichen Stelle ab.
Im Debugmodus erhalte ich die Fehlermeldung erst bei Beenden des Programms.
Ich kann aber im Disasembly die Codezeile und die Operation erkennen.
An der Adresse 02754A65 ist der Wert auf den der Zeiger ptr zeigt nicht deklariert.
Könnte ein Grund für den Absturz sein.

Code:
02754A5F 8B 41 F8         mov         eax,dword ptr [ecx-8] 
02754A62 8B 50 0C         mov         edx,dword ptr [eax+0Ch] 
02754A65 83 3A 00         cmp         dword ptr [edx],0 
02754A68 74 63            je          02754ACD 
02754A6A E8 39 10 00 00   call        02755AA8

Jetzt habe ich aber kein Bezug auf die Quellcodezeile (C++ Syntax).
Oder kann ich diesen Bezug irgendwie herstellen?

MfG.
fujitsufan
 
Zurück