From e38ac20d19b7e0abb3a47bb3b111f79eefd4d823 Mon Sep 17 00:00:00 2001 From: Jason Williams <936006+jasonwilliams@users.noreply.github.com> Date: Sun, 12 Jan 2020 20:04:01 +0000 Subject: [PATCH] debugging in dev container can now step into Rust Std code (#219) --- .devcontainer/devcontainer.json | 80 ++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1ef39b6685..c01a0626ba 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,40 +1,46 @@ // For format details, see https://aka.ms/vscode-remote/devcontainer.json or the definition README at // https://github.com/microsoft/vscode-dev-containers/tree/master/containers/docker-existing-dockerfile { - "name": "Existing Dockerfile", - // Sets the run context to one level up instead of the .devcontainer folder. - "context": "..", - // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename. - "dockerFile": "../Dockerfile", - // The optional 'runArgs' property can be used to specify additional runtime arguments. - "runArgs": [ - // Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-in-docker for details. - // "-v","/var/run/docker.sock:/var/run/docker.sock", - // Uncomment the next line if you will be using a ptrace-based debugger like C++, Go, and Rust. - "--cap-add=SYS_PTRACE", - "--security-opt", - "seccomp=unconfined" - // You may want to add a non-root user to your Dockerfile. On Linux, this will prevent - // new files getting created as root. See https://aka.ms/vscode-remote/containers/non-root-user - // for the needed Dockerfile updates and then uncomment the next line. - // "-u", "vscode" - ], - // Use 'settings' to set *default* container specific settings.json values on container create. - // You can edit these settings after create using File > Preferences > Settings > Remote. - "settings": { - // This will ignore your local shell user setting for Linux since shells like zsh are typically - // not in base container images. You can also update this to an specific shell to ensure VS Code - // uses the right one for terminals and tasks. For example, /bin/bash (or /bin/ash for Alpine). - "terminal.integrated.shell.linux": null - }, - // Uncomment the next line if you want to publish any ports. - // "appPort": [], - // Uncomment the next line to run commands after the container is created - for example installing git. - // "postCreateCommand": "apt-get update && apt-get install -y git", - // Add the IDs of extensions you want installed when the container is created in the array below. - "extensions": [ - "vadimcn.vscode-lldb", - "rust-lang.rust" - ], - "postCreateCommand": "rustup toolchain install stable && rustup component add rls rust-src rust-analysis --toolchain stable" -} \ No newline at end of file + "name": "Existing Dockerfile", + // Sets the run context to one level up instead of the .devcontainer folder. + "context": "..", + // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename. + "dockerFile": "../Dockerfile", + // The optional 'runArgs' property can be used to specify additional runtime arguments. + "runArgs": [ + // Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-in-docker for details. + // "-v","/var/run/docker.sock:/var/run/docker.sock", + // Uncomment the next line if you will be using a ptrace-based debugger like C++, Go, and Rust. + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined" + // You may want to add a non-root user to your Dockerfile. On Linux, this will prevent + // new files getting created as root. See https://aka.ms/vscode-remote/containers/non-root-user + // for the needed Dockerfile updates and then uncomment the next line. + // "-u", "vscode" + ], + // Use 'settings' to set *default* container specific settings.json values on container create. + // You can edit these settings after create using File > Preferences > Settings > Remote. + "settings": { + // This will ignore your local shell user setting for Linux since shells like zsh are typically + // not in base container images. You can also update this to an specific shell to ensure VS Code + // uses the right one for terminals and tasks. For example, /bin/bash (or /bin/ash for Alpine). + "terminal.integrated.shell.linux": null, + // https://github.com/vadimcn/vscode-lldb/issues/204 + // https://users.rust-lang.org/t/solved-how-to-step-into-std-source-code-when-debugging-in-vs-code/25319/5 + "lldb.executable": "rust-lldb", + "lldb.launch.sourceLanguages": ["rust"], + // CodeLLDB sourceMap supports Globs! + // https://github.com/vadimcn/vscode-lldb/blob/master/CHANGELOG.md#070 + "lldb.launch.sourceMap": { + "/rustc/*/": "/usr/local/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust" + } + }, + // Uncomment the next line if you want to publish any ports. + // "appPort": [], + // Uncomment the next line to run commands after the container is created - for example installing git. + // "postCreateCommand": "apt-get update && apt-get install -y git", + // Add the IDs of extensions you want installed when the container is created in the array below. + "extensions": ["vadimcn.vscode-lldb", "rust-lang.rust"], + "postCreateCommand": "rustup toolchain install stable && rustup component add rls rust-src rust-analysis --toolchain stable" +}