从内存地址到源代码中的函数

Getting from memory address to function in source

本文关键字:函数 源代码 内存 地址      更新时间:2023-10-16

使用Process Explorer工具,我知道我的进程挂在一个特殊的函数处myexe.exe + 0 x1b5773

如果我有可用的pdb,是否有一种方法可以得到确切的函数?或者必须有一个.map文件来存储这些信息?

我知道我可以用调试器连接到exe,但如果问题发生在非开发人员机器上,这现在总是一个选项。

进程资源管理器

这可以在进程资源管理器本身Options|Configure symbols...下完成:

  1. 选择dbghelp.dll
  2. 设置符号路径

    SRV*c:debugsymbols*http://msdl.microsoft.com/download/symbols;c:mysymbols
    

但这可能对你的客户不太方便。

一个更安全,通常更用户友好的方式:

  1. 右键单击进程
  2. 选择Create dump | Create Minidump...
  3. 选择文件名
  4. 让客户将转储文件发送给您,以便您进行分析。

使用转储,您不会做任何错误的事情,甚至在几周后,它仍然可以被分析,如果Process Explorer只是暂时显示瞬时数据,您就不能。

WinDbg

你可以在WinDbg中这样做:

  1. 打开可执行文件,但是作为转储文件
  2. .symfix
  3. .sympath+ <your PDB path>
  4. .reload
  5. ln myexe.exe+0x1b5773