Windbg除錯異常

2021-06-21 10:59:44 字數 590 閱讀 4966

用windbg分析包含異常資訊的dump檔案時,往往當前棧幀已不正確,可通過如下步驟找回:

1、!teb,找到stackbase和stacklimit

2、通過.cxr命令將異常上下文恢復到相關暫存器

如何找到異常上下文的位址呢?

方法一:dds/dps/dqs [stacklimit]~[stackbase]找到rtldispatchexception

函式的第二個引數,即為異常上下文位址

方法二:s -d [stacklimit] l1000 1003f即可搜到異常上下文所在位置,該位址即異常上下文位址,1003f為異常上下文的contextflags

字段。3、在.cxr後各暫存器的值已經是出錯時的值了,通過kb即可定位錯誤。

注:在vista

和windows 2008

中,系統改良了

error reporting

功能。程式崩潰後,系統會在

error reporting

的時候從核心直接掛起出錯的程序。這個時候如果用偵錯程式檢查,會看到出錯程序就停在發生問題的指令上,不再需要在偵錯程式中手動恢復

exception context。

windbg除錯技巧

1 64位機器上執行32位程式得到的dump,需要先進行轉換 load wow64exts sw2 載入符號表 系統符號表 srv d mylocalsymbols 吵雜模式符號匹配 有時候 沒大改,但重編了導致之前的pdb沒有了 符號載入,吵雜模式 強制匹配符號 symopt 0x40 sym n...

windbg雙機除錯

1 雙機除錯設定 環境 主機 win10 虛擬機器 win xp sp3 windbg preview pipe管道鏈結 我機子新增了環境變數居然沒用,所以每次都得設定路徑 symfix c mysymbols sym noisy reload2 符號包無法reload 解決方案 看雪大佬說通過設定...

windbg 除錯技巧

技巧一 在載入名解除安裝的時候下斷點 1.載入某個dll 的時候下斷點的windbg 命令 sxe ld dll name 然後按f5,進行重新整理,再使用lmf 檢視裝載的dll名稱。2.解除安裝某個dll 的時候下斷點的windbg命令 sxe ud dll name 比如 sxe ld win...