vscode + gdbserver 实现交叉调试

4 篇文章 0 订阅
3 篇文章 1 订阅

0 前言

鉴于以下的痛点,尝试了一下gdbserver配合vscode,发现十分好用。

  1. 应用程序比较大,依赖的库也很多,设备上没有足够的存储空间。
  2. 设备没有预留显示接口。
  3. 在终端里面放断点调试效率低。

我这里使用的client是i386架构,server是aarch64。网上有很多教程都是同一架构的,直接参考会报错,踩了一些坑。。。

1 安装依赖

sudo apt-get install gdb gdb-multiarch -y

验证

server
gdbserver :端口号 应用程序
client
gdb

(gfb)target remote (server的IP):端口号

2 配置vscode

直接放launch.json,这里面的配置官网的参考上都有。不赘述。

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "调试",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/应用程序的路径",//PC上交叉编译生成的可执行文件
            // "preLaunchTask": "build",
            "args": [
            ],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "filterStderr": true,
            "filterStdout": false,
            "MIMode": "gdb",
            "logging": {
                "engineLogging": false,
                "trace": false,
                "traceResponse": false,
                "programOutput": true,
                "moduleLoad": true
            },
            "setupCommands": [
                {
                    "description": "disable pipe",
                    "text": "handle SIGPIPE nostop",
                    "ignoreFailures": true
                },
                {
                    "description": "Set remote ARM architecture",
                    "text": "set architecture aarch64",
                    "ignoreFailures": false
                }
            ],
            "miDebuggerPath": "/usr/bin/gdb-multiarch",
            "miDebuggerServerAddress": "(server的IP):端口号"
        }
    ]
}

workspaceFolder目录下创建gdb配置文件.gdbinit,这样就可以加载gdb的设置。.gdbinit里面的设置也可以通过setupCommands进行配置,效果是一样的。但是.gdbinit在gdb中是通用的,换其他工具也可以使用,个人建议还是用.gdbinit

.gdbinit中需要指明server的架构

set architecture aarch64

3 注意

架构不一样要使用gdb-multiarch替代gdb

获取server的architecture

在server上运行gdb,然后使用’‘show architecture’'查看。

(gdb)show architecture
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在VSCode中进行交叉编译和远程调试,你需要安装一些扩展和做一些配置。下面是一些步骤供你参考: 1. 安装VSCode:首先,确保你已在本地计算机上安装了VSCode编辑器。 2. 安装适当的扩展:在VSCode中,你需要安装以下扩展: - Remote Development:这个扩展可以帮助你远程连接到目标设备进行开发和调试。 - C/C++:这个扩展提供了用于C/C++开发的工具链和功能。 3. 配置SSH连接:将目标设备的SSH连接配置到VSCode中。你可以在VSCode的命令面板中使用"Remote-SSH: Connect to Host"命令来配置SSH连接。 4. 创建工作区:在VSCode中创建一个新的工作区,并将你的源代码文件添加到工作区。 5. 配置交叉编译器:在工作区中,创建一个名为`.vscode`的文件夹,并在该文件夹中创建一个名为`c_cpp_properties.json`的文件。在这个文件中,可以指定交叉编译器的路径和其他相关设置。例如,对于ARM架构,你可以指定`"compilerPath": "/usr/bin/arm-linux-gnueabihf-gcc"`。 6. 配置调试器:在工作区中,创建一个名为`.vscode`的文件夹,并在该文件夹中创建一个名为`launch.json`的文件。在这个文件中,你可以配置远程调试器的设置。例如,对于GDB调试器,你可以指定以下配置: ```json { "version": "0.2.0", "configurations": [ { "name": "Remote GDB", "type": "cppdbg", "request": "launch", "program": "/path/to/your/executable", "cwd": "${workspaceFolder}", "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "targetArchitecture": "arm" } ] } ``` 在这个配置中,你需要将`program`指定为你要在目标设备上运行的可执行文件的路径。 7. 开始远程调试:连接到目标设备后,你可以通过单击VSCode底部的调试按钮,然后选择你在`launch.json`中配置的调试器来启动远程调试。 这些步骤是一般的指导,具体的设置可能因你所使用的目标设备和编译器而有所不同。请根据你的需求和环境进行相应的配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值