windbg加載符號表

0x00 前言

在使用windbg調試windows中的程序時會常常碰到一些系統的dll裏面的一些函數調用,有些函數是沒有具體函數名的,這對於調試很是不利,基於此,微軟針對windows也發佈了不少系統dll對應的符號表,這些符號表現在基本集成在了微軟的符號表服務器中,本文簡單講一下如何在windbg中加載符號表。shell

0x01 配置符號表

首先給一個最經常使用的方式,要作的工做基本就是先在本地指定的文件目錄搜索對應的符號表,若是找不到就鏈接遠程服務器下載,並保存在本地,方便下次使用,以下windows

.sympath srv*c:\Symbols*https://msdl.microsoft.com/download/symbols

這是對於沒有符號表的狀況,若是本地原本就有符號表的緩存,可是考慮到windows版本等問題,相同的符號表會不會覆蓋等狀況,建議使用下面的方法從遠程加載新的符號表爲本次調試使用緩存

.sympath c:\MyRegularSymbols;srv*c:\MyServerSymbols*https://msdl.microsoft.com/download/symbols

順利的話在加載完符號表之後須要從新載入模塊,命令以下:服務器

.reload

0x02 管理符號表

當調試的東西不少,符號表愈來愈大的時候,可使用agestore來管理不經常使用的符號表,下面舉幾個例子。函數

如下命令刪除C:\MyDir中2008年1月7日以前訪問的文件:debug

agestore c:\mydir -date=01-07-2008

如下命令將刪除目錄樹中從屬於C:\symbols\downstreamstore的全部文件,這些文件在30天內沒有訪問:調試

agestore c:\symbols\downstreamstore -days=30 -s

如下命令刪除從屬於C:\symbols\downstreamstore目錄樹中大於50,000字節的文件:code

agestore c:\symbols\downstreamstore -size=50000 -s

更多的內容能夠參考微軟官方的文檔文檔

0x03 一些問題

符號表設置之後無法加載,或加載失敗?get

首先檢查本地是否真的有網,沒問題的話,考慮科學的上網或許能夠加速下載,若是還不行,可能就是符號表服務器的問題,這類問題已經屢次了。
另外,在排查問題的時候能夠嘗試使用!sym noisy命令,實時輸出調試器加載符號表時候的信息。先運行!sym noisy再運行.reload

相關文章
相關標籤/搜索