Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 将vscode调试控制台与rust一起使用_Debugging_Visual Studio Code_Rust_Vscode Extensions_Lldb - Fatal编程技术网

Debugging 将vscode调试控制台与rust一起使用

Debugging 将vscode调试控制台与rust一起使用,debugging,visual-studio-code,rust,vscode-extensions,lldb,Debugging,Visual Studio Code,Rust,Vscode Extensions,Lldb,我有点不确定我用的是谁的控制台。但假设我有以下调试配置: { "version": "0.2.0", "inputs": [ ... ], "configurations": [ { "type": "lldb", "request": "

我有点不确定我用的是谁的控制台。但假设我有以下调试配置:

{
    "version": "0.2.0",
    "inputs": [
        ...
    ],
    "configurations": [
        {
            "type": "lldb",
            "request": "attach",
            "name": "Attach to...",
            "program": "${workspaceFolder}/src/lib/${input:pickPackage}/target/debug/${input:pickPackage}"
        }
    ]
}
我的程序正在macos终端上运行,带有
cargo run-p…

vscode的调试器为我提供了lldb的调试控制台

说,我在一个断点,想尝试一下

到目前为止我试过生锈

script println!("{:?}", &t[op_end_index..])
  File "<input>", line 1
    println!("{:?}", &t[op_end_index..])
           ^
SyntaxError: invalid syntax
script &t[op_end_index..]
  File "<input>", line 1
    &t[op_end_index..]
    ^
SyntaxError: invalid syntax
script fn main () {println!("{:?}", &t[op_end_index..])}
  File "<input>", line 1
    fn main () {println!("{:?}", &t[op_end_index..])}
       ^
SyntaxError: invalid syntax
“你好”这个词很好,但我怎样才能达到我的实际范围呢

我应该使用lldb的
脚本
命令来实现吗

我的语法是什么

更新 @ForceBru感谢您对python的提示

我正在与之互动的是

在将
“sourceLanguages”:[“rust”]
从添加到我的配置后,我似乎应该能够执行类似于
脚本调试器的操作

但是没有运气

script debugger.evaluate("/se t[0]")
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Users/anvlkv/.vscode/extensions/vadimcn.vscode-lldb-1.6.0/adapter/debugger.py", line 8, in evaluate
    value = codelldb.evaluate_in_context(expr, True, exec_context)
  File "/Users/anvlkv/.vscode/extensions/vadimcn.vscode-lldb-1.6.0/adapter/codelldb.py", line 276, in evaluate_in_context
    return eval(code, eval_globals, eval_locals)
  File "<string>", line 1
    /se t[0]
    ^
SyntaxError: invalid syntax


正如有人评论的那样,您的配置似乎不正确,它正试图将您的源代码作为Python进行调试。获得正确配置的最简单方法是使用提供的模板。在您的情况下,您可能可以跳到本答案的末尾,使用其中一个“附加”配置文件,但其他配置文件可能对其他人有用

在“调试”面板中,有一个下拉列表:

如果选择“添加配置…”,则可以选择要添加的模板:

选择“LLDB:Debug Cargo Output”将把它添加到您的
launch.json
文件中:

{
    "type": "lldb",
    "request": "launch",
    "name": "Cargo launch",
    "cargo": {
        "args": [
            "build",
            "--lib"
        ]
    },
    "program": "${cargo:program}",
    "args": []
},
如果您的板条箱是二进制文件,则需要将该
--lib
更改为
--bin
,并指定要运行的二进制文件:

{
    "type": "lldb",
    "request": "launch",
    "name": "Cargo launch",
    "cargo": {
        "args": [
            "build",
            "--bin=foo"
        ]
    },
    "program": "${cargo:program}",
    "args": []
},
对于测试,您可以选择“LLDB:Debug-Cargo-tests”。它将生成如下内容:

{
    "type": "lldb",
    "request": "launch",
    "name": "Cargo test",
    "cargo": {
        "args": [
            "test",
            "--no-run",
            "--lib"
        ]
    },
    "program": "${cargo:program}",
    "args": []
},
您可能希望删除
--lib
参数,以便它运行项目中的所有测试。您可以通过将它添加为尾随参数来过滤它,以便只调试您感兴趣的测试。e、 g.仅运行名称包含“foo”的测试:

要调试已在运行的程序,可以使用模板“LLDB:Attach by Name”,该模板生成:

{
    "type": "lldb",
    "request": "attach",
    "name": "Attach",
    "program": "${workspaceFolder}/foo"
},
或“LLDB:通过PID连接”:

这将为您提供正在运行的进程的可筛选列表,以便您可以选择要调试的进程


对于最后两种配置,您可能会遇到权限问题(至少在Linux上,但也可能在Mac上)。您可以通过以不同的用户身份运行可执行文件或提升VS Code的权限(例如,以sudo启动)来解决此问题.

看起来VSCode正试图使用Python解释器运行Rust代码
脚本是运行内置Python解释器的lldb命令:因此脚本无法运行Rust代码并不奇怪。不幸的是,我不能帮助解决“如何调试生锈”的问题
{
    "type": "lldb",
    "request": "launch",
    "name": "Cargo launch",
    "cargo": {
        "args": [
            "build",
            "--bin=foo"
        ]
    },
    "program": "${cargo:program}",
    "args": []
},
{
    "type": "lldb",
    "request": "launch",
    "name": "Cargo test",
    "cargo": {
        "args": [
            "test",
            "--no-run",
            "--lib"
        ]
    },
    "program": "${cargo:program}",
    "args": []
},
{
    "type": "lldb",
    "request": "launch",
    "name": "Cargo test",
    "cargo": {
        "args": [
            "test",
            "--no-run",
            "--lib"
        ]
    },
    "program": "${cargo:program}",
    "args": ["foo"]
},
{
    "type": "lldb",
    "request": "attach",
    "name": "Attach",
    "program": "${workspaceFolder}/foo"
},
{
    "type": "lldb",
    "request": "attach",
    "name": "Attach",
    "pid": "${command:pickMyProcess}" // use ${command:pickProcess} to pick other users' processes
},