2017-06-02 79 views
1

我能夠調試幾乎所有大型組織生成的故障轉儲,因爲所有符號和相關可執行文件都存儲在中央符號存儲位置中。直到我需要將崩潰轉儲及其所有相關的pdb和可執行文件發送到公司外部以調試第三方庫時,纔會有問題。使用故障轉儲從符號服務器中提取PDB和可執行文件

上次我這樣做時,我不得不進行大量的試驗和錯誤來收集符號存儲中需要的文件,這些文件大部分是機器組織的,不是人類可讀的。如果我可以打開故障轉儲並使Visual Studio將所需的所有文件從符號存儲區中提取出來並保存到另一個文件夾中,我就可以將其發送出去進行分析。

知道這可以做什麼?

回答

0

我不知道Visual Studio的解決方案。但是,這個問題可以通過微軟免費提供的Debugging Tools for Windows的WinDbg或SymChk來解決。

據我所知,符號服務器只存儲PDB而不存儲可執行文件,因此以下指令僅適用於PDB。

WinDbg有一個命令,!SaveAllModules,它可能用於保存轉儲文件中存在的所有DLL和可執行文件。我沒有太多的經驗。

步驟在WinDbg中

在一臺具有Internet連接,並連接到你的公司的符號服務器

  1. 公開賽在WinDbg中
  2. 崩潰轉儲
  3. Set up the symbols,例如添加您的公司符號服務器和Microsoft符號服務器。對於緩存位置,請選擇一個空目錄。
  4. 運行的命令.reload /fld*

這將下載所有可用的符號爲定義的目錄。

的步驟Symchk的

在一臺機器與Internet連接,並連接到你的公司的符號服務器

  1. 在命令行提示符下,運行

    symchk /id <dumpfile>.dmp /s srv*x:\symbols\*http://msdl.microsoft.com/download/symbols /od 
    

    • /id用於「輸入轉儲」
    • /s定義符號路徑。確保你的語法正確。不要忘了,包括你的公司符號服務器
    • /od是「輸出範圍」(詳細模式),以顯示任何問題