To include debugging information in your application executable, whether it is an application server or a command line, use the --debug option. For example, when building the application:
gg -q --debug
This will add debugging information to your application code, allowing you to debug it with gdb. You can debug your Golf program with gdb as if it were a C program, making it easier to identify issues without having to work with virtual machines or assembly.
The debugging ecosystem for Golf is already fully developed. You can use tools like Valgrind or Google ASAN with Golf programs in the same way you would with a C program.
To debug Golf itself, it must have been compiled with debugging information or use the included debugging information if it was installed from a package. This topic will be covered in another article.
Example of debugging with Golf:
We will create an analysis application called split that will split a query string into names and values:
gg -k split
Create a source code file parse.golf and copy the following:
begin-handler /parse
silent-header
set-string str = 'a=1&b=2&c=3'
split-string str with '&' to pair count pair_tot
start-loop repeat pair_tot use pair_count
read-split pair_count from pair to item
split-string item with '=' to equal
read-split 1 from equal to name
read-split 2 from equal to value
pf-out 'Name [%s] value [%s]\n', name, value
end-loop
end-handler
This program will parse the string 'a=1&b=2&c=3' to generate name/value pairs, similar to how URL query strings are parsed.
Compile and link the program with:
gg -q --public --debug
The -q parameter compiles and links your project. The --public option makes all handlers public, allowing external calls. --debug adds debugging information for gdb.
To run debugging with gdb, use:
gg -r --req='/parse'
This will set the necessary environment variables and run the split program.
To start gdb:
gdb /var/lib/gg/bld/split/split
Inside gdb, you can set a breakpoint at the parse handler and execute each line of code:
(gdb) br parse
(gdb) run
(gdb) next
(gdb) print pair_count
This will allow you to follow the code execution line by line and inspect variables at runtime.
If you want to see the C code generated by Golf, compile with:
gg -q --public --c-lines --debug
This will allow you to analyze the underlying Golf code in C and better understand how it works.
At Q2BSTUDIO, experts in development and technology services, we understand the importance of advanced debugging tools to ensure efficient and optimized solutions. Our team is prepared to implement best practices in development and debugging, ensuring robust and high-performance software.



