myfreax

JavaScript开发者的rust教程使用vscode调试rust

如果没有使用过vscode,你应该你不会像使用JavaScript那样发现Rust插件的广度,但vscode插件生态正在迅速的增长。最重要的是vscode具有以下功能

5 min read
By myfreax
JavaScript开发者的rust教程使用vscode调试rust

Visual Studio Code/vscode一出现几乎就主导了JavaScript的编辑器的地位。如果你还没有尝试过vscode,那应该去尝试一下了。

如果没有使用过vscode,你应该你不会像使用JavaScript那样发现Rust插件的广度,但vscode插件生态正在迅速的增长。最重要的是vscode具有以下功能。

代码完成/智能,内联警告,调试器,自动重构操作,自动文档工具提示跳转到定义、实现、类型等。

调试Rust的有两个主要插件rust和rust-analyzer。rust和rust-analyzer都有类似的功能,但是这两个插件似乎无法协同的工作。

我们建议使用Rust-analyzer插件,从第一天开始就很棒。对比rust可算是完美的一个插件。

如你要安装rust-analyzer,请打开你的vscode编辑器,然后按Ctrl+Shift+P 输入以下内容。或者扩展的搜索栏搜索Rust-analyzer:

ext install matklad.rust-analyzer

当安装好rust-analyzer后,rust-analyzer下载将开始下载它需要的所有依赖,现在你就可以开始使用rust-analyzer调试rust代码。

使用cargo new或者cargo init初始化项目Rust项目,在你需要调试的行中添加断点。然后按下F5u快捷键,即可进入rust的调试。

注意:你必须在一个结构正确的Rust项目中才能使rust-analyzer工作。您不能只打开任何.rs文件并期望完整的IDE功能。

如果你在Rust项目中创建一个新文件,例如my_module.rs,你会注意到vscode和 rust-analyzer做了一些事情。

rust-analyzer抱怨语法不正确,但他们不会自动完成任何内容,也不会发出明显错误代码的警告。

这是因为Rust项目依赖于入口函数main开始。也就是说,除非将文件一直导入到入口文件,例如main.rslib.rs。否则rust-analyzer无法检查文件。

配置rust-analyzer

打开你的Vscode,然后使用快捷键Ctrl+Shift+P打开命令面板,输入settings,你将会看到两个设置选项Open settings(JSON/UI)。您可以通过UI或JSON通过编辑您的设置。

UI是探索设置的好方法,而JSON更便于快速编辑和共享。以下设置假定你使用编辑JSON的方式进行设置。

默认情况下,rust-analyzer在保存的时侯运行cargo check以收集项目错误和警告。cargo check本质上只是编译你的项目寻找错误。

如果您想要更多可用的信息,那么你可以使用clippy。Clippy是Rust世界的ESlint。你可通过运行命令rustup component add clippy获取clippy。

您可以cargo clippy设置为自动运行或将clippy在rust-analyzer检查之后运行,以获取大量额外的警告和检查,包括rust-analyzer的信息。

{
  "rust-analyzer.checkOnSave.command": "clippy"
}

但是这需要额外的资源并且可能变得慢一些,但这是值得的。clippy在学习Rust时非常游泳。它经常突出显示可以更好帮助写出更好的Rust代码。

禁用嵌套提示

你可能会注意看,rust-analyzer提示信息有时候过于大量,以使你不能作出正确的判断。rust-analyzer的嵌套提示会增加太多噪音。建议关掉部分警告。

默认情况下Rust-analyzer会自动保持最新状态,每次打开项目时Rust-analyzer将执行自动更新。如果你在网络不文档情况下,可以选择关闭。

vscode-lldb

vscode-lldb扩展项目的主要关注点是C++和Rust语言,CodeLLDB包括用于向量、字符串、映射和其他标准库类型的内置可视化工具。

也就是说,它可以与大多数其他编译器生成兼容调试信息的编译语言一起使用,例如Ada、Fortran、Kotlin Native、Nim、Objective-C、Pascal、Swift和Zig。

vscode-lldb支持条件断点、函数断点、日志点、硬件数据访问断点。在集成或外部终端中启动调试器,具有指令级步进的反汇编视图。

加载的模块视图,Python脚本,用于高级可视化的 HTML 渲染,启动配置的工作区级别默认值,远程调试,反向调试。

如果你认为插件对你有帮助Ctrl+Shift+P,然后输入以下内容安装Crates依赖管理插件:

ext install vadimcn.vscode-lldb

Crates依赖管理插件

向您显示最新版本的依赖项,并让您快速访问以更新它们。并在悬停的crate上的显示所有版本crates,点击即可切换版本。

仅当您使用crates.io的依赖时才有用。不支持来自git或其他平台的依赖。cargo.toml必须有效。

如果cargo.toml配置错误,crates插件将不会显示版本。它将通过状态栏和对话框通知您。如果你认为插件对你有帮助Ctrl+Shift+P,然后输入以下内容安装Crates依赖管理插件:

ext install serayuzgur.crates

Search crates.io

在编辑cargo.toml时,尝试在您将依赖想中自动完成依赖的填写。这里之所以说的是尝试,是因为它并不总是有效,尽管当它成功时会非常有趣。

如果你认为插件对你有帮助Ctrl+Shift+P,然后输入以下内容安装Crates依赖管理插件:

ext install belfz.search-crates-io