1. gdbserver 位置:$ndk_dir/prebuilt/android-arm/gdbserver
2. gdb 位置:$ndk_dir/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gdb.exe
中間的路徑根據自己情況更改
需要注意的是gdbserver和gdb的版本要匹配,否則會出錯
待除錯的程式為$prj_dir/test_prj
1.在目標機上建立目錄/data/test
adb push $ndk_dir/prebuilt/
android
-arm/gdbserver /data/test/
adb push $prj_dir/test_prj /data/test/
2.在目標機賦予執行許可權
chmod +x ./test_prj
chmod +x gdbserver
3.在目標機上啟動gdbserver
./gdbserver :1234 test_prj [param]
注意gdbserver後面有空格,冒號與1234之間沒有空格
如果test_prj需要引數,後面可以加上引數
執行成功則顯示
process test_prj created: pid = 16225
listening on port 1234
4.在宿主機(windows)上執行arm-
linux
-androideabi-gdb.exe
執行成功則顯示gdb版本號、版權資訊等,並有gdb命令提示符
5.在gdb命令提示符後輸入命令
(gdb)shell adb forward tcp:1234 tcp:1234
該命令表示通過adb對映tcp埠1234,命令中前面的是local的埠,後面的是remote的埠
可能會顯示
adb server is out of date. killing...
* daemon started successfully *
(gdb) target remote localhost:1234
該命令表示與遠端程式建立鏈結
執行成功則顯示
remote debugging using localhost:1234
cannot access memory at address 0x0
0x40011384 in ?? ()
同時目標機上顯示
remote debugging form host 127.0.0.1
至此,說明gdb與gdbserver連線成功,可以進行除錯了
6.除錯
(gdb)file $prj_dir/test_prj
該命令用於讀取除錯符號
顯示 are you sure you want to change the file?(y or n)
輸入y
(gdb) b main
該命令用於在main函式處加入斷電
(gdb) c
該命令執行程式,並在斷點處停下
(gdb) n
next
(gdb) p var
顯示變數
Android平台硬體除錯之Camera篇
之前一段時間有幸在高通android平台上除錯2款camera sensor,一款是ov的5m yuv sensor,支援jpeg out,同時也支援af,除錯比較比較簡單,因為別的專案已經在使用了,只是把相關的驅動移植過來就好 另一款是samsung的一款比較新的3m yuv ff sensor,...
Android 高通平台Camera除錯
1.af除錯部分 1 通過屬性控制 af log控制 setprop persist.vendor.camera.loginfomask 0x8000000 af info level log setprop persist.vendor.camera.lo erbosemask 0x8000000...
高通Android平台硬體除錯之Camera篇
之前一段時間有幸在高通android平台上除錯2款camera sensor,一款是ov的5m yuv sensor,支援jpeg out,同時也支援af,除錯比較比較簡單,因為別的專案已經在使用了,只是把相關的驅動移植過來就好 另一款是samsung的一款比較新的3m yuv ff sensor,...