C++ - 是否有任何命令像 addr2line 在 Windows 上

C++ - Is there any command likes addr2line on Windows

本文关键字:addr2line Windows 命令 是否 任何 C++      更新时间:2023-10-16

如果Windows应用程序在没有pdb的情况下在用户设备上崩溃,它将产生如下调用堆栈:

TestGame  0x000000003f790000 + 1c0c9f1 
TestGame  0x000000003f790000 + 4b8a97c 
TestGame  0x000000003f790000 + 4b8a4f1 
TestGame  0x000000003f790000 + 3608413 
TestGame  0x000000003f790000 + 3630e94 
TestGame  0x000000003f790000 + 413a33e 
TestGame  0x000000003f790000 + 4151d46 
TestGame  0x000000003f790000 + 149c9e6 
TestGame  0x000000003f790000 + 149cc90 
TestGame  0x000000003f790000 + 419cddd 
TestGame  0x000000003f790000 + 41ab698 
TestGame  0x000000003f790000 + 3a909df 
TestGame  0x000000003f790000 + 3a999ff 
TestGame  0x000000003f790000 + 38fd369 
TestGame  0x000000003f790000 + 338688  
TestGame  0x000000003f790000 + 34827c  
TestGame  0x000000003f790000 + 3482da  
TestGame  0x000000003f790000 + 355e16  
TestGame  0x000000003f790000 + 5169f2e 
kernel32      0x0000000076ec0000 + 159cd   
ntdll         0x0000000076fe0000 + 5383d   

但我有.开发设备上的 PDB 文件,所以我想要地址源行通过 ..PDB。我知道一个命令addr2line可以在 Linux 上通过 .so 文件寻址行,我想知道是否有像 Windows 上addr2line这样的命令。

Open TestGame.exe 在windbg中,你需要完全相同的二进制文件。中断执行。加载该版本的.pdb。运行以下命令:

ln TestGame.exe+0x1c0c9f1

我碰巧找到了这个:https://drmemory.org/page_symquery.html如果您没有获得模块基址,请尝试 VS' dumpbin.exe/headers xxx.exe 来获取图像基。