我正在尝试使用VSCode调试Android开源项目中的原生cpp代码。
我成功在Android 5上的远程目标上启动gdbserver,并在我的电脑上使用gdbclient成功调试它。
我想将gdbclient启动到IDE中,以便通过IHM等方式轻松调试......
我正在尝试在VSCode中配置launch.json,但我一直使用json配置阻止。
我想要调试程序的命令是:
adb shell gdbserver :5039 /system/bin/myProgram
我的调试命令:
gdbclient 5039
这是远程调试配置的一个示例:
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "attach",
"program": "???",
"MIMode": "gdb",
"preLaunchTask": "init_gdbclient",
"miDebuggerPath": "gdbclient",
"miDebuggerServerAddress": "localhost:5039",
}
preLaunchTask gdbclient用于从aosp脚本初始化“gdbclient”命令。
我的问题是:
为什么VSCode需要我想在远程调试时调试的程序的路径?
我只期望ip / port配置。我认为这对客户端来说已经足够了,对吗?
答案 0 :(得分:0)
构建计算机上的gdb程序(或其他扮演该角色的程序)需要对通过gdbserver进行代理调试的目标程序的未剥离版本的可见性,以便对函数进行有意义的符号查找正在调试的程序中的结构和结构。优选地,构建机器副本不仅未被剥离,而且还包括调试信息。
通常应该可以在没有这个的情况下启动调试会话,但是你会涉及非符号化的十六进制地址和数据,因此找出你正在看的内容会非常具有挑战性。
您可能会发现在命令行上运行gdb可以提供信息,并了解IDE / GUI外观下的工作原理。