【问题标题】:How to debug Rust unit tests on Windows?如何在 Windows 上调试 Rust 单元测试?
【发布时间】:2018-06-05 18:54:32
【问题描述】:

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

我找到了多个指南来解释如何调试由cargo build 生成的可执行文件,最好的是Debug Rust on Windows with Visual Studio Code and the MSVC Debugger

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

我不是在谈论在我的测试中添加println! 语句,因为我已经知道如何做到这一点。我也不是在谈论添加新断言,因为它们驻留在测试中,而不是在测试代码中。

我想要的是在我的测试调用的代码上使用VS Code Debugger。

【问题讨论】:

  • “调试”println! 调试是什么意思?附加调试器调试?
  • @hellow 我说的是附加调试器,因为println! 是简单的跟踪。

标签: windows debugging testing rust visual-studio-code


【解决方案1】:

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

Visual Studio 代码

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

tasks.json

{
    "type": "shell",
    "label": "cargo test build",
    "command": "cargo",
    "args": [
        "test", "--no-run"
    ],
    "problemMatcher": [
        "$rustc"
    ]
}

launch.json

{
    "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",
}

工作

Windbg

构建您的测试:

cargo test --no-run

在Windbg中打开编译好的可执行文件,打开源文件。


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

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

【讨论】:

  • 如果有人在让它工作时遇到问题,请确保单击左侧的调试选项卡(上面有小错误的图标)并更改下拉列表(在调试的右侧播放标志)以运行测试调试器。然后按 F5 执行测试,而不是直接运行测试构建任务。感谢 Shepmaster 的上述指示!!
猜你喜欢
  • 1970-01-01
  • 2017-02-09
  • 2013-05-08
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 2017-11-07
相关资源
最近更新 更多