如何使用LLDB 在VSCode调试C++代码

1,764 阅读1分钟

LLDB VSCode调试

第一步.拷贝lldb-server到android系统

adb push ${NDK_PATH}/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/9.0.9/lib/linux/arm/lldb-server /data/local/tmp/lldb-server

第二步.进入到安卓设备,打开lldb-server

adb shell
cd /data/lcoal/tmp
./lldb-server p --server --listen unix-abstract:///data/local/tmp/debug.sock

第三步.安装vscode插件

安装CodeLLDB

第四步.配置launch.json文件

在configurations字段中添加

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Remote launch",
            "type": "lldb",
            "request": "launch",
            "MIMode": "lldb",
            "stopAtEntry": false,                                                       //暂停在程序入口处
            "program": "/xxxxx/build/BusinessLayer/runBusiness",                      //要调试的程序路径
            "initCommands": [
                "platform select remote-android",
                "platform connect unix-abstract-connect:///data/local/tmp/debug.sock",  //路径与lldbserver中指定的一致即可
                "settings set target.inherit-env false", 
            ]
        }
    ]
}

gdb VSCode调试

(注:gdb和gdbserver要配对使用,相同工具中的gdb和gdbserver)

第一步: 拷贝ndk中的gdbserver到设备

adb push ${NDK_PATH}/prebuilt/android-arm/gdbserver /data/local/tmp

第二步: 设备上启动gdbserver

./gdbserver :2233 <program> //program为自己要运行的程序

第三步: vscode配置launch.json文件

{
    "name": "remote:socol_app",
    "type": "cppdbg",
    "request": "launch",           
    // 1. program 配置可执行程序在主机上的路径 Host_exe_path
    "program": "/xxxxx/build/BusinessLayer/runBusiness",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    // 2. Host 上找到交叉编译工具联中的 gdb 路径
    "miDebuggerPath": "/Users/xxxxx/Library/Android/sdk/android-ndk-r21e/prebuilt/darwin-x86_64/bin/gdb",
    // 3. Target 的IP地址以及 gdb server监听端口,2233是举例说明,可以是尚未使用的任意值,保证Host配置和Target上统一即可
    "miDebuggerServerAddress": "192.168.42.129:2233",
    "setupCommands": [
        {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
        }
    ]
}