方法一: map文件
1、记录地址。例如崩溃的位置是0x0047de39;
2、配置生成Map文件。属性页---->链接器---->调试---->生成映射文件选“是(/MAP)”---->映射文件名选编辑,然后点击右下角的宏,选择$(ProjectName),添加后缀.map,即$(ProjectName).map。
3、在map文件中找到距离指令地址最近的地址。例如:
0002:00008df0 ?test2@@YAHHH@Z 0047ddf0 f gtest_LogFileAnalysisTool.obj
0002:00008e20 ?test@@YAXXZ 0047de20 f gtest_LogFileAnalysisTool.obj
0002:00008e50 ?TestBody@test_backtrace_havefun_Test@@EAEXXZ 0047de50 f gtest_LogFileAnalysisTool.obj
方法二: 反汇编
在反汇编文件中查找指令地址。例如:
void test()
{
0047DE20 push ebp
0047DE21 mov ebp,esp
......
s /= 0;
0047DE33 mov eax,dword ptr [s]
0047DE36 cdq
0047DE37 xor ecx,ecx
0047DE39 idiv eax,ecx //在这!
0047DE3B mov dword ptr [s],eax
s++;
0047DE3E mov edx,dword ptr [s]
0047DE41 add edx,1
0047DE44 mov dword ptr [s],edx
}
0047DE47 mov esp,ebp
0047DE49 pop ebp
0047DE4A ret