vscode+jlink+GDBServer在线调试

2023-05-16

GDB、GDBServer、JLink之间的关系

借用网上一张图,原文参考:https://blog.csdn.net/qq_40833810/article/details/106713462
在这里插入图片描述
我们在进行GDB调试时,先打开GDB Server,通过tcp监听端口2331,等待进行连接并调试。

vscode安装

简单,官方下载安装即可。

JLink安装

官网下载并安装https://www.segger.com/downloads/jlink/

使用步骤

1.固件准备

  本文主要讲的是vscode在线调试,并未包含固件编译和下载,所以提前准备好固件并少如目标板中。
  使用的固件是*.elf文件,即生成的可执行文件。

2.GDB Server连接

  通过安装jlink时安装的JLinkGDBServer来打开GDB Server,有两种打开方法,如本人使用的是Atmel的SAMV71Q21
  打开方法一:
  通过安装目录找到 JLinkGDBServer.exe,双击即可打开,如图:
在这里插入图片描述
选择目标板(target device)、连接方式(Target interface),速度自行设定,其他保持默认,确认(OK)即可,然后进入下图:
在这里插入图片描述
图中所示:J-Link已连接,GDB Server Listening port: 2331,TCP端口是2331处于监听状态,等待GDB的TCP连接。
  打开方法二:
  命令行打开,需将 JLinkGDBServer.exe的路径保存到环境变量中,windows和linux都适合,然后输入命令:

JLinkGDBServer  -device ATSAMV71Q21 -if SWD -speed 500

-device后跟着的目标板需根据实际的需求进行更换,-speed可自己设置自己需要的速度,如下图为打开的界面(linux下没有界面,会显示等待连接状态):
在这里插入图片描述
  至此,GDB Server已打开,tcp端口2331处于监听状态,下一步是要通过GDB进行连接GDB Server。

2.vscode配置GDB

  通过vscode打开工程的根目录,添加gdb设置文件 lanuch.json(很重要),通过vscode的菜单栏,运行->添加配置,则生成如下图文件在这里插入图片描述
  然后,选择下图中的添加配置,添加红色圈中的内容,
在这里插入图片描述  选择完毕之后,则内容如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }


    ]
}

主要需要更改3处内容
  1、更改可执行文件路径,即 “program”选项处,将此处内容更改为原工程生成的固件路径,注意在windows环境中,路径需使用 /或者 \\,如本人使用的路径:

//"program": "E:/exsample/test.elf",
"program": "E:\\exsample\\test.elf",

  2、更改gdb所在路径,即 “miDebuggerPath”选项处,选择编译固件时使用的gcc路径下得gdb文件,如本人使用的是:

//"miDebuggerPath": "D:\\Program Files\\Atmel\\Studio\\7.0\\toolchain\\arm\\arm-gnu-toolchain\\bin\\arm-none-eabi-gdb.exe",
"miDebuggerPath": "D:/Program Files/Atmel/Studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/arm-none-eabi-gdb.exe",

  3、添加GDB的tcp连接端口,使用本地端口localhost

"miDebuggerServerAddress": "localhost:2331"

  更改后的文件如下,此文件也可以之间拷贝到其他项目目录下,修改对应的可执行文件和gdb文件路径即可:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            //"program": "E:/exsample/test.elf",
			"program": "E:\\exsample\\test.elf",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            //"miDebuggerPath": "D:\\Program Files\\Atmel\\Studio\\7.0\\toolchain\\arm\\arm-gnu-toolchain\\bin\\arm-none-eabi-gdb.exe",
			"miDebuggerPath": "D:/Program Files/Atmel/Studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/arm-none-eabi-gdb.exe",
            "miDebuggerServerAddress": "localhost:2331"
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }


    ]
}

  至此,vscode配置GDB环境完毕,下一步进入真正的调试过程。

3.调试

点击vscode菜单栏的运行->启动调试,或者选择下图亦可启动调试:
在这里插入图片描述
调试界面如下:
在这里插入图片描述
1.可以进行单步调试、打断点等;
2.可以查看当前变量值
3.可以在监听窗口添加想要查看的变量或者寄存器等;

 
 
   上述步骤即可实现vscode+jlink+GDBServer的在线调试功能,当然也存在一些问题,目前还未找到原因,如每次进入调试都需重新启动GDB Server,然后再使用vscode进入调试模式,否则可能会进入调试失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode+jlink+GDBServer在线调试 的相关文章

