Enter the binary and args just as you'd call them on the command line. Binary is restored when gdbgui is opened at a later time.
Intuitive control of your program. From left to right: Run, Continue, Next, Step, Return, Next Instruction, Step Instruction.
If using an Intel CPU and running Linux, gdbgui also works in conjunction with rr to let you debug in reverse.
View all threads, the full stack on the active thread, the current frame on inactive threads. Switch between frames on the stack, or threads by pointing and clicking.
Send Signal to Inferior
Choose from any signal your OS supports to send to the inferior. For example, to mock
CTRL+C in plain gdb, you can send
SIGINT to interrupt the inferior process. If the inferior process is hung for some reason, you can send
Signals are also recognized by
gdbgui, and a button is presented to let you step back into the program and inspect the program's state in case it exits unexpectedly.
View source, assembly, add breakpoints. All symbols used to compile the target are listed in a dropdown above the source code viewer, and have autocompletion capabilities. There are two different color schemes: dark (monokai), and a light theme (default).
With assembly. Note the bold line is the current instruction that gdb is stopped on.
If the source file is not found, it will display assembly, and allow you to step through it as desired.
Variables and Expressions
All local variables are automatically displayed, and are clickable to explore their fields.
Hover over a variable and explore it, just like in the Chrome debugger.
Arbitrary expressions can be evaluated as well. These expressions persist as the program is stepped through. The base/radix can be modified as desired.
Expressions record their previous values, and can be displayed in an x/y plot.
Expressions can be interactively explored in a tree view.
All hex addresses are automatically converted to clickable links to explore memory. Length of memory is configurable. In this case 10 bytes are displayed per row.
View all registers. If a register was updated it is highlighted in yellow.
- Prints gdb output
- Allows you to write directly to the underlying gdb subprocess as if you were using it in the terminal
- Tab completion works, and displays a button to view help on gdb commands
- Can be used to ease into learning gdb
- Can be used as a fallback for commands that don't have a UI widget
- History can be accessed using up/down arrows
Authentication can be enabled when serving on a publicly accessible IP address. See
gdbgui --help for instructions on how to enable authentication.
A dashboard is available to let you look at all gdb instances managed by gdbgui. You can kill them, or attach to them. More than one person can attach to a managed gdb subprocess and participate in the debugging session simultaneously. i.e. if one person steps forward, all connected users see the program step forward in real time.
gdbgui at launch