从内存中获取地址以在源代码中运行

与工具进程资源pipe理器我知道我的进程挂在一个特殊的functionmyexe.exe + 0x1b5773

是否有一种方法来获得确切的function,如果我有pdb可用? 或者必须有这个信息的.map文件?

我知道我可以附加到一个debugging器的exe,但现在总是一个选项,如果问题发生在一个不开发的机器上..

Process Explorer

这可以在Process Explorer中的Options|Configure symbols...

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

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

但这对您的客户可能不是很方便。

更安全,通常更友好的方式:

  1. 右键单击该过程
  2. 选择Create dump | Create Minidump... 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