Programmabsturz
-
Scheint, so als ob noch irgendetwas auf ein Objekt zugreifen will, das bereits zerstört ist.
Schau Dir doch mal den Callstack genauer an. Da siehst Du doch wer was tun möchte...
-
Hmmm? Wie kann ich das denn dort sehen??
-
Wenn Du das Callstack Fenster hats, wird doch Zeile für Zeile augelistet, wer wen wo aufruft.
-
Ich muss jetzt erstmal rausfinden wie ich das Callstack fenster öffne

Hatte das bisher noch nicht so benutzt.
-
Ahja die Aufrufliste hab ich jetzt gefunden.
Wo muss ich nun einen Haltepunkt setzen?
Und wie sehe ich dort was noch aufgerufen wird?
Werde nicht schlau aus dem Code.
-
Da musst Du keinen Haltepunkt setzen. Wenn es kracht kannst Du hier durch Doppelklick einfach sehen wer wen wann aufruft...
Wo kracht es nun? Bei einem Destruktor vermute ich mal!
-
Hier zeig ich dir jetzt mal die Aufrufliste, die erscheint wenn es kracht.
Vielleicht könntest du mir bitte erklären wie ich darazs sehe, wer wen aufgerufen hat.
ntdll.dll!7c901230()
ntdll.dll!7c96c943()
ntdll.dll!7c949eb9()
> mfc71d.dll!CThreadSlotData::GetThreadValue(int nSlot=14837864) Zeile 269 C++
mfc71d.dll!CThreadSlotData::GetThreadValue(int nSlot=3) Zeile 269 C++
mfc71d.dll!CThreadLocalObject::GetData(CNoTrackObject * (void)* pfnCreateObject=0x7c29dc40) Zeile 414 + 0x11 C++
mfc71d.dll!CThreadLocal<AFX_MODULE_THREAD_STATE>::GetData() Zeile 177 + 0xd C++
mfc71d.dll!AfxGetModuleThreadState() Zeile 243 C++
0012e1b8()
mfc71d.dll!CMapPtrToPtr::GetValueAt(void * key=0x002203fe) Zeile 185 + 0xc C++
mfc71d.dll!CHandleMap::LookupPermanent(void * h=0x002203fe) Zeile 116 + 0x16 C++
mfc71d.dll!CWnd::AssertValid() Zeile 888 + 0xf C++
mfc71d.dll!CView::AssertValid() Zeile 500 C++
mfc71d.dll!CFormView::AssertValid() Zeile 272 C++
Par.exe!CParView::AssertValid() Zeile 1978 C++
0000000a()
ntdll.dll!7c96d6aa()
user32.dll!77d4882a()
user32.dll!77d4c63f()
ntdll.dll!7c949d18()
mfc71d.dll!CWnd::DefWindowProcA(unsigned int nMsg=1238036, unsigned int wParam=2082654585, long lParam=32) Zeile 1024 + 0x20 C++
mfc71d.dll!CThreadLocal<_AFX_THREAD_STATE>::GetData() Zeile 177 + 0xd C++
00000001()
user32.dll!77d4d4ee()
-
Hab mein Problem immer noch nicht gelöst.
Kann mir denn niemand helfen??
-
Wenn innerhalb der Methode "CMainFrame::OnViewDisplay()" ein Fenster erzeugt wird, dann sollte es seine eigene Warteschleife haben :
// statt : while (::PeekMessage(&Msg, NULL,0,0,PM_NOREMOVE)) { if (!AfxGetApp()->PumpMessage()) {::PostQuitMessage (0); break;} } // probier mal : while (::PeekMessage(&Msg, NULL,0,0,PM_REMOVE)) { ::TranslateMessage (&Msg); ::DispatchMessage (&Msg); }
-
hmm, mal ausprobieren.
-
Nö, das funktioniert auch nicht!!!