2010-01-04 37 views
2

有沒有從WinDbg的方式,而不使用DbgEng API顯示所有加載模塊的符號服務器路徑(即PdbSig70 and PdbAge)?WinDbg,顯示已加載模塊的符號服務器路徑(即使符號未加載)?

我知道

lml 

做這行,其符號已經加載的模塊。我想知道這些路徑的未加載以便診斷問題。任何人都知道這是可能的,而無需使用DbgEng API?

編輯:

我也知道,你可以使用

!sym noisy 

以獲取有關符號裝入錯誤消息。雖然這確實有幫助的輸出是交錯的,我想,是不是簡單明瞭,如「LML」

回答

2

SYM嘈雜和均安靜可以開啓符號加載額外的輸出等輸出,即:!

!sym noisy 
.reload <dll> 
X <some symbol in that DLL to cause a load> 
!sym quiet 

當調試器嘗試加載PDB時,您將看到它嘗試加載的每條路徑以及PDB的未找到或被拒絕。

+0

是,但此得到以迂迴的方式的信息,並需要很多解析以提取所需的信息,特別是當被加載大量模塊組成。 – 2010-01-04 21:40:49

1

據我所知,windbg沒有現成的解決方案。 你的選擇將是寫一個漂亮的腳本或擴展取決於你最適合的地方。

這是在windbg作爲一個腳本是非常可行的。你所追求的信息在PE調試目錄中有描述。

這是一個link的C++示例代碼,詳細介紹如何提取有用的信息(如您的案例中的符號文件的名稱)。適應它windbg腳本應該是沒有汗水。

這是另一個有用的pointer與大量的自動windbg信息。具體來說,它討論了將參數傳遞給windbg腳本的方法(這對您的情況也很有用,可以從加載的模塊迭代循環中調用通用的調試信息提取代碼)。

+0

感謝您的鏈接,我將不得不學習代碼,但一目瞭然它看起來很有用 – 2010-01-06 17:16:57