Step by step interactive debugger for Rust?

user6324692 picture user6324692 · Jun 2, 2016 · Viewed 31.1k times · Source

How can I debug Rust application step by step interactively like I'm able to do with "pry" in Ruby?

I want to be able to see and preferably change the variables in real time when I reach a break point. Is there any production ready finished project?

Answer

Cirelli94 picture Cirelli94 · Sep 11, 2018

I find a good level of usability with VS Code and the CodeLLDB extension:

  1. Install VS Code
  2. Search and install the extension Rust or the newer rust-analyzer from within VS Code
  3. Check requisites and setup CodeLLDB for your platform
  4. Search and install the extension CodeLLDB from within VS Code
  5. The LLDB Debugger added the main menu item "Debug" from where the debugger can be started. When debugging is started for the first time, you must select the environment (the debugger): select LLDB.
  6. When you select LLDB, a launch.json file will be opened, if not, open it, it's under .vscode folder
  7. Your launch.json should look like this:

    {
        // 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": "${workspaceRoot}/target/debug/hello_world",
                "args": [],
                "cwd": "${workspaceRoot}/target/debug/",
                "sourceLanguages": ["rust"]
            }
        ]
    }
    
  1. If you wanted to keep things generic and only compile a binary that matches the cargo folder name, you could use ${workspaceRootFolderName} variable substitution for the "program" key:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "type": "lldb",
                "request": "launch",
                "name": "Debug",
                "program": "${workspaceRoot}/target/debug/${workspaceRootFolderName}",
                "args": [],
                "cwd": "${workspaceRoot}/target/debug/",
                "sourceLanguages": ["rust"]
            }
        ]
    }
    

Here are some blog posts about Rust and VS Code: