使用VSCode远程调试aosp

时间:2018-02-01 14:07:21

标签: android debugging gdb native android-source

我正在尝试使用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配置。我认为这对客户端来说已经足够了,对吗?

1 个答案:

答案 0 :(得分:0)

构建计算机上的gdb程序(或其他扮演该角色的程序)需要对通过gdbserver进行代理调试的目标程序的未剥离版本的可见性,以便对函数进行有意义的符号查找正在调试的程序中的结构和结构。优选地,构建机器副本不仅未被剥离,而且还包括调试信息。

通常应该可以在没有这个的情况下启动调试会话,但是你会涉及非符号化的十六进制地址和数据,因此找出你正在看的内容会非常具有挑战性。

您可能会发现在命令行上运行gdb可以提供信息,并了解IDE / GUI外观下的工作原理。