簡體   English   中英

如何擺脫與符號文件有關的警告/錯誤消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM