![](/img/trans.png)
[英]Getting symbol related error despite pointing to Microsoft symbol server
[英]How to get rid of symbol file related warning/error messages
我正在使用Windbg
調試轉儲文件,並定期收到警告/錯誤消息,如下所示:
*** WARNING: Unable to verify checksum for icuuc58.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for icuuc58.dll -
為了避免這些情況,我已經嘗試着用以下方法進行整個處理:
!sym prompts off
!sym quiet
但是警告/錯誤消息不斷到達。
第一次回復后進行編輯 (在第二次編輯中得到確認)
我已經使用.outmask-6
和.outmask-206
做過幾次嘗試,但是它們都或多或少都失敗了。 這意味着什么:
.reload -f => a lot of error/warning messages => normal behaviour
.outmask-6 or .outmask-206
.reload -f => no error/warning messages => Ok
.outmask-6 or .outmask-206
.reload -f => no error/warning messages => Ok
<execution of the whole script> => a lot of error/warning messages => NOK
我相信有些命令會禁用.outmask
命令。 您可以確認嗎?如果可以,是否有類似以下的命令:
.outmask-206(global) (which applies for the whole Windbg session)
就symsrv.ini
文件而言:我的計算機上沒有此文件,老實說,我寧願不要搜索每個符號加載可能會導致問題的模塊。 我只希望避免提到上述警告/錯誤消息。
在對該問題有更多見解之后進行編輯
我還沒有提到的一件事是PYKD
用法:我正在研究heap_stat,這是一個基於PYKD的腳本,用於執行內存分析,並且我相信這里的問題,如您在以下摘錄中所看到的:
腳本源代碼:
dbgCommand(".outmask-206")
...
dprintln("1")
type_info = typeInfo(class_name)
dprintln("2")
腳本輸出:
1
*** WARNING: Unable to verify checksum for icuuc58.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for icuuc58.dll -
在我看來,這意味着PYKD
typeInfo()
對象聲明就是該聲明,從而禁用了.outmask()
Windbg
命令。
@PYKD開發人員:您可以確認嗎?如果是,為此添加一個PYKD
問題? (我沒有在PYKD
問題主頁上看到任何與.outmask
相關的問題)
您可以使用.outmask-6抑制錯誤/警告消息
或使用.outmask-206來抑制結尾的symsrv摘要和警告消息
0:049> .outmask-6
Client 02C95358 mask is 3F1
0:049> .reload /f
Reloading current modules
................................................................
............................................................
使用此方法時要小心,一些重要的錯誤消息也可能會被抑制
如果您的意思是您需要阻止symsrv擊中ms符號服務器並浪費時間
使用[exclusions]部分設置symsrv.ini
cd windbg installation path
echo [exclusions] >> symsrv.ini
echo ic* >> symsrv.ini
外罩是全局設置
PYKD設置自己的輸出掩碼:
client->GetOutputMask(&oldMask);
client->SetOutputMask(DEBUG_OUTPUT_NORMAL|DEBUG_OUTPUT_ERROR|DEBUG_OUTPUT_WARNING|DEBUG_OUTPUT_DEBUGGEE );
到目前為止,我的問題有兩個答案:
Windbg
命令輸出 PYKD
命令輸出 我無法使用常規的Windbg
遮罩,因為正在使用PYKD
命令。
我不能使用PYKD
屏蔽,因為我只是啟動(成千上萬個) PYKD
命令,這些命令每次都打開和關閉一個單獨的PYKD
會話,並配置PYKD
屏蔽會大大降低我的應用程序速度。
因此,我決定采用另一種方法:我將確保PYKD
輸出消息的格式是如此具體(它將始終包含TAB字符),以至於不使用錯誤消息,而僅決定使用PYKD
消息(包含TAB字符的消息)。
我已經測試了這種方法,並且可以確認它工作正常。
謝謝您的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.