diff --git a/doc/vscode.md b/doc/vscode.md index df426f021d..7b3f1b4feb 100644 --- a/doc/vscode.md +++ b/doc/vscode.md @@ -47,13 +47,16 @@ edit the variable. ### Setup Debugging +#### Step1: Configure the launch.json file 1. Install the [C/C++ Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) 2. Open `RUN AND DEBUG` panel (Debug Icon in left panel). 3. Click on `Show` all automatic debug configurations. 4. Select `Add config`. 5. Select environment `C++ (GDB/LLDB)`. 6. Change the line `"program": "Enter the program name, e.g. \"${workspaceFolder}/a.out\"",` -to point to your compiled application e.g. `"program": "${workspaceFolder}/hello",`. +to point to your compiled application e.g. `"program": "${workspaceFolder}/hello",` +or a more flexible one `"program": "${fileDirname}/${fileBasenameNoExtension}",` +when you want to debug the current opened file. This will add a block to your `.workspace` file, or create the file `.vscode/launch.json`: @@ -62,7 +65,7 @@ or create the file `.vscode/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 + // https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { @@ -75,7 +78,8 @@ or create the file `.vscode/launch.json`: "cwd": "${fileDirname}", "environment": [], "externalConsole": false, - "MIMode": "lldb" + "MIMode": "lldb", + "preLaunchTask": "build" } ] } @@ -84,21 +88,52 @@ or create the file `.vscode/launch.json`: **Optional:** use `"program": "${fileDirname}/${fileBasenameNoExtension}"` to debug any current open source file with an existing binary with the same name but without any extension. +#### Step2: Configure the task.json file +Generally, you can manually compile the application with: `v -b c -g hello.v -o hello`, +or for short: `v -g hello.v`, and then call the debugger. + +The `-g` option will add the needed debugging information. +You can find more debugging options in the [docs](docs.md#debugging). + +VS Code provides a hook called `preLaunchTask`, which can be used to compile +the application automatially every time you call the debugger. +[preLaunchTask](https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes) launches +a task before the start of a debug session, set this attribute to the label of a task specified +in [task.json](https://code.visualstudio.com/docs/editor/tasks) (in the workspace's .vscode folder). +Or, this can be set to `${defaultBuildTask}`, to use your default build task. + +As explained, the `"preLaunchTask": "build"` needs to work with a `.vscode/task.json` +with a label named `build`. +```json +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "type": "shell", + "command": "v", + "args": [ + "-g", // add more compiler options here if necessary + "${relativeFile}" // or modify it according to your requirements + ], + "group": "build", + "presentation": { + "reveal": "silent" + }, + "problemMatcher": "$gcc" + } + ] +} +``` + ### Usage To allow your compiled application to be debugged. The application needs to include additional debugging information ([DWARF](https://en.wikipedia.org/wiki/DWARF)). -**1. Compile with debugging information:** -`v -b c -g hello.v -o hello` or short `v -g hello.v` - -The `-g` option will add the needed debugging informations. -More Options are explained in the [docs](docs.md#debugging). - - -**2. Start Debugging** - 1. Open your source code and set the required break points 2. Click on the Debug Icon in the left Icon panel and click `> (lldb) Start`, or use `F5` to launch your application in debug mode.