Debug Assertion bei Thread im Debag-Mode
-
hallo zusammen!
ichhabe folgendes Problem mit einen thread im debug mode, im release mode läufts bestens. Und zwar bekomme ich immer eine debug assertion wenn eine funktion in der threadFunction gestartet wird....
Die Parameter (no_of_signals,arr1, count, fname) sind alle global!!!UINT ThreadSaveFile(LPVOID xthis) { Manipulation* _this = (Manipulation*)xthis; _this->savefile(no_of_signals,arr1, count, fname); return 0; } ... ... ... Callback_Thread1 = AfxBeginThread( ThreadSaveFile,// function to run on thread (LPVOID)this, // value to pass to function THREAD_PRIORITY_NORMAL, // thread's priority 0, // stack size CREATE_SUSPENDED, // create susupended thread NULL); //start thread Callback_Thread1->ResumeThread();
ich komm einfach nicht drauf
, weiß jemand warum das so ist?
herzlichen dank,
lg
l00P
-
Hast du schon "Wiederholen" beim Assert gedrückt?
Die Zeile hilft enorm beim Suchen.
-
hmmmm, guter Beitrag, hab ich grade probiert, in diesem fall fängt er an die function savefile() auszuführen aber komischerweise gibts eine unhandled exception in einem bereich wo ich einfach nur ein
char buf[252];
mit '' befülle (oder leere
) keine Ahnung was ihn daran stört...
-
Hä?
Also, eigentlich solltest du in einer Zeile landen, wo ASSERT steht.
Die ist interessant.
-
... nein dort komme ich nicht hin. Wenn ich retry drücke dann kommt nochmal was dort drücke ich auf continue und dann läuft das programm richtig weiter...
komisch oder?
-
Nein, das ist nicht komisch. Das ist normal bei ASSERTs.
Zeig bitte das, was kommt BEVOR du continue drückst.
-
da kommt eine messagebox mit eben diesem continuebutton un die message ist:
"Unhandled exception at 0x7c22dc14 (mfc71d.dll) in SdexClient.exe: User breakpoint."
-
Was hast du da außer Continue? Irgendwie musst du doch in den Quellcode kommen.
Schlimmstenfalls halte das Ausführen an, wenn die die Messagebox vom ASSERT siehst und hangel dich den Callstack hoch bis zu der Zeile mit ASSERT.
-
Da ist auüerdem noch ein break button, aber ich komme zu keinem sourcecode, wie soll ich das anstellen??
-
Schade, keine Ahnung, wie du das anstellen sollst.
Normalerweise gehört zu einem Assert auch eine Stelle im Quellcode, wo du dann ziemlich leich rauslesen kannst, was nicht stimmt.
So weiß ich ehrlich gesagt auch nicht weiter.Das einzige, was mit noch einfällt ist: Wenn deiner Meinung nach alles okay ist, dann drück "Rebuild all". Wenn das nicht hilft, und du den aktuellen Servicepack installiert hast, dann hab ich keine Idee mehr.