chromium瀏覽器開發系列第四篇:如何調試最新chromium


接二連三的事情,時間比較緊張,但是還是沒有把這個系列的文章丟掉,因為這也是對自己知識的總結吧。提倡大家多寫寫,以后再看的時候會有種莫名的小激動。

上周寫的是chromium的目錄結構,好像大家不太感興趣,在我看來這部分很重要。開頭有鏈接地址,大家想看可以再看看。

 

    從源碼下載到編譯,到目錄結構,今天終於到了重要的環節,調試。

    在windows上,調試工具都是使用微軟自家的產品:Visual Studio或者winDBG(windebug)。Chromium也是與時俱進,現在主要使用Visual Studio2013。我今天主要講使用vs2013調試源碼。

 

    我在編譯代碼那一章(http://my.oschina.net/ghost045/blog/395973)的時候曾經講過生成源碼工程的東東,如下:

set GYP_MSVS_VERSION=2013

set GYP_GENERATORS=msvs-ninja,ninja

set GYP_DEFINES=component=shared_library

set PATH=C:\depot_tools\python276_bin\;C:\depot_tools\;

python.exe src/build/gyp_chromiumsrc/chrome/chrome.gyp >>log.txt 2>&1

 

    運行成功后,打開src\chrome文件夾,發現下面多了好多文件----都是工程文件。

 

 

    如果你已經安裝了vs2013,那么直接雙擊打開chrome.sln即可。打開后在解決方案資源管理器可以看到所有的解決方案信息。

 

 

    點擊展開上圖中的chrome文件夾,選擇chrome解決方案,右鍵設置為啟動項目,然后直接F5(調試->開始調試)就可以啟動程序調試了。

 

    如果想以其他的解決方案為啟動項目,可以直接右鍵設置就行。不過需要增加下面一步設置:右鍵打開想要設置的啟動項目的屬性

    點擊左邊的調試選項,設置“命令”,直接將文件地址設置為chrome.exe的絕對路徑地址

 

這樣就可以直接選擇從不同的解決方案啟動調試了。

 

       chromium是多進程架構,我們啟動后只能調試主進程,其他的renderer進程和插件擴展進程是單獨的,不能被直接調試。下面提供幾種方法可以調試其他進程:

1.單進程模式

    最簡單的方法是將chromium運行在單進程模式。這樣你會看到整個程序的狀態,沒有額外的工作(雖然它仍會有很多的線程)。使用單進程模式,需要在在Chrome項目屬性調試頁中的命令行參數添加--single-process。這種方法並不完美,因為有些問題不會出現在這個模式。

默認情況下,Visual Studio選擇Browser/browser.exe為啟動項目,需要用戶手動選擇chrome解決方案右鍵設置為啟動項目。

2.啟動chrome的調試log

    在命令行參數添加--enable-logging --v=1,運行期間的log將會保存在文件中,debug版本的放在out\Debug下的chrome_debug.log中,release版本的放在C:\Users\賬戶名\AppData\Local\Chromium\User Data目錄中。

3.使用vs2013自帶的“附加到進程”選項調試

    直接在vs2013中調試時,可以使用附加到進程的功能,直接開啟調試后,點擊Tools > Attach to Process附加你需要調試的進程即可。

    如果你想調試的renderer進程的內容發生在進程啟動時,那么可以在命令行參數增加--renderer-startup-dialog和--no-sandbox這兩個必須同時使用,才能在renderer進程啟動時彈出窗口讓你及時附加到進程上。

 

    另外還有很多有用的參數可以設置,使用這些參數可以讓你隨心所欲的實現自己想要調試的內容,chromium團隊也在一直努力讓調試變得更簡單實用。其他的命令可以查看文件:content_switches.cc,里面標識了各種參數以及含義。

調試的東西很多,今天就先講這么多,講多了也難以消化,之后我還會給大家帶來更細致的講解,包括windebug調試。

 

如果大家有什么疑問或者有什么問題想要和我探討,希望大家關注微信公眾平台:程序員互動聯盟(coder_online)

這里有你想要的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM