windbg 事後調試

來源:互聯網
上載者:User

dump檔案產生
如果需要使用Windbg產生dump檔案,可以使用.dump命令,該命令可以接/m或/f來產生minidump和fulldump,/m後面還可以接更多的命令控制,如/f控制產生記憶體dump,通常使用.dump /mf來產生dump,這樣的minidump比fulldump包含更多的調試資訊。

dump控制代碼資訊
在minidump中如果要把控制代碼資訊業dump出來(如控制代碼泄漏調試可能需要用到!handle命令),則需要加上/h參數,如.dump /mfh

事後調試器設定
事後調試器也就是即時調試器,比如一個進程在運行過程中發生崩潰,即時如果設定了事後調試器則會自動彈出是否進行調試的對話方塊。事後調試器註冊表路徑為

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

AeDebug下有兩個重要的索引值:Auto和Debugger。Auto表示當發生崩潰時是否顯示一個訊息框,0表示顯示,1表示不顯示(就是XX程式遇到錯誤需要關閉那個提示對話方塊);Debugger指定事後調試器是哪個調試器,通常的調試器都提供了GUI操作介面,我們通常不需要手動修改註冊表。

事後控制代碼泄漏調試
!htrace命令不能再在dump檔案中使用,所以我們需要在轉儲dump檔案時就需要通過!htrace命令把資訊輸出到日誌。組建記錄檔檔案可通過“.logopen filename”和“.logclose”來實現,然後結合記錄檔分析dump。

通過ADPlus產生dump檔案
切換到Windbg.exe所在目錄,命令列下以管理員身份運行“adplus.vbs { -hang | -crash } { -pn Process | -p PID } [-o Directory]”來產生dump檔案;-hang表示對已經掛起的程式產生dump檔案;-crash表示即時監控進程到其crash時產生dump檔案;-pn表示進程名字;-p表示pid;-o表示輸出目錄。
如果提示“The following requested processes are not executing – error in adplus.vbs”,請升級你的Windbg到最新版本。

dump檔案收集
現在主流的產品都有dump上報機制,如迅雷的安裝目錄下能夠找到XLBugReport.exe這樣的程式,有的程式在啟動時會先檢測BugReport程式是否完整,如果不完整則拒絕運行。

微軟性錯誤報表服務(WER)
除了自己收集dump上傳到伺服器外,還可以通過Windows自身來收集錯誤報表,這需要註冊微軟的錯誤報表服務(WER : Windows Error Reporting),過程比較麻煩,部分服務收費。

本部落格很少轉載他人文章,如未特別標明,均為原創,轉載請註明出處:
本文出自程式人生 >> Windbg事後調試
作者:代碼瘋子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.