vscode+jlink+GDBServer在线调试

GDB、GDBServer、JLink之间的关系

借用网上一张图,原文参考:https://blog.csdn.net/qq_40833810/article/details/106713462
vscode+jlink+GDBServer在线调试_第1张图片
我们在进行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,双击即可打开,如图:
vscode+jlink+GDBServer在线调试_第2张图片
选择目标板(target device)、连接方式(Target interface),速度自行设定,其他保持默认,确认(OK)即可,然后进入下图:
vscode+jlink+GDBServer在线调试_第3张图片
图中所示: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下没有界面,会显示等待连接状态):
vscode+jlink+GDBServer在线调试_第4张图片
  至此,GDB Server已打开,tcp端口2331处于监听状态,下一步是要通过GDB进行连接GDB Server。

2.vscode配置GDB

  通过vscode打开工程的根目录,添加gdb设置文件 lanuch.json(很重要),通过vscode的菜单栏,运行->添加配置,则生成如下图文件vscode+jlink+GDBServer在线调试_第5张图片
  然后,选择下图中的添加配置,添加红色圈中的内容,
vscode+jlink+GDBServer在线调试_第6张图片  选择完毕之后,则内容如下:

{
    // 使用 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菜单栏的运行->启动调试,或者选择下图亦可启动调试:
vscode+jlink+GDBServer在线调试_第7张图片
调试界面如下:
vscode+jlink+GDBServer在线调试_第8张图片
1.可以进行单步调试、打断点等;
2.可以查看当前变量值
3.可以在监听窗口添加想要查看的变量或者寄存器等;

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

你可能感兴趣的:(嵌入式学习,vscode,jlink,gdb,gdb,server)