准备:
1. C/C++ extension
2. andorid ndk
主要步骤:
1.VSCode 安装C/C++ extension
在VS CODE插件市场中查找并安装
2. 下载android ndk或者直接在Android Studio中下载,在其中中找到gdbserver
将gdbserver push到目标设备中
adb push ./Android/Sdk/ndk/21.1.6352462/prebuilt/android-arm64/gdbserver /data/user/cnn/debug adb chmod 777 /data/user/cnn/debug/gdbserver |
3. 设置VSCode配置文件
- 点击Run-> Add Configuration...
-
选择C/C++ (gdb) Launch 作为默认配置。
-
编写launch.json
{ "version" : "0.2.0" , "configurations" : [ { "name" : "RemoteGDB" , //调试任务名 "type" : "cppdbg" , "request" : "launch" , "cwd" : "${workspaceRoot}" , "program" : "${workspaceRoot}/obj/local/arm64v8a/test" , //目标调试程序(带符号) "additionalSOLibSearchPath" : "${workspaceRoot}/obj/local/arm64v8a" , //目标调试库(带符号) "miDebuggerServerAddress" : "localhost:5555" , //设置本地通信端口 "setupCommands" : [ { "description" : "Enable pretty-printing for gdb" , "text" : "-enable-pretty-printing" , "ignoreFailures" : true , }, { "text" : "set sysroot ${workspaceRoot}/obj/local/arm64-v8a" , "description" : "set sysroot path" }, ], "windows" : { "miDebuggerPath" : "C:/Users/11101476/AppData/Local/Android/Sdk/ndk/21.1.6352462/prebuilt/windows-x86_64/bin/gdb.exe" , //本机GDB位置 "MIMode" : "gdb" } } ] } |
4. 执行操作
使用ndk在本地或服务器端编译可执行文件和so, gcc开启 -O0会更加方便调试
将测试可执行文件和so push到手机中,(注意我们无需把带符号表的.so库push到手机,那样会很慢)
adb push .\libs\arm64-v8a\test /data/user/cnn/debug/test adb push .\libs\arm64-v8a\libvcap.so / system /lib64/ adb shell chmod 777 /data/user/cnn/debug/test //开启权限 |
使用adb运行gdbserver, 在目标设备开启调试线程,并设置端口
adb shell data/user/cnn/debug/gdbserver --remote-debug :5555 /data/user/cnn/debug/test |
ADB开启端口转发
adb forward tcp:5555 tcp:5555 |
在VSCode内按F5开启调试 监听目标端口
执行操作可以按需打包成脚本文件,这样只需要无脑F5就可以直接调试了
参考文档:
https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/android-debugging-with-visual-studio-code-r4820/
https://zhuanlan.zhihu.com/p/222416969