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

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

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

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

初始化 windows

1.設置符號路徑 api

     打開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 微信公衆平臺


2.在視圖窗口中能夠選擇顯示一些窗口 工具


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


4.設置源碼路徑 網站

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


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

也能夠經過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來終止一個長時間未完成的命令。

   若是你們想更深刻了解windbg的知識,能夠去官方網站學習。另外推薦一本學習的書籍《軟件調試》。


若是你們有什麼想法或者疑問,請關注咱們的公衆號,及時溝通,這裏有各類大牛幫你解決問題。

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

27225517_4bEO.jpg

轉載請註明公衆號名稱

相關文章
相關標籤/搜索