VS2005通过指令地址查找其所在函数的方法

    技术2022-05-17  39

    方法一: 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 

     

     

     


    最新回复(0)