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

守听  论坛元老 | 2025-1-20 22:00:51 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1023|帖子 1023|积分 3069

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  • 目次
    说明
    设置方法
    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调试

  1. {
  2.     // 使用 IntelliSense 了解相关属性。
  3.     // 悬停以查看现有属性的描述。
  4.     // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5.     "version": "0.2.0",
  6.     "configurations": [
  7.         {
  8.             "name": "(gdb) 启动",
  9.             "type": "cppdbg",
  10.             "request": "launch",
  11.             "program": "${workspaceFolder}/output/bin/xcpserver",
  12.             "args": [],
  13.             "stopAtEntry": false,
  14.             "cwd": "${workspaceFolder}/",
  15.             "environment": [],
  16.             "externalConsole": false,
  17.             "MIMode": "gdb",
  18.             "setupCommands": [
  19.                 {
  20.                     "description": "为 gdb 启用整齐打印",
  21.                     "text": "-enable-pretty-printing",
  22.                     "ignoreFailures": true
  23.                 },
  24.                 {
  25.                     "description": "将反汇编风格设置为 Intel",
  26.                     "text": "-gdb-set disassembly-flavor intel",
  27.                     "ignoreFailures": true
  28.                 }
  29.             ],
  30.             "miDebuggerPath":"/opt/xilinx/sdk/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-gdb",
  31.             "miDebuggerServerAddress":"192.168.1.10:9008"
  32.         }
  33.     ]
  34. }
复制代码
        上述设置参数解释,根据个人程序进行对应修改
  1. 顶层参数:
  2.     version:版本号,指定配置文件的格式版本。当前值为 0.2.0,是 Visual Studio Code 的调试配置文件的常见版本。
  3.     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:设置环境变量的数组,每个环境变量以 name 和 value 的情势指定,
                                 当前值为 [],表现利用默认环境变量
         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与绑定端口进行设置。
此设置文件重要用于:

  • 在本地通过 VS Code 调试运行于远程设备(AArch64 架构)的程序。
  • 设置了远程 GDB 调试环境(miDebuggerServerAddress 和 miDebuggerPath)。
  • 设置了常见的调试选项(比方整洁打印和 Intel 汇编语法)。
假如需要修改,可以根据实际项目需求调解路径、参数或调试行为


  • 调试步骤
​​​​​​目的板运行程序

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

        

  1. gdbserver :9008 --attach 9149
复制代码

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

  1. gdbserver :9008 ./xcpserver
复制代码
        

vscode上启动gdb

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


2)启动gdb调试




3)调试快捷键

F5制止运行、开始运行;
F10执行下一步;
F11进入函数执行;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表