首先android端捕獲bug,記錄下來,最后上傳服務器,java層有系統提供的方法,暫時按下不表,今天我們就來嘮嘮這個Native層的bug日志。
市面上有三種方式:
- coffeecatch(實現簡潔,改動容易 存在兼容性問題)
2.利用logcat獲取系統日志(利用安卓系統實現 需要在crash時啟動新進程過濾logcat日志,不可靠)
3.breakpad(權威,跨平臺 代碼體量較大)
咱們著重來談一談breakpad,首先我滿懷著憧憬來到了google的官方網站,https://chromium.googlesource.com/breakpad/breakpad,使用git下載,然而。。。。得到的結果是:
what fxxk?Are you kidding me?我翻著墻呢,后來得知google好像把服務關了。。。。。。
這個時候,我發現了github上也有google上傳的源代碼(欣喜若狂),https://github.com/google/breakpad,帶著滿腔的憧憬,我下載了源代碼,按照README上的要求,
打開了depot_tools的網站,如圖:
當時我整個人又不好了,還是google的git服務,這明擺著不能用。。。。。。然后我索性直接從剛才的github上下載了源代碼。
接著打開終端,cd到下載的目錄,執行./configure指令,報了
A compiler with support for C++11 language features is required.
上網搜索了一下說是gcc的版本太老,需要升級至少是4.7,才支持c++11,此處又是上網一頓搜,終于解決。
然后執行make指令,結果如下:
這個報錯真是日了狗了,竟然缺少文件,我一找對應的文件夾,你猜猜怎么招,沒有,沒有,沒有,壓根就沒有lss文件夾,google,你逗我么?然后又是翻天覆地一通找,找到了這篇文章:http://blog.csdn.net/gsls200808/article/details/53195274?locationnum=6&fps=1,里面有這么一段:
總之就是下載一個文件,自己建立這個文件夾,把下載的文件放進去,再執行make指令,終于成功了。
其實編譯成功只是為了得到/breakpad-master/src/tools/linux/dump_syms文件夾下面的dump_syms文件和/breakpad-master/src/processor文件夾下面的minidump_dump文件,用它們來解析dmp文件。
后記:不知道google為什么這么坑,但是聽說印度工程師在google的比例越來越多,我好像明白了些神馬。。。。
最后,最最重要的送上修復之后的breakpad源碼(追加了linux_syscall_support.h文件)https://github.com/xfmax/FixedBreakPad,愉快的編譯去吧。
介紹一個很好的breakpad開源項目:https://github.com/yinyinnie/breakpad-for-android