上一篇我們簡單的將了在Ubuntu上編譯chromium,android content_shell_apk的編譯,一切順利的就能生成apk。但是我們僅僅只是照搬了人家google開源的東西,作為一個(gè)開發(fā)者我們應(yīng)帶著探索的精神,都說它穩(wěn)定,速度快。它為什么這么快、穩(wěn)定? 帶著這一系列的問題,我們?nèi)W(xué)習(xí)理解它,去搞明白它的原理、架構(gòu)。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)六盤水免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
所以......
一切精妙的東西最終又歸結(jié)到源碼上,直到我們了解它熟悉它。怎么快速的的了解熟悉它呢?不外乎2點(diǎn)
1、大量的代碼閱讀
2、跟蹤調(diào)試代碼
今天我們就簡單的學(xué)習(xí)一下在Ubuntu下簡單調(diào)試chromium代碼
首先我們必須弄個(gè)Debug調(diào)試版本在Ubuntu上運(yùn)行調(diào)試。
編譯步驟:
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
編譯成功后會(huì)在src/out/Debug 下生成300個(gè)左右文件其中有chrome可執(zhí)行程序和庫。
調(diào)試:
調(diào)試多進(jìn)程最簡單的方法是用 attach pid
shell下:gdb src/out/Debug/chrome 啟動(dòng)到gdb輸入后用 r -no-sandbox (沙箱模式無法運(yùn)行,有待研究)
ps -ax 查看進(jìn)程id
或者用pstree -p|grep chrome
再新打開的shell輸入sudo gdb (有權(quán)限限制必須用root權(quán)限)
gdb啟動(dòng)后輸入attach pid 然后加上你要調(diào)試的斷點(diǎn)
我們調(diào)試RenderImage.cpp layout 函數(shù)在繪制進(jìn)程中調(diào)用堆棧
有了函數(shù)調(diào)用堆棧順序,你有不理解不清楚的地方加個(gè)斷點(diǎn),查看堆棧一切都這么簡單。
Debug調(diào)試只能起到輔助作用,學(xué)習(xí)還是需要我們理解框架、大量閱讀源碼。
如果大家對(duì)本系列文章有疑問,可以直接在公眾號(hào)留言,小編第一時(shí)間聯(lián)系原創(chuàng)作者幫你耐心解答。
技術(shù)人員都有自己的情懷,深陷其中而不被理解,歡迎關(guān)注個(gè)人微信公眾平臺(tái):程序員互動(dòng)聯(lián)盟(coder_online),一天一篇大牛的技術(shù)原創(chuàng),一個(gè)開發(fā)人員的家,來訴說自己的故事。
摘自:http://my.oschina.net/u/2335812/blog/398433