Ubuntu18.04上使用LLDB調試Chromium Android C++代碼。


###動機###
Chromium Android源代碼龐大且復雜。
在調試器LLDB下能幫助我們更好的理解代碼流程。
介紹使用LLDB調試器調試android上chromium的C++代碼。

[1] 編譯Chromium時,記得修改編譯選項:-g -O0, 使得編譯器做更少的優化,便於調試。
使用attach方式調試(因此進程在啟動過程中暫時不能調試)。
查看進程PID:adb shell ps -A | grep chrome
啟動lldb-server:adb shell /system/bin/lldb-server platform --server --listen unix-abstract:///data/local/tmp/debug.sock
確保手機目錄/system/bin/存在lldb-server。lldb-server可以從Android SDK目錄中找到。

[2] ubuntu18.04 安裝LLDB。
apt install lldb
2.1啟動lldb: lldb
2.2列出lldb支持平台:platform list
2.3選擇LLDB使用平台:platform select remote-android
2.4連接lldb-server: platform connect unix-abstract-connect:///data/local/tmp/debug.sock
2.5列舉手機進程: platform process list
2.6ATTACH PID: attach 16767 #PID=16767 就是要調試的進程PID
2.7查看: platform status

[3] 在LLDB中,設置源碼路徑:因為調試時源碼路徑與編譯時源碼路徑可能不相同,因此需要設置。否則LLDB將無法設置斷點和找到源代碼。
settings set target.source-map /home/huangguanyuan/chromium_android/src /home/huangguanyuan/chromium_android/src
settings show
settings list

[4] 在LLDB中,加載符號表。
target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libnet.cr.so
target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libchrome.cr.so
target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libcontent.cr.so
target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libbase.cr.so

[5] 在LLDB中,查找符號、設置斷點、查看斷點、啟用/禁用斷點、查看call stack、單步調試、查看變量。
詳細請參考:http://lldb.llvm.org/lldb-gdb.html
image lookup --name TCPSocketPosix::ReadIfReady
breakpoint set -f tcp_socket_posix.cc -l 413
breakpoint disable 5
breakpoint enable 5
bt
c
n
print
frame variable

###完畢###


免責聲明!

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



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