chromium瀏覽器開發系列第五篇:Debugging with WinDBG

640?tp=webp&wxfrom=5

     Windbg相信windows開發的人都知道,有些人用的溜兒溜兒的,有個crash,直接拿這個工具一分析,就定位出來了。非常好用。以前有個同事,做sdk開發的,會各種命令。來北京後,還去過微軟面試(不過當時是做外包,掙得也不少),問的問題就包括會不會用windbg定位問題。當時就會幾個簡單的命令,最後還是沒面上(不堪回首)。

     使用windbg調試windows下的程序,只要有符號文件,問題定位分分鐘的事。下面主要講一下使用windbg調試chromium。有些是從官網上對翻過來的,如果大家看不明白,可以直接加我們的公衆號:程序員互動聯盟(coder_online)來進行互動。

     Windbg是一個強大的免費工具,它比起VisualStudio的調試器還要強大,能夠看到當前的內存棧等信息,但是也比那個難用(和Linux下的gdb差不多)。大家可以去微軟官網下載最新版本安裝,官網有兩個版本:32位和64位。我們使用32位來調試chromium。

初始化

1.設置符號路徑

     打開windbg,文件菜單->符號文件路徑(快捷鍵ctrl+s)

     這裏假設c:\code\symbols這個是你符號文件存儲的位置(這個可以自己隨意設置,但是必須保證有足夠的空間,找個空盤符有個10G左右的,新建一個文件夾,以後就別管了),設置符號路徑如下:

SRV*c:\code\symbols*http://msdl.microsoft.com/download/symbols;SRV*c:\code\symbols*https://chromium-browser-symsrv.commondatastorage.googleapis.com

640?wxfmt=png&tp=webp&wxfrom=5


2.在視圖窗口中可以選擇顯示一些窗口

112914_T4H8_2335664.png


3.使用文件下的一些功能去加載想要調試的進程或者可執行文件

112926_sbFm_2335664.png


4.設置源碼路徑

     如果想直接定位到源碼位置,可以設置源碼路徑:文件->源碼路徑,最好是本地代碼,直接指定chromium網絡地址不太現實:

112939_bHZ7_2335664.png


     使用windbg調試chromium比較重要的一點是,它可以調試子進程。一個比較簡單的方法就是在使用“Open Executable”打開窗口時,選中下面的選項,如圖所示:

113118_Tp2d_2335664.png

也可以通過attach來調試運行的進程,使用detach來解除調試進程。


#重要說明

(1) windbg命令分爲標準命令,元命令和擴展命令。

   標準命令提供最基本的調試功能,不區分大小寫。如:bp g  dt  dv  k等

   元命令提供標準命令沒有提供的功能,也內建在調試引擎中,以.開頭。如.sympath  .reload等

   擴展命令用於擴展某一方面的調試功能,實現在動態加載的擴展模塊中,以!開頭。如!analyze等

(2) 進入調試狀態時,直接回車可重複執行上一條命令;按上下方向鍵可以瀏覽和選擇以前輸入過的命令

(3) 神奇的Tab鍵,進行命令補全;ESC清除當前命令輸入框中的文本

(4) 使用;作爲分隔符,可以在同一行輸入多條命令

(5) 下圖紅色框中的“0:047”。【0爲當前調試會話的進程號;047爲調試會話的線程號】

(6) 當命令提示符顯示*BUSY*時,即使命令輸入框可以輸入命令,但輸入的命令不會立即被執行,要等windbg空閒時才能執行。

   可使用Ctrl + Break來終止一個長時間未完成的命令。

113130_mrGA_2335664.png

   如果大家想更深入瞭解windbg的知識,可以去官方網站學習。另外推薦一本學習的書籍《軟件調試》。


如果大家有什麼想法或者疑問,請關注我們的公衆號,及時溝通,這裏有各種大牛幫你解決問題。

歡迎關注微信公衆平臺:程序員互動聯盟(coder_online),一個開發人員的家,來訴說自己的故事

27225517_4bEO.jpg

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