一、利用工具,比如CrashFinder。先来测试一段简单除0代码出错。
#include <iostream>
int crash(int x, int y)
{
return x / y;
}
int main()
{
int ret = crash(80, 0);
std::cout << ret << std::endl;
return 0;
}
当前代码我用vs2008,release模式编译一下。直接单独运行一下exe,得到下面的错误。位置为 0x00401678。
二、我们把CrashFinder放到Release目录下。如下图所示。(注意,必须保证vs生成有.pdb文件)
打开CrashFinder,选择new,然后选exe进去,输入401678,点find。结果如下图所示。
程序准确显示具体地方所调用的出错函数。然后可以进一步仔细检查。
参考资料:
CrashFinder下载地址:http://download.csdn.net/detail/hayyoung/5342557