J'utilise Visual Studio pour déboguer une application ATL.Pourquoi pourrait déclencher un point d'arrêt lorsque je renvoie TRUE à partir de mon OnCopyData?
Lorsque je fais un pas sur return TRUE
dans ce code, l'erreur se produit:
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;
}
C'est la boîte de message qui est affiché:
Windows a déclenché un point d'arrêt dans foobar.exe.
Cela peut être dû à une corruption du tas , ce qui indique un bogue dans foobar.exe ou l'une des DLL qu'il a chargé.
Cela peut également être due à l'utilisateur en appuyant sur F12 tandis que phonejournal.exe a focus. La fenêtre de sortie peut contenir plusieurs informations de diagnostic .
Le message est un peu vague, et je me demande quels outils je peux utiliser pour obtenir plus d'informations. Les pauses débogueur sur l'appel à AtlTraceVU
dans atltrace.h
:
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);
}
Nice, merci! Je n'ai pas encore essayé, mais je l'accepterai comme réponse quand je le ferai. –
N'avez pas encore essayé, mais il s'est avéré être une corruption de tas (découvert en utilisant des essais et erreurs), mais je me souviendrai Application Verifier pour la prochaine fois. –