从内存地址获取到源代码中的函数
Getting from memory address to function in source
使用 Process Explorer 工具,我知道我的进程在一个特殊函数处挂起
myexe.exe+0x1b5773
如果我有可用的 pdb,是否有办法获得准确的功能?
或者必须有此信息的 .map 文件?
我知道我可以使用调试器附加到 exe,但如果问题发生在非开发人员机器上,这现在总是一个选项..
进程浏览器
这可以在 Options|Configure symbols...
下的 Process Explorer 中完成:
- 选择
dbghelp.dll
设置符号路径
SRV*c:\debug\symbols*http://msdl.microsoft.com/download/symbols;c:\mysymbols
但这对您的客户来说可能不是很方便。
一种更安全且通常对用户更友好的方式:
- 右键单击进程
- 选择
Create dump | Create Minidump...
- Select一个文件名
- 让客户将转储发送给您,以便您对其进行分析。
有了转储,您就不会做错任何事情,甚至数周后,它仍然可以被分析,如果 Process Explorer 仅显示片刻的瞬态数据,则您不能这样做。
WinDbg
您可以在 WinDbg 中这样做:
- 打开有问题的可执行文件,但作为转储文件
.symfix
.sympath+ <your PDB path>
.reload
ln myexe.exe+0x1b5773
使用 Process Explorer 工具,我知道我的进程在一个特殊函数处挂起 myexe.exe+0x1b5773
如果我有可用的 pdb,是否有办法获得准确的功能? 或者必须有此信息的 .map 文件?
我知道我可以使用调试器附加到 exe,但如果问题发生在非开发人员机器上,这现在总是一个选项..
进程浏览器
这可以在 Options|Configure symbols...
下的 Process Explorer 中完成:
- 选择
dbghelp.dll
设置符号路径
SRV*c:\debug\symbols*http://msdl.microsoft.com/download/symbols;c:\mysymbols
但这对您的客户来说可能不是很方便。
一种更安全且通常对用户更友好的方式:
- 右键单击进程
- 选择
Create dump | Create Minidump...
- Select一个文件名
- 让客户将转储发送给您,以便您对其进行分析。
有了转储,您就不会做错任何事情,甚至数周后,它仍然可以被分析,如果 Process Explorer 仅显示片刻的瞬态数据,则您不能这样做。
WinDbg
您可以在 WinDbg 中这样做:
- 打开有问题的可执行文件,但作为转储文件
.symfix
.sympath+ <your PDB path>
.reload
ln myexe.exe+0x1b5773