如何像在 Ruby 中使用“ pry”那样逐步调试 Rust 应用程序 互动?
我希望能够看到,并最好改变实时变量,当我达到一个断点。是否有已完成的生产项目?
Rust 编译器生成具有本机调试信息(符号)信息的本机二进制文件,因此任何本机调试器都可以这样做。这意味着 gdb和 lldb,或者 Windows 调试器(WinDBG 或者仅仅是 Visual Studio) ,如果您正在使用 Rust 的 MSVC ABI 版本。如果你想要一个集成的体验,RustDT是方法去(安装在 Windows: 如何设置 GDB 来调试 Windows 中的 Rust 程序?)。请注意,您可能会在 Windows 上遇到 调试 MSVC ABI Rust 程序时如何检查变量值?,在 Mac 上遇到 https://github.com/rust-lang/rust/issues/33062。
gdb
lldb
对于图形化调试器,有 Gdbgui。它适用于 Linux、 Windows 和 MacOS。它使用浏览器作为显示,并与调试器交互。
与 gdb 原生命令相比,我有 gdb 7.11和 rust-gdb命令似乎提供了更多与锈相关的信息。 例如,rust-gdb正确地显示带有全名的锈对象,而 gdb 根本不显示它们。 In the following example gdb would now show at all the bold parts.
gdb 7.11
rust-gdb
$1 = Args = { inner = **ArgsOs** = { inner = **Args** = { iter = **IntoIter<std::ffi::os_str::OsString>** = { buf = **NonNull<std::ffi::os_str::OsString>** = { pointer = **NonZero<*const std::ffi::os_str::OsString>** = { 0x7ffff6c20060 } }, phantom = **PhantomData<std::ffi::os_str::OsString>**, cap = 1, ptr = 0x7ffff6c20060, end = 0x7ffff6c20078}, _dont_send_or_sync_me = **PhantomData<*mut ()>** } } }
我发现 VS 代码和 CodeLLDB扩展有很好的可用性:
安装 VS 代码
在 VS Code 中搜索并安装扩展 铁锈分析仪
检查平台的必备条件和 setup CodeLLDB。从1.6版本开始,不需要进一步的设置。
在 VS Code 中搜索并安装扩展 CodeLLDB
LLDB 调试器添加了主菜单项“ Run”,从这里可以启动调试器。 第一次启动调试时,必须选择环境(调试器) : 选择 LLDB。
当您选择 LLDB 时,将打开一个 launch.json文件,如果没有,打开它,它在 .vscode文件夹下
launch.json
.vscode
你的 launch.json应该是这样的:
{ // 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": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceRoot}/target/debug/hello_world", "args": [], "cwd": "${workspaceRoot}/target/debug/", "sourceLanguages": ["rust"] } ] }
如果希望保持通用性,并且只编译与货物文件夹名称匹配的二进制文件,可以使用 ${ workspaceRootFolderName }变量替换“ program”键:
{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceRoot}/target/debug/${workspaceRootFolderName}", "args": [], "cwd": "${workspaceRoot}/target/debug/", "sourceLanguages": ["rust"] } ] }
Here are some blog posts about Rust and VS Code:
Arch Linux
在视窗上