Archivio per agosto 2019

Debugging Rust with VS code

Ho da poco iniziato a sviluppare con Rust e la scelta dell’editor è ricaduta senza troppi pensieri (confermata anche da commenti) su Visual Studio Code.

Ovviamente per avere syntax highlighting, intellisense, refactoring… è necessario installare l’extension di rust:

Inizializziamo un nuovo progetto usando cargo:

cargo new rust_debug_test

E ora configuriamo gli strumenti per debuggare.

1. Plugin C/C++

Di default Rust su windows usa MSVC, è quindi necessario utilizzare l’extension apposita:

2. Aggiungiamo un task per compilare

Prima di poter debuggare la nostra applicazione è necessario compilarla. E’ necessario quindi configurare un task che esegua questa operazione.
Per farlo in modo semplice, apriamo il nostro file src/main.rs in VS code in modo che il plugin crei le strutture di contorno e ci permetta di selezionare velocemente il task appropriato:

CTRL-SHIFT+p
Tasks: Configure task
Rust: Cargo build

nel file tasks.json creato, andiamo ad aggiungere il nome del task che verrà utilizzato successivamente per identificarlo:

 {
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build_application",
            "type": "cargo",
            "subcommand": "build",
            "problemMatcher": [
                "$rustc"
            ]
        }
    ]
} 

Non ci resta che configurare la configurazione di debug nel file launch.json

3. Launch configuration

Per scaffoldare la nostra configurazione basta

Debug menu --> Add configuration
C++ (Windows)

E modificare la configurazione come segue:

 {
    "version": "0.2.0",
    "configurations": [
        {
            "preLaunchTask": "build_application",
            "name": "(Windows) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/target/debug/rust_debug_test.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false
        }
    ]
} 

dove:

  • preLaunchTask è il nome del task dato in precedenza per compilare
  • program è il nome dell’eseguibile compilato con cargo, ovvero il nome del package presente nel file cargo.toml

4. F5

and that’s it!

Pubblicità

Lascia un commento