c++调试器在崩溃时停止在错误的地方,VS10 win7
c++ debugger stops in wrong place on crash, 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;
}
调用堆栈是错误的,现在有方法可以重新跟踪错误。我编译没有优化在32位。PDB匹配exe.
这是我得到的调用堆栈:
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()
谢谢,Evgeny
您的代码被破坏了。当您通过它写时,您的指针不指向有效的int
。这是未定义的行为,编译器可能会生成它想要的任何东西。调试器中的堆栈跟踪没有意义是无关紧要的,因为没有办法知道会发生什么——这就是未定义行为的本质。
Int *p =0,这意味着p点0x00000000,它是不可访问的。所以你改变*p,它会导致拒绝
我找到了我在这里寻找的答案
简而言之,AVX在异常之后在调用堆栈中导致错误。
您可以通过以下方式关闭AVX:
bcdedit /set xsavedisable 1
重启电脑
相关文章:
- 可能的Qt5错误:调用setFixedSize()禁用主窗口的关闭按钮(在Win7下)
- Win7 C++ - 从以用户身份登录的服务启动可执行文件的问题
- 在Win7上,在默认端点上轮询音频会话有时会崩溃
- G++无法编译Win7,64位(MinGW.org GCC-6.3.0-1)
- DirectShow 在 Win7/Win10 上失败并显示黑框和0x80070005
- 当可以在Win7上正确生成Linux时,如何使用SWIG在Linux上生成C#
- SFINAE 在 VS10 中初始化阵列
- 在win7上使用MinGW 6.3.0构建提升1.63.0
- .CAB中的.EXE无法从Win7、IE8安装
- 是否有可能 - 使用设备而不是模拟器在Win7上开发Win Phone 7
- Win7 命名空间扩展确定 IShellItem 是文件还是文件夹
- Qt on Visual Studio 2010 and win7 64bit
- VS10/12中的Matlab共享C/C++库抛出了许多异常
- Win7中的Eclipse CDT(Juno):在PATH中找不到g++,iostream未解析和其他有趣的东西
- ASIO编译器错误(Win7 64位 VC11)
- 请推荐用于XP,Win7和Win8的2D动画C 工具
- 从QT,Win7下,如何知道哪种窗口样式用于显示
- 如何为C 设置跨平台(Win7中的NetBeans和Make Linux)
- 没有滚动条的 CPP Win7 控制台
- c++调试器在崩溃时停止在错误的地方,VS10 win7