Windbg 調試 managed code 常用命令

本文主要記錄一些我們在debug 託管代碼dumpfile的時候常用命令。

1. lm 命令

在windbg打開dumpfile之後,我們可以利用lm命令去列出當前加載的dll,如果想詳細查看某個dll的信息,比如aaa.dll,那麼可以利用命令lmv maaa去顯示aaa的詳細信息,包括版本信息等等。

2. k(b)命令

可以利用該命令列出當前線程的callstack,想列出所有線程的call stack信息,可以~*k,或者~*kb

3. 利用SOS.dll的擴展命令

3.1 !clrstack 列出當前線程的託管程序的call stack信息,如果包含參數 -p(!clrstack -p),則列出的信息包含函數參數,如果-a(!clrstack -a),則列出的信息包含函數參數以及局部變量的信息。

3.2  !dumpdomain,如果沒有參數則列出所有AppDomains中的dll信息,當然可以指定domain的地址,從而顯示某個domain中dll的信息。

3.3  !dumpstackobjects(!dso),可以列出當前stack中的所有manged對象,通過該命令可以查出是否有exception 對象或者想找的對象,然後再去利用得到的地址去查看該對象的所有屬性,

3.4 !dumpobj,可以列出manged對象的Field,從而幫助開發人員判斷問題。

3.5 !dumpheap,用來查看垃圾回收堆裏面的統計信息。

當然如果要查具體命令的解釋,可以用!help +命令,比如!help dumpobj,可以查看dumpobj的解釋。!開始的爲擴展命令,如果要查看元命令則領用.help + 元命令的格式,比如.help attach ,可以查看attach的解釋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章