请帮忙!我真的束手无策。我的程序是一个小小的个人笔记管理器(谷歌搜索“cintanotes”)。在某些计算机上(当然我不拥有它们),它在启动后因未处理的异常而崩溃。这些计算机没有什么特别之处,只是它们往往具有 AMD CPU。
环境: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 的机器上崩溃。我已将此选项设置为“未设置”,并且该错误消失了。呸!
非常感谢大家的帮助!!