在windows2003 enterprise x64 sp2上运行的32位进程转储

时间:2012-09-24 09:19:48

标签: windows 32bit-64bit dump

我尝试用Windbg分析这个转储。但它无法显示x86 callstack。 符号路径被标记为:

srv*D:\dev_head\win_symbols*

某些命令结果:

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.

符号文件wow64.pdb,wow64win.pdb可以正确下载/加载,但只有wow64cpu.pdb才能下载。这个问题会导致分析失败吗?

2 个答案:

答案 0 :(得分: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

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

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

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

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

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

答案 1 :(得分:0)

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

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

.reload /f [name] /i

其他开发者报告了类似的问题。 请参阅“Unable to get the symbols file for wow64cpu.dll from 64-bit Windows 2003 Server SP2

  • 您是否运行x86版本的WinDBG?

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

另见

How to read the small memory dump files that Windows creates for debugging