如何簡單快速調試高大上的谷歌瀏覽器

上一篇我們簡單的將了在Ubuntu上編譯chromium,android content_shell_apk的編譯,一切順利的就能生成apk。但是我們僅僅只是照搬了人家google開源的東西,作爲一個開發者我們應帶着探索的精神,都說它穩定,速度快。它爲什麼這麼快、穩定? 帶着這一系列的問題,我們去學習理解它,去搞明白它的原理、架構。

所以...... 

一切精妙的東西最終又歸結到源碼上,直到我們瞭解它熟悉它。怎麼快速的的瞭解熟悉它呢?不外乎2點

1、大量的代碼閱讀

2、跟蹤調試代碼

今天我們就簡單的學習一下在Ubuntu下簡單調試chromium代碼

首先我們必須弄個Debug調試版本在Ubuntu上運行調試。

編譯步驟:

1、build/install-build-deps.sh

2、build/gyp_chromium-Dflag1=value1-Dflag2=value2

3、export GYP_DEFINES="flag1=value1 flag2=value2"

4、ninja-v-Cout/Debug chrome

編譯成功後會在src/out/Debug 下生成300個左右文件其中有chrome可執行程序和庫。

調試:

調試多進程最簡單的方法是用 attach pid 

shell下:gdb src/out/Debug/chrome 啓動到gdb輸入後用 r -no-sandbox (沙箱模式無法運行,有待研究)

ps -ax 查看進程id


或者用pstree -p|grep chrome


再新打開的shell輸入sudo gdb (有權限限制必須用root權限)

gdb啓動後輸入attach pid 然後加上你要調試的斷點

我們調試RenderImage.cpp  layout 函數在繪製進程中調用堆棧

有了函數調用堆棧順序,你有不理解不清楚的地方加個斷點,查看堆棧一切都這麼簡單。

Debug調試只能起到輔助作用,學習還是需要我們理解框架、大量閱讀源碼。


如果大家對本系列文章有疑問,可以直接在公衆號留言,小編第一時間聯繫原創作者幫你耐心解答。

技術人員都有自己的情懷,深陷其中而不被理解,歡迎關注個人微信公衆平臺:程序員互動聯盟(coder_online),一個開發人員的家,來訴說自己的故事。

27225517_4bEO.jpg


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