VScode交叉调试

  • 安装配置调试
  • 1、安装vccode
  • 2、配置 vscode
  • 3、gdb调试配置
  • 4、下面几个选项按自己的实际情况修改:
  • 5、开始调试


安装配置调试

获取所需的交叉编译工具和调试工具,例如交叉编译工具mips-linux-gnu-gcc,远程交叉调试工具gdb和gdbserver

1、安装vccode

1、进入Visual Studio Code官网下载vscode并安装,建议deb包
下载地址: 点击下载官方安装包

2、解压缩deb包后会自动进行安装。

sudo dpkg -i <file>.deb

3、依据提示进行本地环境升级。

sudo apt-get install -f

VScode官方安装参考文档

VSjava交互式运行 vscode交互式调试_vccode安装

2、配置 vscode

安装必须的插件,Ctrl+Shift+P进入插件应用商店,

  • 汉化搜索框搜索:Chinese 找到相应插件后进行下载
    安装后,在 locale.json 中添加 “locale”: “zh-cn”,即可载入中文(简体)语言包。要修改 locale.json,你可以同时按下 Ctrl+Shift+P 打开命令面板,之后输入 “config” 筛选可用命令列表,最后选择配置语言命令
  • 其中C/C++为必装,提供C/C++支持
  • Code Runner必装,提供编译后程序的运行环境
  • C/C++ Snippets建议 提供一些常用的C/C++片段,如for(;?{},安装后写代码方便(tip.如果想要添加自己写的代码段可以点左下角齿轮->用户代码片段)

3、gdb调试配置

这时已经能够编译运行文件但是还不能debug调试

按F5会弹出launch.json文件。
如:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
	"version": "0.2.0",
	"configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "enter program name, for example ${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
}

然后进入菜单 “调试”-> “添加配置”打开配置文件 launch.json,做如下配置:

{
            "name": "gdb server",//配置名称;在启动配置下拉菜单中显示

            "type": "cppdbg",//配置类型。

            "request": "launch",//请求配置类型。可以是“启动”或“附加”。

            "program": "${workspaceFolder}/program",//需要调试的可执行文件

            "args": [],//传递给程序的命令行参数。

            "stopAtEntry": false,//可选参数。如果为true,则调试器应在目标的入口点停止。如果传递了进程ID,则无效。

            "cwd": "${workspaceFolder}",//目标的工作目录

            "environment": [],//要添加到程序环境中的环境变量。示例:[“name”:“squid”,“value”:“clam”]。

            "externalConsole": false,//如果为true,则为调试对象启动控制台。如果为false,则在Linux和Windows上,它将出现在集成控制台中。

            "linux": {//特定于 Linux 的启动配置属性。

                "MIMode": "gdb",//指示midebugengine将连接到的控制台调试器。允许值为“gdb”“lldb”。
   
                "miDebuggerPath": "/home/user/chains/mips-gcc520-glibc222/bin/mips-linux-gnu-gdb",//调试器的路径。
            },

            "preLaunchTask": "adb forward",//调试会话开始前要运行的任务。

            "postDebugTask": "adb forward remove",//调试会话结束后运行的任务。

            "miDebuggerServerAddress": "127.0.0.1:5000",//要连接到的调试器服务器的网络地址(例如:localhost:1234)。
            "setupCommands": [//要执行的一个或多个gdb/lldb命令,以便设置底层调试器。
                {
                    "description": "Enable pretty-printing for gdb",//命令的可选说明。
                    "text": "-enable-pretty-printing",//要执行的调试器命令。
                    "ignoreFailures": true,//如果为true,则应忽略来自命令的失败。默认值为假。                
                }
            ]
        }

4、下面几个选项按自己的实际情况修改:

  • miDebuggerServerAddress 是远程机器的地址及 gdbserver 监听的端口
  • program 是本地的可执行文件路径
  • miDebuggerPath是交叉调试器(如mips-linux-gnu-gdb)的路径

注意:需要本地和远程机器上都有我们要调试的程序,并且架构保持一致。
如果我们的代码是在本地机器上交叉编译的,可以将本地上编译好的二进制复制到开发板上(虽然本地程序它并不会被执行,但依然需要保留一份)。

按F5调试会提示没有找不到"adb forward",点击配置任务,使用tasks.json模板新建一个Others任务

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
    
        {
            "label": "adb forward",//任务的用户界面标签
            "type": "shell",//定义任务是被作为进程运行还是在 shell 中作为命令运行。
            "command": "adb forward tcp:5000 tcp:5000",//要执行的命令。可以是外部程序或 shell 命令。
        },
        {
            "label": "adb forward remove",
            "type": "shell",
            "command": "adb forward --remove tcp:5000",
        },
    ]
}

5、开始调试

按照上面的说明配置好后,先在在远程机器上运行 gdbserver:

./gdbserver :5000 /program

配置好launch.json后,F5启动调试,可以通过F9设断点,F11单步等来调试程序。