随机推荐

  • 【论文笔记】Deblur-NeRF == HKU ==CVPR‘2022

    蓝色 紫色 红色 Deblur NeRF Neural Radiance Fields from Blurry Images Author From Abstract 神经辐射场 xff08 NeRF xff09 由于其显著的合成质量 xf
  • Linux安装 metashape

    1 下载软件 3D三维建模软件 Agisoft Metashape Pro 2 安装 span class token comment 进入root模式 xff0c 如果之前没有设置过密码 span span class token fun
  • Information Collection

    港澳新地区 香港理工大学 杨波 助理教授 vLAR实验室 欧洲 ETH Z rich Marc Pollefeys Computer Vision and Geometry Group TU Delft 3D geoinformation
  • 804半导体物理 中科院半导体所考研经验

    本人2021考研 xff0c 半导体研究所 xff0c 物理电子学 xff0c 数一英语一 xff0c 专业课804半导体 自己之前在备考的时候就感觉专业课的资料和备考经验比较少 xff0c 现在就写一些自己总结的经验 xff0c 放一些资
  • 一些cmake error fixed

    建完虚拟环境后 运行 pip install 出现报错 xff0c 显示svox2安装出错 xff0c 然后开始进入到svox2中进行手动编译和安装 1 cmake svox2 csrc pybind11找不到 conda span cla
  • metashape-pro python scripts render specified viewpoint

    官方python脚本使用文档 主函数 xff1a render 61 chunk model renderImage 1 实现特定视角的渲染需要通过脚本方式进行 xff0c 原本的metashape pro中是没有这个功能的 首先在meta
  • 【mega-nerf】调包失败&pip install失败解决方案

    Problem 1 调包失败 在这样的层级架构里调包 xff0c 输出无法找到 mega nerf 直接用 sys path append 没有作用 span class token comment import sys span span
  • 使用 rust 开发 stm32:前言

    更多分享内容可访问我的个人博客 https www niuiic top 本系列教程全部置于stm32专栏 本文为使用 rust 开发 stm32 系列教程前言 Why Rust Rust 特性就不用多介绍了 xff0c 有个编译器管着有时
  • docker与virtualbox切换使用

    管理员模式打开cmd 查看hyper v状态 xff1a bcdedit span class token operator span findstr hyperv 若状态显示 hypervisorlaunchtype Auto 则当前可支
  • 内存管理学习

    简单的内存分配算法学习 系统中一块剩余不用的大块连续内存 当需要分配内存块时 xff0c 将从这个大的内存块上分割出相匹配的内存块 xff0c 每个内存块都包含一个管理用的数据头 xff0c 通过这个头把使用块与空闲块用双向链表的方式链接起
  • 模拟I2C

    I2C具体内容参考资料 https blog csdn net sternlycore article details 85600668 https blog csdn net qq 43460068 article details 122
  • 巴特沃斯滤波器使用-butter

    matlab的函数butter 低通滤波使用方法 span class token punctuation span B A span class token punctuation span span class token operat
  • 单片机中uid的使用方法

    uid xff1a unique ID 每个单片机芯片出厂后唯一的ID xff0c 不会重复 uid有很多用途 xff0c 我们可以用来作为mac地址 xff0c 可以用来记录唯一的日志 xff0c 也可以用来防止固件被拷贝使用 本文所描述
  • c/c++单个文件或函数优化级别设置

    span class token macro property span class token directive hash span span class token directive keyword pragma span span
  • 用 Python 将 matplotlib 图表集成到 PDF 中

    介绍 PDF 格式是与平台无关 xff0c 它独立于底层操作系统和渲染引擎 事实上 xff0c PDF 是基于一种脚本语言 PostScript xff0c 它是第一个独立于设备的页面描述语言 在本指南中 xff0c 我们将使用 borb
  • ucos iii 任务栈使用率统计方法

    第一步 使能任务统计功能 修改文件 os cfg h中的 OS CFG STAT TASK STK CHK EN宏 span class token comment TASK MANAGEMENT span span class token
  • qt 中文显示乱码

    qt更改lineEdit 按钮等字体时 xff0c 使用中文时有时会显示乱码 xff0c 则使用以下进行转换即可 xff1a span class token function QStringLiteral span span class
  • QT添加repository

    资源网站 xff0c 添加临时repository即可 https span class token operator span span class token comment mirrors tuna tsinghua edu cn q
  • ssh免密登录

    windows 个人账户下ssh的公钥内容需要保存至远程服务器 xff0c 一般是C Users xxx ssh id rsa pub 远程服务器个人账户下 ssh目录创建文件authorized keys xff08 如果没有的话需创建
  • vscode+jlink+GDBServer在线调试

    GDB GDBServer JLink之间的关系 借用网上一张图 xff0c 原文参考 https blog csdn net qq 40833810 article details 106713462 我们在进行GDB调试时 xff0c