0

I try analyse this dump with Windbg. But it can't show x86 callstack. symbol path configed as:

srv*D:\dev_head\win_symbols*

Some command result:

0:000> !teb
Wow64 TEB32 at 000000007efdd000
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: wow64!_TEB32                                  ***
***                                                                   ***
*************************************************************************
error InitTypeRead( wow64!_TEB32 )...
Wow64 TEB at 000000007efdb000
ExceptionList:        000000007efdd000
StackBase:            000000000016fcfc
StackLimit:           000000000016b000
SubSystemTib:         0000000000000000
FiberData:            0000000000001e00
ArbitraryUserPointer: 0000000000230bf0
Self:                 000000007efdb000
EnvironmentPointer:   0000000000000000
ClientId:             00000000000007e0 . 0000000000000ecc
RpcHandle:            0000000000000000
Tls Storage:          0000000000000000
PEB Address:          000000007efdf000
LastErrorValue:       0
LastStatusValue:      0
Count Owned Locks:    0
HardErrorMode:        0


0:000> !load wow64exts
0:000> !sw
The current thread doesn't have an x86 context.

symbols file wow64.pdb, wow64win.pdb can download/load correctly, but only wow64cpu.pdb just can not download. Is this problem lead to analyse failure?

4

2 回答 2

0

我假设你有一个完整的转储而不是一个小的内存转储文件。WOW64CPU 程序数据库应与符号包库一起下载。

使用以下标志强制加载特定的 pdb:(但请注意,由于不匹配,调试结果可能在多个点上是错误的)

.reload /f [name] /i

其他开发人员报告了类似的问题。请参阅“无法从 64 位 Windows 2003 Server SP2 获取 wow64cpu.dll 的符号文件

  • 你运行 x86 版本的 WinDBG 吗?

您还可以考虑在 VirtualBox 或 VMWare 中运行另一个 Windows 版本。

另见

如何读取 Windows 为调试而创建的小内存转储文件

于 2012-09-24T09:44:54.020 回答
0

通常,您需要同时配置 Microsoft 的符号服务器和下游(本地)缓存位置。

在本地网络中使用 Samba/CIFS 服务器的示例(您必须能够对其进行写入):

symsrv*symsrv.dll*\\sambasrv\symbols*http://msdl.microsoft.com/download/symbols

...或者改为磁盘位置:

symsrv*symsrv.dll*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols

.symfix在 WinDbg 中使用将 MS 符号服务器设置为默认值,然后.reload重新加载所有符号信息。

通常配置一个名为的全局环境变量_NT_SYMBOL_PATH

setx /s _NT_SYMBOL_PATH=symsrv*symsrv.dll*\\sambasrv\symbols*http://msdl.microsoft.com/download/symbols

(以上是批处理/NT脚本语法...咨询setx /?

-y如果您像我一样使用各种不同的命令行创建快捷方式(例如调试 VM),还请查看 WinDbg 的命令行开关。

于 2012-09-24T09:44:36.173 回答