2012-09-24 73 views
0

我嘗試使用Windbg分析此轉儲。但它無法顯示x86調用堆棧。 符號路徑的ConfigEd爲:在windows2003 enterprise x64 sp2上運行的32位進程轉儲

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只是不能下載。這個問題是否導致分析失敗?

回答

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

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

+0

「無法從64位Windows Server 2003的SP2的wow64cpu.dll符號文件」 我已經注意到這個問題。 – solid

+0

我下載了WindowsServer2003-KB933548-v1-x64-symbols-NRL-ENU,發現裏面有wow64win.pdb,但沒有wow64cpu.pdb。微軟錯誤? @ _ @我使用x86版本的WinDBG ... – solid

相關問題