首先android端捕獲bug,記錄下來,最后上傳服務(wù)器,java層有系統(tǒng)提供的方法,暫時按下不表,今天我們就來嘮嘮這個Native層的bug日志。
市面上有三種方式:
- coffeecatch(實(shí)現(xiàn)簡潔,改動容易 存在兼容性問題)
2.利用logcat獲取系統(tǒng)日志(利用安卓系統(tǒng)實(shí)現(xiàn) 需要在crash時啟動新進(jìn)程過濾logcat日志,不可靠)
3.breakpad(權(quán)威,跨平臺 代碼體量較大)
咱們著重來談一談breakpad,首先我滿懷著憧憬來到了google的官方網(wǎng)站,https://chromium.googlesource.com/breakpad/breakpad,使用git下載,然而。。。。得到的結(jié)果是:

what fxxk?Are you kidding me?我翻著墻呢,后來得知google好像把服務(wù)關(guān)了。。。。。。
這個時候,我發(fā)現(xiàn)了github上也有g(shù)oogle上傳的源代碼(欣喜若狂),https://github.com/google/breakpad,帶著滿腔的憧憬,我下載了源代碼,按照README上的要求,

打開了depot_tools的網(wǎng)站,如圖:

當(dāng)時我整個人又不好了,還是google的git服務(wù),這明擺著不能用。。。。。。然后我索性直接從剛才的github上下載了源代碼。
接著打開終端,cd到下載的目錄,執(zhí)行./configure指令,報(bào)了
A compiler with support for C++11 language features is required.
上網(wǎng)搜索了一下說是gcc的版本太老,需要升級至少是4.7,才支持c++11,此處又是上網(wǎng)一頓搜,終于解決。
然后執(zhí)行make指令,結(jié)果如下:

這個報(bào)錯真是日了狗了,竟然缺少文件,我一找對應(yīng)的文件夾,你猜猜怎么招,沒有,沒有,沒有,壓根就沒有l(wèi)ss文件夾,google,你逗我么?然后又是翻天覆地一通找,找到了這篇文章:http://blog.csdn.net/gsls200808/article/details/53195274?locationnum=6&fps=1,里面有這么一段:

總之就是下載一個文件,自己建立這個文件夾,把下載的文件放進(jìn)去,再執(zhí)行make指令,終于成功了。
其實(shí)編譯成功只是為了得到/breakpad-master/src/tools/linux/dump_syms文件夾下面的dump_syms文件和/breakpad-master/src/processor文件夾下面的minidump_dump文件,用它們來解析dmp文件。
后記:不知道google為什么這么坑,但是聽說印度工程師在google的比例越來越多,我好像明白了些神馬。。。。
最后,最最重要的送上修復(fù)之后的breakpad源碼(追加了linux_syscall_support.h文件)https://github.com/xfmax/FixedBreakPad,愉快的編譯去吧。
介紹一個很好的breakpad開源項(xiàng)目:https://github.com/yinyinnie/breakpad-for-android