我一直在使用visual studio开发单线程 C ++ 程序。我一直在运行“debug”版本并且通常如果我遇到某种崩溃,调试器会帮助我指出代码中的坏行。有时崩溃发生在 C ++库函数中,在这种情况下,我会查看“调用堆栈”窗口,并可以快速发现我的代码调用库中的最后一次调用功能。
但是现在我正在努力解决“Exception thrown”问题,其中"strcat.asm"
发生了崩溃,但调用堆栈没有显示任何代码我认识。在调用堆栈窗口中,我可以看到像"ntdll.dll!__RtlUserThreadstart@8()
这样的东西 - 无论这意味着什么!
如何找到导致此次崩溃的代码部分?
更新:经过多次痛苦,我终于发现这个bug基本上是
value[idx] = a;
其中idx
取值-1。毫无疑问,这已经破坏了堆栈。