vscode下rust调式
[日期:2021/4/28]
[作者:linhs]
[vscode] [rust] [gdb]
简介
基于 ubuntu 21.04 x64
安装相关的工具
包 | 说明 |
---|---|
vscode | 代码编辑器 |
rust | rust语言支持 |
gdb | 程序调式器 |
gcc | 编译器 |
注:安装vscode从官网上下载,否则会出现输入法无法输入中文的现象
https://code.visualstudio.com/docs/editor/extension-marketplace
安装vscode的基本开发扩展包
vscode扩展id | 说明 |
---|---|
ms-ceintl.vscode-language-pack-zh-hans | 适用于 VS Code 的中文(简体)语言包 |
rust-lang.rust | Rust support for Visual Studio Code |
shd101wyy.markdown-preview-enhanced | Markdown Preview Enhanced |
matklad.rust-analyzer | rust-analyzer |
be5invis.toml | TOML support for vscode |
ms-vscode.cpptools | C/C++ for Visual Studio Code |
linhs@linhs:~/work/rust$ sudo apt-get update
linhs@linhs:~/work/rust$ sudo apt-get upgrade
linhs@linhs:~/work/rust$ sudo apt-get install rustc
linhs@linhs:~/work/rust$ sudo apt-get install gcc
linhs@linhs:~/work/rust$ sudo apt install gdb-multiarch openocd qemu-system-arm
注:默认情况下会出现安装完后没有 rustup 命令
尝试手动导入rustup环境变量来解决:
linhs@linhs:~/.cargo$ cat env
#!/bin/sh
# rustup shell setup
# affix colons on either side of $PATH to simplify matching
case ":${PATH}:" in
*:"$HOME/.cargo/bin":*)
;;
*)
# Prepending path in case a system-installed rustc needs to be overridden
export PATH="$HOME/.cargo/bin:$PATH"
;;
esac
通过查看cargo的env可以看出 export PATH="$HOME/.cargo/bin:$PATH" 是rust的环境变量导入方法,手动执行命令 rustup 即可正常
linhs@linhs:~/.cargo$ export PATH="$HOME/.cargo/bin:$PATH"
创建工程
使用cargo new命令创建工程
linhs@linhs:~/work/rust$ cargo new demo_debug
Created binary (application) `demo_debug` package
使用vscode打开工程,然后打开./src/main.rs,再启动调式
Start Debugging -> C++(GDB/LLDB)
gdb调式配置文件
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: 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
}
]
}
]
}
修改 “program” 属性为 “program”: “${workspaceFolder}/target/debug/demo_debug”, 此时大功告成
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/target/debug/demo_debug",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
注:“externalConsole”: false, 改为 true 时,启动调式的程序会启动一个新的终端,而默认使用vscode的终端
再点击 Start Debugging 调式
默认情况下程序之间运行的结束,甚至无法放置断点
打开设置 输入 debug.allowBreakpointsEverywhere 属性改为 true
注:“debug.allowBreakpointsEverywhere”:true, 允许在任何文件中设置断点