环境:Windows XP,Visual C++ 2005/2008,原始WinApi。
以下是关于此“Heisenbug”的确定内容:
1)崩溃仅发生在Release版本中。
2)只要我删除所有与GDI相关的内容,崩溃就会消失。
3)BoundChecker没有抱怨。
4)编写日志表明,崩溃发生在本地int变量的声明上!那怎么可能?内存损坏?
非常感谢您的任何想法!
更新:我已经成功在“有问题”的PC上调试了该应用程序。结果如下:
“CintaNotes.exe中的0x0044a26a处出现未处理的异常:0xC000001D:非法指令。”
代码中断在:
0044A26A cvtsi2sd xmm1,dword ptr [esp+14h]
因此,问题似乎在于“代码生成/启用增强指令集”编译器选项。它被设置为“/arch:SSE2”,并在不支持SSE2的机器上崩溃。我将此选项设置为“未设置”,错误就消失了。谢天谢地!
非常感谢您所有人的帮助!