我正在使用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