Linux環境下編譯Google BreakPad的步驟


Linux環境下編譯Google BreakPad的步驟

# 1、使用git clone下載breakpad源代碼
git clone https://github.com/google/breakpad.git
# 2、下載linux_syscall_support.h系統調用頭文件
git clone https://chromium.googlesource.com/linux-syscall-support
# 3、在breakpad/src/third_party下創建lss目錄並拷貝到lss目錄下
cd breakpad/src/third_party
mkdir lss
cp linux_syscall_support.h ../breakpad/src/third_party/lss
# 4、編譯breakpad源代碼,可以參考github網站:https://github.com/google/breakpad
cd src
./configure
make
# 5、編譯結果產物
src/libbreakpad.a	//.a靜態庫
src/processor/minidump_stackwalk	//工具:從.sym符號文件和.dmp minudump文件中提取出完整信息
src/processor/minidump_dump
src/tools/linux/dump_syms/dump_syms	//工具:提取so庫的.sym符號文件
src/tools/linux/md2core/minidump-2-core
等等
# 6、解析minudump文件
1) 使用./dump_syms工具提取so的符號信息
	./dump_syms    .so > libbreadpaddemo.so.sym
	
2) 給libbreadpaddemo.so.sym生成特定的目錄結構
	head -n1 libbreadpaddemo.so.sym //使用head -n1命令查看libbreadpaddemo.so.sym文件第一行內容
		//輸出:MODULE Linux arm64 4958HDKYUH2607A34686D5D8594UYHF libbreadpaddemo.so
	mkdir -p ./symbol/libbreadpaddemo.so/4958HDKYUH2607A34686D5D8594UYHF
		//創建子目錄libbreadpaddemo.so以及子目錄4958HDKYUH2607A34686D5D8594UYHF,所以需要執行上面的head -n1獲取內容
	mv libbreadpaddemo.so.sym ./symbol/libbreadpaddemoe.so/4958HDKYUH2607A34686D5D8594UYHF0/
		//將符號信息libbreadpaddemo.so.sym拷貝到4958HDKYUH2607A34686D5D8594UYHF子目錄下,最后結構如下:
	├── symbol
	│   └── libbreadpaddemo.so
	│       └── 4958HDKYUH2607A34686D5D8594UYHF
	│           └── libbreadpaddemo.so.sym
	
3) 調用minidump_stackwalk命令,將dmp文件和sym文件合成可讀的crash.txt
	./minidump_stackwalk 4567c979-cecf-65a6-76fghytr-gteft03b.dmp ./symbol > crash.txt
	
4) crash.txt大致內容如下:
	Thread 32 (crashed)
 	0  libbreakpad-core.so + 0xe880
    	...
 	1  libbreakpad-core.so + 0xe86c
    	...
 	2  libbreakpad-core.so + 0xe8cc
    	...
# 7、可以使用Android Studio自帶的minidump_stackwalk解析minidump文件的使用步驟
	1) minidump_stackwalk.exe路徑在androidStudio\bin\lldb\bin下
	   執行minidump_stackwalk 4567c979-cecf-65a6-76fghytr-gteft03b.dmpp > crash.txt 得到文本內容的崩潰地址
	2) aarch64-linux-android-addr2line.exe路徑在toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin目錄下
	   執行aarch64-linux-android-addr2line -f -C -e libbreakpad-core.so 0xe880 0xe86c 0xe8cc 還原崩潰信息
arm-linux-androideabi-addr2line 使用方法介紹:
arm-linux-androideabi-addr2line -C -f -e ${SOPATH} ${Address}
-C -f           //打印錯誤行數所在的函數名稱
-e                //打印錯誤地址的對應路徑及行數
${SOPATH}         //so庫路徑 
${Address}        //需要轉換的堆棧錯誤信息地址,可以添加多個,但是中間要用空格隔開
參考鏈接https://www.jianshu.com/p/1e15640fae7a


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM