如何在Windows上调试Rust单元测试?

Rid*_*del 6 windows testing debugging rust visual-studio-code

我正在使用带有Rust和Visual Studio工具链的Windows上的VS Code开发针对Codingame问题的代码。

我找到了许多指南来解释如何调试由生成的可执行文件cargo build,最好是使用Visual Studio Code和MSVC Debugger在Windows调试Debug Rust

但是,当我遇到问题时,我倾向于编写单元测试(我已经用Java,JavaScript,Ruby等来完成了),然后进行调试。不幸的是,我在Rust中找不到任何方法可以做到这一点。如何配置环境以调试测试?

我不是在谈论println!在测试中添加语句,因为我已经知道该怎么做。我也不在谈论添加新的断言,因为这些断言驻留在测试中,而不在测试的代码中。

我想要在测试调用的代码上使用VS代码调试器。

She*_*ter 14

Rust 单元测试被编译为单独的二进制文件,这意味着您调试它们与任何其他二进制文件完全相同。编译后,它们位于./target/debug/$name-$hash.

视觉工作室代码

这是 VS Code 配置文件的修改版本,允许我调试单元测试。

任务文件

{
    "type": "shell",
    "label": "cargo test build",
    "command": "cargo",
    "args": [
        "test", "--no-run"
    ],
    "problemMatcher": [
        "$rustc"
    ]
}
Run Code Online (Sandbox Code Playgroud)

启动文件

{
    "name": "Run Test Debugger",
    "type": "cppvsdbg",
    "request": "launch",
    "program": "${workspaceFolder}/target/debug/buggin-70708b3916187eeb.exe",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole": true,
    "preLaunchTask": "cargo test build",
}
Run Code Online (Sandbox Code Playgroud)

在职的

在测试中运行的 VS Code 调试器

风车

构建你的测试:

{
    "type": "shell",
    "label": "cargo test build",
    "command": "cargo",
    "args": [
        "test", "--no-run"
    ],
    "problemMatcher": [
        "$rustc"
    ]
}
Run Code Online (Sandbox Code Playgroud)

在 Windbg 中打开构建的可执行文件并打开源文件。

Windbg 上的 Rust 测试


找到散列是最烦人的方面。我所知道的最好的解决方案是编写一个小脚本来构建测试,然后根据最新的测试找到可执行文件。我的 Powershell 技能不足以完成任务,也不知道如何将其与 VS Code 或 Windbg 直接集成。

Cargo 有一些未解决的问题可以帮助识别文件:

  • 如果有人在使其工作时遇到问题,请确保单击左侧的调试选项卡(带有小错误的图标)并将下拉列表(在调试播放标志的右侧)更改为运行测试调试器。然后按 F5 执行测试,而不是直接运行测试构建任务。感谢 Shepmaster 的上述说明!! (3认同)