天天看點

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檔案夾,發現下面多了好多檔案----都是工程檔案。

Chromium 調試其他的程式

如果你已經安裝了vs2013,那麼直接輕按兩下打開chrome.sln即可。打開後在解決方案資料總管可以看到所有的解決方案資訊。

Chromium 調試其他的程式

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

Chromium 調試其他的程式

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

Chromium 調試其他的程式

點選左邊的調試選項,設定“指令”,直接将檔案位址設定為chrome.exe的絕對路徑位址

Chromium 調試其他的程式

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

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程序啟動時彈出視窗讓你及時附加到程序上。

繼續閱讀