C Backend binaries (Default)
To debug issues in the generated binary (flag:
-b c), you can pass these flags:
-g– produces a less optimized executable with more debug information in it. V will enforce line numbers from the .v files in the stacktraces, that the executable will produce on panic. It is usually better to pass -g, unless you are writing low-level code, in which case use the next option
-cg– produces a less optimized executable with more debug information in it. The executable will use C source line numbers in this case. It is frequently used in combination with
-keepc, so that you can inspect the generated C program in case of panic, or so that your debugger (
lldbetc.) can show you the generated C source code.
-showcc– prints the C command that is used to build the program.
-show-c-output– prints the output, that your C compiler produced while compiling your program.
-keepc– do not delete the generated C source code file after a successful compilation. Also keep using the same file path, so it is more stable and easier to keep opened in an editor/IDE.
For best debugging experience if you are writing a low-level wrapper for an existing
C library, you can pass several of these flags at the same time:
v -keepc -cg -showcc yourprogram.v, then just run your debugger (gdb/lldb) or IDE
on the produced executable
If you just want to inspect the generated C code, without further compilation,
you can also use the
-o flag (e.g.
This will make V produce the
file.c then stop.
If you want to see the generated C source code for just a single C function,
main, you can use:
-printfn main -o file.c.
To debug the V executable itself, you need to compile from source with
./v -g -o v cmd/v.
You can debug tests with for example
v -g -keepc prog_test.v.
-keepc flag is needed, so that the executable is not deleted, after it was created and ran.
To see a detailed list of all flags that V supports, use
v help build
v help build-c.
Visual Debugging Setup
Native Backend binaries
Currently, there is no debugging support for binaries, created by the
native backend (flag:
v -b js -sourcemap hello.v -o hello.js
For all supported options check the latest help:
v help build-js