当前位置: 首页 > article >正文

基于VSCODE+GDB+GDBSERVER远程单步调试设备篇(可视化界面)

  • 目录

    说明

    配置方法

    1)VSCODE必备插件

    2)配置launch.json文件,用于GDB调试

    调试步骤

    ​​​​​​目标板运行程序

    1)已启动程序,通过attach方式进入调试

    2)通过gdbserver启动时加载程序(程序路径根据实际情况填写)

    vscode上启动gdb

       1)连接远程开发板,点击爬虫

    2)启动gdb调试

    3)调试快捷键


    说明

        在嵌入式研发过程中,尤其是Linux环境下开发工程师,我相信很多都经历过通过GDB去单步调试程序,但通过命令方式时总会遇到过多的gdb命令、查看堆栈调度、内存等不方便情况(当然如果你是GDB指令集大神可忽略该文章)。由此看来如果有很好的IDE或者较好的插件集成GDB调试方式通过图形化的方式进行单步调试可提高研发效率。我所用过的有:eclipse与vscode等均是比较好用的,本章节重点介绍vscode通过插件方式实现远程调试。

  • 配置方法

  • 1)VSCODE必备插件

        C/C++

        C/C++ Extension Pack

        GDB Debug

        Remote Development

        

2)配置launch.json文件,用于GDB调试

{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/output/bin/xcpserver",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath":"/opt/xilinx/sdk/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-gdb",
            "miDebuggerServerAddress":"192.168.1.10:9008"
        }

    ]
}

        上述配置参数解释,根据个人程序进行对应修改

顶层参数:
    version:版本号,指定配置文件的格式版本。当前值为 0.2.0,是 Visual Studio Code 的调试配置文件的常见版本。
    configurations:配置数组,其中每个对象定义一种调试配置。可以设置多个配置,用于不同的调试场景

顶层参数:
        version:版本号,指定配置文件的格式版本。当前值为 0.2.0,是 Visual Studio Code 的调试配置文件的常见版本。
        configurations:配置数组,其中每个对象定义一种调试配置。可以设置多个配置,用于不同的调试场景
配置字段:
        name:配置名称,出现在调试面板中,用于选择调试配置。当前值为 "(gdb) 启动"

        type:调试器的类型,当前值为 "cppdbg",表示使用 C++ 调试器扩展

        request:调试请求的类型,当前配置为launch,可根据实际使用选择配置

                launch:启动程序进行调试

                attach:附加到已经运行的进程进行调试

   program要调试的可执行程序的路径,

                            当前值为 "${workspaceFolder}/output/bin/xcpserver"

        ${workspaceFolder} 是当前工作区根目录

        xcpserver为具体需要远程调试得程序根据实际情况选择

          argv:启动程序时传递的命令行参数,当前值为 [](空数组),表示不传递任何参数

          stopAtEntry:是否在程序入口点处暂停,当前值为 false

        true:在入口点暂停;false:直接运行到第一个断点或结束

          cwd:调试器运行的工作目录,当前值为 "${workspaceFolder}/",即工作区根目录

          environment:配置环境变量的数组,每个环境变量以 namevalue 的形式指定,

                                 当前值为 [],表示使用默认环境变量

         externalConsole:是否使用外部终端来显示程序的标准输出,当前为fasle

                                       true:使用外部终端;false:在 VS Code 的调试控制台中显示

        MIMode:指定使用哪种调试器模式,当前值为 "gdb",表示使用 GNU 调试器(GDB)

        setupCommands:调试器启动时运行的一组命令,通常用于设置调试器的行为

                                        description:命令的描述,便于阅读和管理

                                        text:实际执行的 GDB 命令

                                        ignoreFailures:命令失败时是否忽略错误

                         当前配置包括:启用整齐打印-enable-pretty-printing,用于以更友好的格式显示 STL 和其他复杂类型的内容;

                                                 设置反汇编风格为 Intel-gdb-set disassembly-flavor intel,使 GDB 输出的反汇编代码使用 Intel 语法(而非 AT&T 语法)

        miDebuggerPath:指定用于调试的 GDB 可执行文件路径,根据实际toolchain环境修改

           /opt/xilinx/sdk/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-gdb ,表明调试器是用于 AArch64 架构的交叉调试器

  miDebuggerServerAddress:指定 GDB 远程调试服务器的地址,通常用于远程调试,当前值为 "192.168.1.10:9008";根据目标板得IP与绑定端口进行配置。

此配置文件主要用于:

  1. 在本地通过 VS Code 调试运行于远程设备(AArch64 架构)的程序。
  2. 配置了远程 GDB 调试环境(miDebuggerServerAddressmiDebuggerPath)。
  3. 设置了常见的调试选项(例如整齐打印和 Intel 汇编语法)。

如果需要修改,可以根据实际项目需求调整路径、参数或调试行为

  • 调试步骤

​​​​​​目标板运行程序

1)已启动程序,通过attach方式进入调试

        

gdbserver :9008 --attach 9149

2)通过gdbserver启动时加载程序(程序路径根据实际情况填写)

gdbserver :9008 ./xcpserver

        

vscode上启动gdb

   1)连接远程开发板,点击爬虫

2)启动gdb调试

3)调试快捷键

F5停止运行、开始运行;

F10执行下一步;

F11进入函数执行;


http://www.kler.cn/a/511665.html

相关文章:

  • VLAN基础理论
  • Python 正则表达式
  • html全局遮罩,通过websocket来实现实时发布公告
  • springboot医院信管系统
  • LabVIEW 蔬菜精密播种监测系统
  • 反转字符串中的单词 II:Swift 实现与详解
  • 哈尔滨有双线服务器租用吗?
  • Redis 学习指南与资料分享
  • 26个开源Agent开发框架调研总结(二)
  • 基于单片机的开关电源设计(论文+源码)
  • 麒麟LINUX V10SP3 2401安装ORACLE 12.2.1 runInstaller直接报UNZIP格式不对
  • 如何通过 Nginx 实现 CouchDB 集群的负载均衡并监控请求分发
  • pthread_create函数
  • DeviceNet转Profinet网关+FANUC机器人:打造工业界的灭霸手套,掌控无限可能
  • owasp SQL 注入测试-01 (准备工作)
  • Jmeter 动态参数压力测试时间段预定接口
  • 前缀和算法习题篇(下)
  • 网络安全---CMS指纹信息实战
  • [练习]简单结构体操作程序
  • 告别 Excel,拥抱 R 语言:开启数据分析新时代
  • k8s集成MinIo
  • 精品PPT | 某制造集团灯塔工厂解决方案
  • C# 操作 文件
  • [STM32 HAL库]串口中断编程思路
  • 微服务入门:从零开始构建你的微服务架构
  • xiao esp32 S3播放SD卡wav音频