SymInitialize和SymFromAddr方法是否有任何方法可以自动从自定义符号存储中加载符号。我正在尝试使用SymFromAddr()将地址解析为可读的函数名称。如果我有本地存储的给定模块的符号似乎工作正常,但是我希望它能自动从给予SymInitialize的路径下载它们,就像WinDbg那样。 我这样称呼SymInitialize:
SymInitialize(procHandle, "SRV*c:\\symbols*http://msdl.microsoft.com/download/symbols;http://mycustomstore.com/symbols", TRUE);
SymFromAddr返回错误487"尝试访问无效地址。"因为它从未尝试过下载,因此无法找到符号。
有没有办法强制下载它们?
答案 0 :(得分:4)
事实证明,dbghelp.dll需要symsrv.dll才能加载符号。它很难找到它,所以需要一些帮助。 我已经使用dbghelp日志记录来帮助找出问题https://msdn.microsoft.com/en-us/library/ms680687.aspx
答案 1 :(得分:-1)
如果要使用HTTP符号存储,请使用
进行定义.sympath SRV*c:\mysymbols*http://example.com/symbols
要添加Microsoft符号路径,请使用
.symfix+ c:\microsoftsymbols
查看WinDbg符号路径现在为您提供:
0:000> .sympath
srv*c:\mysymbols*http://example.com/symbols;SRV*c:\microsoftsymbols*http://msdl.microsoft.com/download/symbols
告诉我们您的符号路径不正确,因为它没有第二个SRV*...*
部分,只有http://...
。如果您将代码中的符号路径复制/粘贴到WinDbg,它可能也无法正常工作。