Ausnahmefehler während der Debuglaufzeit

Setze im Debugmodus mal Haltepunkte grossräumig im Bereich, wo der Fehler auftritt. Überprüfe da, ob es irgendwo NULL-pointer oder ähnliches im Stack hat.
Alternativ: Es sollte eine Liste angezeigt werden, wo man zu den Sourcen wechseln kann. Dort steht manchmal auch z.B. strcat bei Kopieroperationen in NULL-Speicherbereiche (siehe Anhang, hier in der Qt Creator-IDE und mit VC++ 2010 Express Compiler).
Wenn der Fehler in einer speziellen Funktion / Datei vorkommt (nicht nur in der int main() / main.cpp), dann wird das dort manchmal auch angezeigt.
Zeige doch mal ein bisschen Code.

Gruss
cwriter
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    13,9 KB · Aufrufe: 6
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.
Meinst du mit Debugmodus "unter einem Debugger" oder "mit Debug Optionen kompiliert"?

Probier mal einen anderen Debugger, z.B. WinDBG. Z.B. als JIT Debugger.

Gruß
 
Hi.

Irgendwie ist das ja auch nur ein Gestochere im dichten Nebel, da du bis jetzt nicht genau gesagt hast was du überhaupt gemacht hast.

Das Pferd von Vorne aufgezäumt:

1. stelle sicher, dass du Debuginformationen vom Compiler generiert hast (.pdb Datei bei MSVC)
2. erstelle entweder eine Debug Version oder auch eine Release Version mit Debug-Informationen (Punkt 1) -- eine Release Version kann günstiger sein, falls der Fehler auf einer Race-Condition beruht
3. verwende einen anderen Compiler, falls möglich
4. verwende einen Memory-Checker und ähnliche Werkzeuge (falls du unter Linux kompilieren kannst
5. verwende die Debug-CRT

Das Pferd von Hinten aufgezäumt:

1. Falls kein Callstack angezeigt wird, kann das mehrere Ursachen haben:

a) du hast keine Debuginformationen (MS Symbolserver eingerichtet?)
b) du hast den Stack zerstört

2. verwende einen anderen Debugger (WinDBG ist sehr mächtig)
3. falls das Problem eher / anders unter Überwachung mit einem Debugger auftritt, nutze einen JIT Debugger
4. verwende Valgrind und Wine unter Linux (http://wiki.winehq.org/Wine_and_Valgrind)

Grundsätzlich: Versuche dein Problem besser zu beschreiben, was genau hast du gemacht (wie hast du kompiliert, welches System, welcher Compiler, Debugger?). Beschreibe die Symptome genauer (kannst du denn das Programm normal debuggen? Ist der Callstack vorhanden bevor der Crash auftritt?)

Gruß
 
Zurück