在網上看到了有人用gdb調試Android中的WebKit,今天試了好一會兒,確實可行。
以下是步驟:
1. 進入android系統源碼根目錄,然後執行
source build/envsetup.sh
2. 啟動模擬器,並打開浏覽器
emulator
3. 在終端中執行
adb forward tcp:5039 tcp:5039
4. 打開另一個終端,執行
adb shell ps
找到 com.android.browser 進程號
5. 執行
adb shell gdbserver :5039 --attach pid
pid為 com.android.browser 進行號
正常反饋:
Attached; pid = ****
Listening on port 5039
6. 回到第一個終端,導出環境變量,adb, arm-eabi-gdb等的路徑,在執行gdbclient報錯時,可將相應的命令 的路徑導出
export PATH=/android/out/host/linux-x86/sdk/android-sdk_eng.suyong_linux-x86/platform-tools:$PATH
export PATH=/android/prebuilt/./prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/:$PATH
export PATH=/android/prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin:$PATH
現在執行命令
gdbclient
成功的話就會加載一系列的符號表。試了一下設置斷點,成功地在系統本地碼中斷了下來。下面要做的就 是熟悉GDB調試命令了。
7. 在gdb中設置斷點
b FrameLoaderClientAndroid.cpp:888
8. 在模擬中用浏覽器打開任一網頁,就會進入斷點了。