【W(wǎng)indows】使用WinDbg分析minidump崩潰文件

兩種類型的符號(hào)文件

符號(hào)文件有兩種類型:

  • full symbol:包含public symbols和private symbols
  • stripped symbol:只包含public symbols,vc鏈接設(shè)置選項(xiàng)中生成stripped類型symbol的產(chǎn)出,只有全局變量和函數(shù),可以視為是每個(gè)obj導(dǎo)出的變量和函數(shù),可以供其他obj調(diào)用的,其他本地變量這些都不包含

調(diào)試如何查找符號(hào)文件路徑

vs生成的debug版二進(jìn)制文件會(huì)包含文件路徑和文件名信息,同時(shí)把符號(hào)文件和二進(jìn)制文件放在同個(gè)目錄下。這樣,只要符號(hào)文件不變,那么調(diào)試器就不需要設(shè)置符號(hào)文件路徑也能自動(dòng)定位到對(duì)應(yīng)的符號(hào)文件。
符號(hào)文件帶有日期和時(shí)間戳,所以通過這個(gè)調(diào)試器來區(qū)別不同版本的符號(hào)文件,而不會(huì)發(fā)生混淆

WinDbg的使用步驟

  1. 打開需要分析的崩潰文件


    打開崩潰文件
  2. 設(shè)置符號(hào)文件查找路徑
    執(zhí)行命令.sympath \\192.168.1.1\Symbols\MyProject\1.1.1.1;cache*D:\Symbols;srv*
    這里設(shè)置了兩個(gè)路徑,一個(gè)是我們自己的二進(jìn)制文件對(duì)應(yīng)的符號(hào)文件所在的路徑:\192.168.1.1\Symbols\MyProject\1.1.1.1
    另外一個(gè)則是符號(hào)文件的緩存路徑D:\Symbols,主要用于緩存Windows符號(hào)文件
    這兩個(gè)路徑可以按自己的實(shí)際情況進(jìn)行修改,此外,還可以在setting里進(jìn)行設(shè)置,這樣就不用每次都設(shè)置一遍這個(gè)路徑,會(huì)自動(dòng)重用

    通過Settings來設(shè)置符號(hào)文件查找路徑

  3. 分析崩潰文件
    輸入命令 !analyze -v進(jìn)行崩潰的分析,一般這個(gè)命令的分析結(jié)果里面有對(duì)應(yīng)的崩潰所在的函數(shù)堆棧顯示,還有對(duì)應(yīng)的崩潰在哪一行的定位,大部分情況下就已經(jīng)足夠我們找到崩潰原因了。

    崩潰堆棧

    崩潰所對(duì)應(yīng)源碼位置

WinDbg的一些常用命令說明

WinDbg的命令如果是.開頭的表示這個(gè)命令是一個(gè)配置命令,如果是!開頭的則表示這是一個(gè)擴(kuò)展命令

符號(hào)文件路徑設(shè)置命令
  • .sympath:顯示當(dāng)前符號(hào)文件查找路徑
  • .sympath cache*<路徑>:設(shè)置緩存路徑,不指定具體路徑則使用默認(rèn)的
  • .sympath cache*<路徑>;srv*:設(shè)置符號(hào)文件下載路徑,不指定則用默認(rèn)的(https://msdl.microsoft.com/download/symbols
  • .sympath <路徑>;cache*;srv*:設(shè)置多個(gè)查找路徑組合
  • .reload:如果重新設(shè)置了路徑,那么用這個(gè)命令重新進(jìn)行符號(hào)文件的查找
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 100,694評(píng)論 9 468
  • layout: wikititle: Windbg調(diào)試筆記categories: Debugdescription...
    超哥__閱讀 19,981評(píng)論 0 17
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,251評(píng)論 2 33
  • 常見測(cè)試用例的設(shè)計(jì)方法 1、為什么要做好測(cè)試用例設(shè)計(jì)? (1)提現(xiàn)測(cè)試人員的專業(yè)能力 (2)關(guān)系著最根本的測(cè)試質(zhì)量...
    小井景閱讀 820評(píng)論 0 0

友情鏈接更多精彩內(nèi)容