【发布时间】:2016-02-17 11:26:04
【问题描述】:
我正在做一个混合了对话和 MDI 的项目。该项目作为一个选项卡式对话框项目开始。后来MDI被添加到其中。单击其中一个选项卡时,将调用 MDI。如果不单击特定选项卡,它只会保留一个基于对话框的项目。 该项目在发布版本中运行良好。当我进行调试构建时,当我单击初始化 MDI 主框架和窗口的选项卡时出现崩溃。下面给出的是为 MID 窗口创建执行的一段代码。 崩溃消息是 MarkBullV3.exe 中 0x590C0983 (msvcr120d.dll) 处未处理的异常:0xC000041D:在用户回调期间遇到未处理的异常。
任何帮助将不胜感激。如有任何问题,请随时提出。
感谢和问候, 拉克什
pDocTemplate = new CMultiDocTemplate(IDR_Test1TYPE,
RUNTIME_CLASS(CTest1Doc),
RUNTIME_CLASS(CChildFrame), //custom MDI child frame
RUNTIME_CLASS(CTest1View));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME1))
{
delete pMainFrame;
return FALSE;
}
m_pMainWnd = pMainFrame;
for (i = 0; i < 16; i++)
theApp.OnFileNew();
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
totCustomPlotCount = 0;
///////////////////下面的堆栈//////////////////// ///////////////
msvcr120d.dll!_CrtDbgBreak() Line 87 C
msvcr120d.dll!_VCrtDbgReportA(int nRptType, void * returnAddress, const char * szFile, int nLine, const char * szModule, const char * szFormat, char * arglist) Line 290 C
msvcr120d.dll!_CrtDbgReportV(int nRptType, void * returnAddress, const char * szFile, int nLine, const char * szModule, const char * szFormat, char * arglist) Line 262 C
msvcr120d.dll!_CrtDbgReport(int nRptType, const char * szFile, int nLine, const char * szModule, const char * szFormat, ...) Line 279 C
mfc120d.dll!AfxAssertFailedLine(const char * lpszFileName, int nLine) Line 24 C++
mfc120d.dll!CScrollView::OnPrepareDC(CDC * pDC, CPrintInfo * pInfo) Line 387 C++
mfc120d.dll!CView::OnPaint() Line 185 C++
mfc120d.dll!CWnd::OnWndMsg(unsigned int message, unsigned int wParam, long lParam, long * pResult) Line 2448 C++
mfc120d.dll!CWnd::WindowProc(unsigned int message, unsigned int wParam, long lParam) Line 2094 C++
mfc120d.dll!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 282 C++
mfc120d.dll!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 435 C++
mfc120d.dll!AfxWndProcBase(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 299 C++
user32.dll!744084f3() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
[External Code]
V3.exe!V10App::InitInstance() Line 291 C++
[External Code]
V3.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 26 C++
[External Code]
///////////////////////////////////////////////////////////////////////////////// //////////
【问题讨论】:
-
如果你有一个调试版本,那么只需在调试器中运行,让调试器捕捉到实际发生的崩溃,这样你就知道它实际发生在哪里。调试器还可以让您检查变量的值,并让您向上走调用堆栈,以便在崩溃发生在系统或库函数中时转到您的代码。
-
是的,我有一个问题。当您发生崩溃时,您是否打开调试器并查看调用 C 运行时库的调用堆栈?您能否编辑问题中的代码,使其没有多级
&-code 翻译?甚至您的一个报价也从"变为&amp;quot;到&amp;quot;。所以我决定你真的不必那么认真地得到答案。 -
@Joachim Pileborg 我在调试器中运行过试图检查变量。我没有得到足够的清晰度。我可以看到大多数变量都很好,并且不指向 NULL。让我知道我是否可以在这里分享堆栈内容。有没有办法可以发送附件。
-
在您的问题下,就在标签下方,有一行带有几个链接。其中一个说“编辑”。请编辑您的问题以包含所有相关信息,包括在发布的代码中指出发生崩溃的位置,并包括所有相关变量的值。
-
同时编辑代码以删除那些在格式化代码中不需要的 html 实体。