GDB是否有内置的脚本机制,我应该编写一个期望脚本,还是有更好的解决方案?
我每次都会发送相同的命令序列,我会将每个命令的输出保存到文件中(最有可能使用GDB的内置日志记录机制,除非有人有更好的想法).
请帮忙!我真的很有智慧.我的程序是一个小的个人笔记管理器(google为"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的计算机上崩溃.我已将此选项设置为"未设置",并且错误消失了.唷!
非常感谢大家的帮助!!
c++ ×2
automation ×1
crash ×1
crash-dumps ×1
debugging ×1
expect ×1
gdb ×1
gdi ×1
scripting ×1
visual-c++ ×1
winapi ×1
windbg ×1