您现在的位置是:首页 >学无止境 >VSCode +gdb+gdbserver远程调试arm开发板网站首页学无止境

VSCode +gdb+gdbserver远程调试arm开发板

不良小人 2024-06-15 00:01:02
简介VSCode +gdb+gdbserver远程调试arm开发板

一、下载编译器

  1. 从ARM官网下载gcc-arm编译器,编译器中自带gdb和gdbserver,可以省去自己编译

注:gdb是电脑端程序,gdbserver是arm开发板程序

arm官网链接:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

下载arm-gcc版本10.3在开发板上运行提示lib版本错误,所以下载了版本10.2

也可以直接把编译器文件夹下的库复制到开发板上。

如下图链接可以跳转下载旧版本arm-gcc

注:根据自己开发板内核架构下载对应的编译器,推荐下载和编译开发板系统接近的版本

如下是本次下载的arm-gcc

https://developer.arm.com/downloads/-/gnu-a

  1. 解压,根据自己压缩包格式自行百度

xz -dk gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar.xz 
 
tar -xvf gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar 
  1. 把gdbserver复制到开发板目录下

注:可以放/usr/bin目录下或者和程序放一个目录下。

gdbserver位置:直接把解压的文件夹打开搜索。

opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/bin

  1. 修改权限(如果可以执行跳过此步)

直接复制到开发板没有执行权限,要修改一下

chmod 777 gdbserver

二、配置VSCode

  1. VSCode安装插件

  1. 配置launch.json文件

主要修改下面几个参数:

  • "program": "可执行文件路劲(电脑端)",

arm-gcc编译生成在电脑上的程序路劲。

  • "miDebuggerPath": "arm-gdb路劲",

  • "miDebuggerServerAddress": "arm开发板ip:gdbserver监听端口"

例如开发板执行./gdbserver :1234 test,gdbserver监听端口写1234

  • "stopAtEntry": false,

false:按F5调试程序直接运行

true:停在main函数入口处

  • "preLaunchTask": "start debug",此句可以注释掉

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "test",
            "type": "cppdbg",
            "request": "launch",
            "program": "out\test",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "start debug",
            "miDebuggerPath": "/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gdb",
            "miDebuggerServerAddress": "192.168.0.167:1234"
        }
    ]
}

三、启动调试

测试代码

#include <stdio.h>
int main()
{
    int abc = 0;
    for (int i = 0; i < 10; i++)
    {
        abc++;
        printf("%x
",abc);
    }
    printf("%x
",abc);
    printf("11111111111111");
    printf("11111111111111");
    printf("11111111111111");
    return 1;
}
  1. 编译代码

要加-g

arm-xxx-gcc -g main.c -o out/test
  1. 把编译好的test复制到开发板,如下启动开发板程序

./gdbserver :监听端口号 程序

./gdbserver  :1234  test

运行后如下显示

  1. 按F5启动VSCode调试,点击“仍要调试”

注:"preLaunchTask": "start debug",此句注释掉就没有下面弹窗提示

  1. 调试界面

四、arm-gdb运行出错

  1. gdb在电脑端运行报错,没有 libncursesw.so.5

执行ldd arm-xxx-gdb,查看依赖文件

系统缺少 libncursesw.so.5、libtinfo.so.5、libpython2.7.so.10

  • 在文件夹下/usr/lib/x86_64-linux-gnu把新版本6软链接为5

  • 安装libpython2.7

ln -s libncursesw.so.6.3 libncursesw.so.5
ln -s libtinfo.so.6.3 libtinfo.so.5

apt-get install libpython2.7

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。