无法在Visual Studio代码中调试Rust?

eqfvzcg8  于 2022-12-23  发布在  其他
关注(0)|答案(3)|浏览(613)

我尝试在VS代码中调试Rust程序,但收到错误:

点击OK后,VS代码打开“settings.json”:

我安装了这些扩展:

我的程序是一个简单的“你好世界”应用程序。

ars1skjm

ars1skjm1#

不幸的是VS代码不能调试Rust:(但不必担心,只需几步配置就可以了:)
步骤
1.如果在Windows上,请安装C/C++ extension;如果在OS X/Linux上,请安装CodeLLDB
1.单击调试-〉添加配置,应打开一个 launch.json 文件,您需要在此处手动更改 * 程序 * 名称

{
     "version": "0.2.0",
     "configurations": [
         {
             "name": "(Windows) Launch",
             "type": "cppvsdbg",
             "request": "launch",
             "program": "${workspaceRoot}/target/debug/foo.exe",
             "args": [],
             "stopAtEntry": false,
             "cwd": "${workspaceRoot}",
             "environment": [],
             "externalConsole": true
         },
         {
             "name": "(OSX) Launch",
             "type": "lldb",
             "request": "launch",
             "program": "${workspaceRoot}/target/debug/foo",
             "args": [],
             "cwd": "${workspaceRoot}",
         }
     ]
 }

1.确保在文件-〉首选项-〉设置下选中**允许在任何文件中设置断点 *

有关详细步骤和更多信息,请参阅the article我曾经回答过这个问题

学分-福雷斯特·史密斯

55ooxyrt

55ooxyrt2#

从屏幕截图中可以看出,您使用的是Windows系统,下面是如何继续操作的。这里假设您已经完成了基本操作:

  1. VsCode安装了推荐的rust-analyzer extension
    1.您的项目文件夹已使用cargo init初始化。(您的项目文件夹名称必须与Cargo.toml中的包名称相同。)
    1.您可以从项目目录中使用cargo run,它可以正常工作。
    正如在'Net上的不同位置所指出的,您需要安装另一个VsCode扩展来使其能够进行调试。由于您使用的是Windows,因此您希望对VsCode使用MS C++ DevTools extension,而不是CodeLLDB。
    接下来,您需要一个“launch”配置设置。选择VsCode的Run >>> Add Configuration...菜单项。在下拉列表中选择C/C++: (Windows) launch选项。现在您将拥有一个包含单个配置对象的 launch.json 文件。
    您需要将program属性更改为"${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe";这取决于你的包名是否与项目文件夹的名称相同。(我还将cwd属性更改为"${workspaceFolder}",尽管我不确定这是否重要。)为了更清楚,下面是我目前在launch.json文件中的配置(preLaunchTask属性是以后的):
{
    "name": "(Windows) Launch",
    "type": "cppvsdbg",
    "request": "launch",
    "program": "${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe",
    "preLaunchTask": "rust: cargo build",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "console": "externalTerminal"
}

此时,* 只要您已经至少构建了一次项目 ,就可以按F5键进行调试。
如果希望F5
*保存更改并在调试 * 之前 * 重新生成项目,则还必须添加一个生成任务并将其配置为在调试开始之前运行。
为此,打开Show All Commands框(F1或Ctrl+Shift+p)并选择Tasks: Configure Task,然后选择rust: cargo build,这样会在launch.json旁边创建一个tasks.json文件;默认值就是你所需要的。我的文件看起来像这样:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cargo",
            "command": "build",
            "problemMatcher": [
                "$rustc"
            ],
            "group": "build",
            "label": "rust: cargo build"
        }
    ]
}

然后,要连接所有内容,您只需手动将preLaunchTask属性添加到启动配置中,其值等于任务中的标签,例如"preLaunchTask": "rust: cargo build",,就像我在上面的示例launch.json中所做的那样。
此时,无论何时按F5键,VsCode都将保存您的工作,重新生成项目,然后开始调试它。

tf7tbtn2

tf7tbtn23#

Visual Studio Code是一个通用编辑器,但可以将其配置为调试rust代码。

步骤1.

假设安装了视觉代码、防 rust 和货物,第一步是启用所需的扩展:

  1. rust eclipse 分析仪
    1.代码LLDB
    这些只需要安装一个。

第二步

第二步是创建rust代码,我有一个名为Rust的文件夹,在其中保存rust代码,切换到该文件夹,使用cargo new hello_world创建一个新的rust项目。

步骤3

第三步是更改项目的文件夹。有两个看似合理的选项,但只有一个可行。
我切换到了Rust文件夹,然后可以按照"hello_world - src“命令编辑源代码。

要调试代码,需要创建一个launch.json文件,使用Run - Add configuration...但是,文件不正确,正确的名称应该是<your program>。这是错误的方法。

{
// 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": "${workspaceFolder}/<your program>",
        "args": [],
        "cwd": "${workspaceFolder}"
    }
]

}
文档在这一点上是一个很薄的投标。正确的方法是选择一个不同的文件夹,项目hello_world的顶层。Cargo.toml文件是可用的。

现在,当使用Run - Add configuration...,并且选择LLDB选项时-

Cargo.toml文件可以被提取-

然后使用Cargo.toml文件来正确构建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 executable 'hello_world'",
        "cargo": {
            "args": [
                "build",
                "--bin=hello_world",
                "--package=hello_world"
            ],
            "filter": {
                "name": "hello_world",
                "kind": "bin"
            }
        },
        "args": [],
        "cwd": "${workspaceFolder}"
    },
    {
        "type": "lldb",
        "request": "launch",
        "name": "Debug unit tests in executable 'hello_world'",
        "cargo": {
            "args": [
                "test",
                "--no-run",
                "--bin=hello_world",
                "--package=hello_world"
            ],
            "filter": {
                "name": "hello_world",
                "kind": "bin"
            }
        },
        "args": [],
        "cwd": "${workspaceFolder}"
    }
]
}

现在,Run - Start debuggingRun - Run without Debugging都工作正常。

相关问题