CRT Fehler; Speicheradresse nutzbar?
-
Hallo!
Mein MFC Programm stürzt leider ab, dergestalt dass CRT einen "Runtime Error!" meldet. Als genauere Meldung gibts noch:
First-chance exception at 0x6a433fec in testprog.exe: Microsoft C++ exception: CInvalidArgException at memory location 0x07a868bHelfen diese Speicheradressen eigentlich dabei, sich näher an den Fehlerort heranzutasten?
Auf Wiederschreiben!
-
bevor du dich mit speicheradressen befasst, was sagt der debugger?
schon durchgesteppt und geschaut, wo das problem liegt?
-
First-Chance Exceptions sind durch Dein Programm behandelte Exception. Im allgemeinen kannst Du die ignorieren. Wenn Du wissen willst was da passiert, dann stell den Debugger für die Exceptions so ein, dass er alle behandelt.
Dann wirst Du sehen, dass hier eine kontrollierte Fehlerbehandlung abläuft, oder auch nicht und Du hast einen Fehler reinprogrammiert, der aber abgefangen wird von der MFC.
-
Leider tritt der Fehler erst nach vielen Stunden Laufzeit auf.
Während dieses CRT Fehlerfensters läuft mein Programm aber scheinbar in Seelenruhe weiter im Hintergrund. Verbinde ich nun den Debugger mit meinem Programm, hält der ebenfalls nicht an, sondern es geht alles scheinbar normal weiter. Erst wenn ich das CRT Fehlerfenster mit OK bestätige, stürzt mein Programm augenblicklich ab und diese "First-chance exception" Meldung wird angezeigt.
-
OK! Dann hast Du wirklich einen Crash, und irgendwo wird evtl. Dein Stack zerschossen.
Was passiert wenn Du die Software im Debugger laufen lässt?
-
Martin Richter schrieb:
Was passiert wenn Du die Software im Debugger laufen lässt?
Der Fehler tritt wie gesagt erst nach vielen Stunden auf, darum konnte ich bisher keine Version im Debugger voll durchlaufen lassen bis der Fehler kommt.
-
eine chance wäre noch, dass ein strom geöffnet wird über ein nicht existierendes argument, oder ähnliches.
CInvalidArgException
This class represents an invalid argument exception condition.Do not use this constructor directly; call the global function AfxThrowInvalidArgException.
AfxThrowInvalidArgException
Throws an invalid argument exception.klingt vielleicht findbar.
-
Hallo,
ich erwarte nicht, dass mir jemand sagt was denn nun genau der Fehler ist; aber vielleicht wisst ihr wie man ausgehend von meiner Situation systematisch/lehrbuchmäßig vorgeht, um den Fehler zu finden.
-
1. Debugger anschließen! Evtl. auch Remote.
Wenn Du debuggst, dann setz einen Breakpoint auf AfxThrowInvalidArgException!
2. Quellen suchen, sprich welche Klassen nutzten diese Execption, wenn es um AfxThrowInvalidArgException geht? Schmeiß mal eine globale Suche an über die MFC Sourcen.
Du wirst sehen, dass es zum großen Teil gerade die Containerklassen sind. Evtl. fütterst Du einen Array mit falschen Indizies.
3. Ursache kann aber auch ein Fehler in eine falsch benutzten CRT Funktion sein, die EINVAL oder ERANGE returniert...Quellen gibt es massig