我正在使用Visual Studio来调试ATL应用程序。当我从OnCopyData返回TRUE时,为什么会触发一个断点?
当我在此代码跨过return TRUE
,出现错误:
BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) {
// Code snipped from here - maybe this causes stack/heap corruption?
// I have a breakpoint here, if I step over (F10), AFX trace message
// is shown (as below)
return TRUE;
}
这就是会显示的消息框:
Windows已经引发了断点 foobar.exe。
这可能是由于 堆的腐败,这表明在 foobar.exe或任何它 已加载的DLL的一个错误。
这也可能是由于用户 按F12而phonejournal.exe 有焦点。
输出窗口可能有更多 诊断信息。
该消息有点模糊,我想知道我可以使用哪些工具获取更多信息。在atltrace.h
在调用AtlTraceVU
的中断调试:
inline void __cdecl CTrace::TraceV(const char *pszFileName, int nLine,
DWORD_PTR dwCategory, UINT nLevel, LPCWSTR pszFmt, va_list args) const
{
AtlTraceVU(m_dwModule, pszFileName, nLine, dwCategory, nLevel, pszFmt, args);
}
不错,谢谢!我还没有尝试过,但在我这样做时会接受这个答案。 – 2010-01-20 23:09:42
还没有尝试过,但它竟然是堆腐败(发现它使用试验和错误),但我会记得下次应用程序验证程序。 – 2010-01-29 21:15:37