Screenshot Tour
Enter the binary and args just as you'd call them on the command line. The 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 the environment supports reverse debugging, such as when using an Intel CPU and running Linux and debugging with rr, gdbgui allows you to debug in reverse.
Stack/Threads
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 (debugged) Process
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 SIGKILL
, etc.
Source Code
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.
Memory Viewer
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.
Registers
View all registers. If a register was updated it is highlighted in yellow.
gdb console
- 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
Authentication can be enabled when serving on a publicly accessible IP address. See gdbgui --help
for instructions on how to enable authentication.
Dashboard
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.