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

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

因此......  程序員

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

1、大量的代碼閱讀 shell

2、跟蹤調試代碼 微信

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

首先咱們必須弄個Debug調試版本在Ubuntu上運行調試。 微信公衆平臺

編譯步驟: 框架

一、build/install-build-deps.sh 函數

二、build/gyp_chromium-Dflag1=value1-Dflag2=value2 學習

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

四、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),一個開發人員的家,來訴說本身的故事。

相關文章
相關標籤/搜索