v/doc/vscode.md

5.2 KiB

Visual Studio Code Setup

Table of Contents

V language support

The V VS Code Extention provides V language support for Visual Studio Code.

Screenshot Code with activated extention

Features:

  • Syntax Highlighting.
  • Code Snippets for quick coding.
  • Format code on file save as well as format manually (using v fmt).
  • Linter (Workspace files only). more

Hint: This extension will not add the V compiler! Information on how to install V compiler on your operating system.

Setup Extension

Install V VS Code Extension.

Visual Debugging

screenshot visual debugger

The C/C++ Extension for Visual Studio Code provides visual conditional debugging.

Features:

Hint: Not all types (e.g. Array) in V currently create the required DWARF information to show and edit the variable.

Setup Debugging

Step1: Configure the launch.json file

  1. Install the C/C++ Extension
  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", 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:

{
    // 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": [
        {
            "name": "(lldb) Start",
            "type": "cppdbg",
            "request": "launch",
            "program": "Enter the program name, e.g. \"${workspaceFolder}/a.out\"",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb",
	    "preLaunchTask": "build"
        }
    ]
}

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.

VS Code provides a hook called preLaunchTask, which can be used to compile the application automatially every time you call the debugger. preLaunchTask launches a task before the start of a debug session, set this attribute to the label of a task specified in task.json (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.

{
    // 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).

  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.

For all options look at the official C/C++ Extension documentation.