J'ai un énorme snapin MMC écrit en Visual C++ 9. Chaque fois que je tape F5 dans MMC mmc.exe se bloque. Si je lui attache un débogueur, je vois le message suivant:Comment déboguer un dépassement de tampon dans Visual C++ 9?
Un débordement de tampon s'est produit dans mmc.exe qui a corrompu l'état interne du programme. Appuyez sur Pause pour déboguer le programme ou sur Continuer pour terminer le programme.
Pour plus de détails, veuillez consulter la rubrique d'aide 'Comment déboguer les problèmes de dépassement de tampon'.
Tout d'abord, il n'y a pas Comment déboguer sujet tampon Débordement Problèmes partout.
Lorsque je visite la pile d'appel, je vois qu'il est probablement quelque chose avec les cookies de sécurité utilisés pour se prémunir contre les dépassements de mémoire tampon pile allouée:
MySnapin.dll!__crt_debugger_hook() Unknown
MySnapin.dll!__report_gsfailure() Line 315 + 0x7 bytes C
mssvcr90d.dll!ValidateLocalCookies(void (unsigned int)* CookieCheckFunction=0x1014e2e3, _EH4_SCOPETABLE * ScopeTable=0x10493e48, char * FramePointer=0x0007ebf8) + 0x57 bytes C
msvcr90d.dll!_except_handler4_common(unsigned int * CookiePointer=0x104bdcc8, void (unsigned int)* CookieCheckFunction=0x1014e2e3, _EXCEPTION_RECORD * ExceptionRecord=0x0007e764, _EXCEPTION_REGISTRATION_RECORD * EstablisherFrame=0x0007ebe8, _CONTEXT * ContextRecord=0x0007e780, void * DispatcherContext=0x0007e738) + 0x44 bytes C
MySnapin.dll!_except_handler4(_EXCEPTION_RECORD * ExceptionRecord=0x0007e764, _EXCEPTION_REGISTRATION_RECORD * EstablisherFrame=0x0007ebe8, _CONTEXT * ContextRecord=0x0007e780, void * DispatcherContext=0x0007e738) + 0x24 bytes C
ntdll.dll!7c9032a8()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!7c90327a()
ntdll.dll!7c92aa0f()
ntdll.dll!7c90e48a()
MySnapin.dll!IComponentImpl<CMySnapin>::GetDisplayInfo(_RESULTDATAITEM * pResultDataItem=0x0007edb0) Line 777 + 0x14 bytes C++
// more Win32 libraries functions follow
J'ai beaucoup de code et aucune idée d'où le dépassement de la mémoire tampon peut se produire et pourquoi. J'ai trouvé this forum discussion et en particulier le conseil de remplacer toutes les fonctions de type wcscpy avec des versions plus sécurisées comme wcscpy_s(). J'ai suivi le conseil et cela ne m'a pas rapproché de la solution du problème. Comment puis-je déboguer mon code et trouver pourquoi et où le dépassement de tampon se produit avec Visual Studio 2008?
Comment?
Merci beaucoup d'avoir choisi cet interrupteur/RTC! M'a sauvé beaucoup de temps. – Trass3r