【发布时间】:2010-09-13 00:36:39
【问题描述】:
请帮忙!我真的束手无策。 我的程序是一个小小的个人笔记管理器(谷歌为“cintanotes”)。 在某些计算机上(当然我不拥有它们),它在启动后立即崩溃并出现未处理的异常。 这些计算机没有什么特别之处,只是它们往往具有 AMD CPU。
环境:Windows XP、Visual C++ 2005/2008、原始 WinApi。
这是关于这个“黑森虫”的肯定:
1) 崩溃仅发生在 Release 版本中。
2) 一旦我删除所有与 GDI 相关的内容,崩溃就会消失。
3) BoundChecker 没有任何抱怨。
4) 编写日志显示崩溃发生在声明局部 int 变量时!怎么可能?内存损坏?
任何想法将不胜感激!
更新:我已经设法在“故障”PC 上调试了该应用程序。结果:
“CintaNotes.exe 中 0x0044a26a 处未处理的异常:0xC000001D:非法指令。”
代码中断
0044A26A cvtsi2sd xmm1,dword ptr [esp+14h]
看来问题出在“代码生成/启用增强指令集”编译器选项中。它被设置为“/arch:SSE2”并且在不支持 SSE2 的机器上崩溃。我已将此选项设置为“未设置”,并且该错误消失了。呼!
非常感谢大家的帮助!!
【问题讨论】:
-
看起来 Goldenmean 最接近答案。
标签: c++ debugging winapi crash gdi