You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Sublime Debugger调试Rust单元测试进入main函数的问题

在Sublime中调试Rust单元测试的正确配置方法

你的问题核心在于指定的program路径指向了主程序二进制,而非cargo test生成的测试二进制,同时Sublime Debugger对cargo字段的支持确实存在局限性,无法像VSCode的CodeLLDB那样自动处理测试程序路径。以下是可行的解决方法:

1. 修正program路径(手动指定)

cargo test --no-run --lib生成的测试二进制文件不在target/debug/根目录,而是存放在target/debug/deps/下,文件名格式为{项目名}-{随机哈希值}(比如my_project-abc123def)。

将调试配置中的program字段修改为测试二进制的实际路径:

"debugger_configurations":
[
    {
        "type": "lldb",
        "request": "launch",
        "name": "Cargo test",
        "program": "${workspaceRoot}/target/debug/deps/my_project-abc123def",
        "args": ["--test-threads=1"], // 禁用多线程,避免调试混乱
        "cwd": "${workspaceRoot}"
    }
]

2. 动态获取测试二进制路径(自动适配哈希值)

每次编译后哈希值会变化,手动修改路径太繁琐,可以用Shell命令动态查找最新的测试二进制:

"debugger_configurations":
[
    {
        "type": "lldb",
        "request": "launch",
        "name": "Cargo test",
        "program": "${command:shell_exec('find ${workspaceRoot}/target/debug/deps -name \"my_project-*\" -type f | grep -v \".d\" | head -n 1')}",
        "args": ["--test-threads=1"],
        "cwd": "${workspaceRoot}"
    }
]
  • grep -v ".d"用于排除编译生成的.d依赖文件
  • head -n 1确保只取第一个匹配的二进制文件

3. 替代方案:先预编译测试程序再调试

如果上述方法仍有问题,可以先手动执行预编译命令,再指定路径:

cargo test --no-run --lib

然后找到target/debug/deps下的测试二进制,填入program字段即可。


内容的提问来源于stack exchange,提问作者deckeresq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:38:19