使用 VSCode 远程 图形化 GDB 调试 嵌入式linux

引言

之前说了,通过core dump找程序bug,但是有些时候排查问题的还是不够高效,命令行形式gdb还是太简陋了,在IDE debug代码打断点,查堆栈变量那些习以为常的东西,在gdb这里怎么用怎么不习惯,可视化操作不比敲命令行来的香吗?

最近正好研究了下vscode remote ssh + gdbserver 调试。相对来说体验比较像IDE了,基本的单步直接代码上打断点,条件断点变量监控堆栈显示那些已经算凑活了。

环境

我目前的环境主要包括三部分:

  • 日常使用的windows
  • 从同事那边拷过来的VM Linux虚拟机开发环境,纯做编译。
  • 目标嵌入式linux设备

目前基本工作流程是,在windows上通过vscode remote ssh 套件访问虚拟机做代码开发及编译工作,再nfs之类的工具将代码拷到目标嵌入式设备上运行。
工作基本都在windows上,虚拟机开机了就用不管了。

步骤

vscode remote ssh 配置

在这里插入图片描述
安装如图插件。
在这里插入图片描述
侧边栏会多出一个远程资源管理器。添加你要连接的ssh 地址就好了。
配置文件 里面会加上你添加的地址。

Host 1.1.1.1
	HostName 1.1.1.1
	User     username # 填写登陆远程服务器的用户的名字,这个一行需要手动添加

Linux编译机配置

我这边由于是同事那边考过来的现成环境,所以那些ssh,gdb都已经安装好了,开箱即用。没有的需要自行补上。

设备板端配置

没有gdbserver,先装gdbserver。

通过以下命令,启动gdbserver。

gdbserver localhost:9555 ./your_process_name

端口自己配,程序名字填自己程序的路径名字。

vscode launch设置

上面,板端gdbserver启动了,windows也能连接linux虚拟机,但是虚拟机的gdb还没和gdbserver对应上。这部分的工作也是windows上用vscode launch.json文件来配置。

在这里插入图片描述
侧边栏添加配置 。
在这里插入图片描述

        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "输入程序名称,例如 ${workspaceFolder}/a.out",  //改成自己的
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gdb",   // 需要自行添加,gdb的路径 
            "miDebuggerServerAddress": "1.2.3.4:9555",                                              //自行添加 gdbserver 的ip端口
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },

需要修改添加的实际上就三个字段
“program”
“miDebuggerPath”
“miDebuggerServerAddress”

调试

vscode 连接 ssh,按F5即可开始调试。
板端可以看到以下提示,说明已经愉快的进行调试了。

Listening on port 9555
Remote debugging from host 1.1.1.1

在这里插入图片描述


版权声明:本文为weixin_43862847原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。