一、下载编译器
- 从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
 
 
   - 解压,根据自己压缩包格式自行百度 
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 
- 把gdbserver复制到开发板目录下 
注:可以放/usr/bin目录下或者和程序放一个目录下。
gdbserver位置:直接把解压的文件夹打开搜索。
opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/bin
 
 
   - 修改权限(如果可以执行跳过此步) 
直接复制到开发板没有执行权限,要修改一下
chmod 777 gdbserver 
 
   二、配置VSCode
- VSCode安装插件 
 
 
   - 配置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\n",abc);
    }
    printf("%x\n",abc);
    printf("11111111111111");
    printf("11111111111111");
    printf("11111111111111");
    return 1;
}- 编译代码 
要加-g
arm-xxx-gcc -g main.c -o out/test- 把编译好的test复制到开发板,如下启动开发板程序 
./gdbserver :监听端口号 程序
./gdbserver  :1234  test运行后如下显示
 
 
   - 按F5启动VSCode调试,点击“仍要调试” 
注:"preLaunchTask": "start debug",此句注释掉就没有下面弹窗提示
 
 
   - 调试界面 
 
 
    
 
   四、arm-gdb运行出错
- 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


















