Dies ist ein kleines Programm, das ich den Fehler zu reproduzieren schrieb ich erhalten:C++ Debugger stoppt in falscher Stelle auf Absturz, VS10 win7
#include <assert.h>
int main(int argc, char **argv)
{
int* nPtr = 0;
*nPtr = 5;
//assert(0 && "testing");
//static int nZero = 0;
//static float x = 5/nZero;
return 0;
}
der Call-Stack ist falsch, und es ist jetzt Weg, um die Fehler zurückzuzuverfolgen . im Kompilieren ohne Optimierung in 32 Bit. pdb entspricht der exe.
dies ist der Call-Stack i erhalten:
ntdll.dll!76f615de()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!76f615de()
ntdll.dll!76f5014e()
msvcr100d.dll!_unlock(int locknum) Line 375 C
003df930()
cccccccc()
vielen Dank, Evgeny
Man könnte der Debugger erwarten, dass Sie helfen, den Fehler zu finden und zu beheben ... –
Nun kann der Debugger zeigen Sie nur die Aufruf-Stack, den der Compiler tatsächlich generiert hat (vorausgesetzt, er ist sogar gültig, da der Stack möglicherweise beschädigt ist). Da der Code ein nicht definiertes Verhalten hat, kann der Compiler Unsinn erzeugen und wie könnte der Debugger Ihnen dann helfen? Außer Ihnen zu zeigen, was wirklich passiert ist. –