
GDBFrontend is an easy, flexible and extensionable gui debugger.

You can install GDBFrontend with pip.
sudo python3 -m pip install gdbfrontend
if it is already installed and you are upgrading
sudo python3 -m pip install --upgrade gdbfrontend
or if you want to install specific GIT snapshot:
sudo python3 setup.py install
and you can run
gdbfrontend
You can download latest source and run it.
You can run gdb-frontend with following commands:
git clone https://github.com/rohanrhu/gdb-frontend.git gdb-frontend
cd gdb-frontend
./gdbfrontend
and you can open it with:
http://127.0.0.1:5550/
You can open GDB shell with the command:
tmux a -t gdb-frontend
You can install Arch Linux package for Arch-based distributions. (AUR Package)
yay -S gdb-frontend-bin
and you can run it:
gdbfrontend
Flatpak package is a TODO.
Follow this tutorial to learn how to debug Dockerized C/C++ apps with GDBFrontend.
Follow this quick tutorial for debugging embedded devices with GDBFrontend.
Follow this quick tutorial for debugging native C Python extensions with GDBFrontend.
GDBFrontend has powerful and extensible APIs. Follow this quick tutorial to learn developing GDBFrontend plugins.
Follow this quick tutorial for integration ideas for special development/debugging requirements.
Follow this tutorial for debugging STM32 with OpenOCD and GDBFrontend.
GDBFrontend has an expression evaluator that you can use multiple in sametime.



Right click to a breakpoint for setting its condition.


Expressions of all variables, members and items are connected in GDBFrontend's VariablesExplorer.

You can watch, filter or manage processes with Process Manager.


GDBFrontend has a set of some features for collabration named as "Enhanced Collabration".

Collabration draw is available when you enable Enhanced Collabration. Click to Draw or use Ctrl + Shift + X shortcut to draw and Ctrl + Shift + C to clear all drawings.

With Enhanced Collabration all debugger clients are synchronized on source viewing.

GDBFrontend is very extensible and has powerful APIs. Some examples of GDBFrontend's extensibility.


./gdbfrontend$ gdbfrontend --help
GDBFrontend is a easy, flexible and extensionable gui debugger.
Options:
--help, -h: Shows this help message.
--version, -v: Shows version.
--gdb-args="ARGS", -G "ARGS": Specifies GDB command line arguments. (Optional)
--gdb-executable=PATH, -g PATH: Specifies GDB executable path (Default is "gdb" command on PATH environment variable.)
--tmux-executable=PATH, -tmux PATH: Specifies Tmux executable path (Default is "tmux" command on PATH environment variable.)
--terminal-id=NAME, -t NAME: Specifies tmux terminal identifier name (Default is "gdb-frontend".)
--credentials=USER:PASS, -c USER:PASS: Specifies username and password for accessing to debugger.
--host=IP, -H IP: Specifies current host address that you can access via for HTTP and WS servers.
--listen=IP, -l IP: Specifies listen address for HTTP and WS servers.
--port=PORT, -p PORT: Specifies HTTP port. (0 for random port.)
--url-base=PATH, -u PATH: Specifies URL base path. (Default: /)
--readonly, -r: Makes code editor readonly. (Notice: This option is not related to security.)
--workdir, -w: Specifies working directory.
--plugin-dir, -P: Specifies plugins directory.
--dontopenuionstartup, -D: Avoids opening UI just after startup.
--verbose, -V: Enables verbose output.
--help, -hShows help text.
--version, -vShows version.
--gdb-args="ARGS", -G "ARGS"Specifies GDB command line arguments. (Optional)
--gdb-executable=PATH, -g PATHYou can specify GDB executable path like gdbfrontend --gdb-executable=/path/to/gdb. (Optional)
--tmux-executable=PATH, -tmux PATHYou can specify Tmux executable path like gdbfrontend --tmux-executable=/path/to/tmux. (Optional)
--terminal-id=PATH, -t PATHYou can specify Tmux terminal id like gdbfrontend --terminal-id=terminal-name. (Default: gdb-frontend)
--credentials=USER:PASS, -c USER:PASSSpecifies username and password for accessing to debugger.
--host=IP, -H IPSpecifies current host address that you can access via for HTTP and WS servers.
--listen=IP, -l IPSpecifies listen address for HTTP and WS servers.
--port=PORT, -p PORTSpecifies HTTP port. (0 for random port.)
--url-base=PATH, -u PATHSpecifies URL base path. (Default: /)
--readonly, -rMakes code editor readonly. (Notice: This option is not related to security.)
--workdir, -wSpecifies working directory.
--plugin-dir, -PSpecifies plugins directory.
--dontopenuionstartup, -DAvoids opening UI just after startup.
--verbose, -VEnables verbose output.
GDBFrontend's GDB commands starts with gf-.
gf-refreshRefreshes all browser clients.
gf-theme [theme-name]Switch to desired theme. For example: gf-theme light, gf-theme red or gf-theme default for default theme.
gf-list-pluginsLists all GDBFrontend plugins in the plugin directory.
gf-load-plugin [plugin-name]Loads GDBFrontend plugin.
gf-unload-plugin [plugin-name]Unloads GDBFrontend plugin.
Current hotkeys are listed below.
| Action | Hotkey | Context |
|---|---|---|
| General: Open a source file | Ctrl + O | GDBFrontend |
| General: New ExpressionEvaluator | Ctrl + R | GDBFrontend |
| General: New ExpressionEvaluator on native window | Ctrl + Shift + R | GDBFrontend |
| General: Fuzzy source finder | Ctrl + P | GDBFrontend |
| Runtime: Run | F5 | GDBFrontend |
| Runtime: Continue | F6 | GDBFrontend |
| Runtime: Pause/Interrupt | F7 | GDBFrontend |
| Runtime: Step Over | F8 | GDBFrontend |
| Runtime: Step Into | F9 | GDBFrontend |
| Runtime: Step Instruction | F10 | GDBFrontend |
| Runtime: Stop | F11 | GDBFrontend |
| Enhanced Collabration: Toggle drawing mode | Ctrl + Shift + X | GDBFrontend / Enhanced Collabration: Enabled |
| Enhanced Collabration: Clear all drawings | Ctrl + Shift + C | GDBFrontend / Enhanced Collabration: Enabled |
GDBFrontend has built-in themes.
For switching between themes use gf-theme [THEME] command on GDB shell.
(gdb) gf-theme doki
(gdb) gf-theme sky
(gdb) gf-theme sakura
(gdb) gf-theme waifu
(gdb) gf-theme cyberpunk
(gdb) gf-theme dark
(gdb) gf-theme green
(gdb) gf-theme light
(gdb) gf-theme red
For switching back to the default theme.
(gdb) gf-theme
Also you may want to look to Plugin Development Tutorial.
You can access GDBFrontend's Python API via gdbfrontend module.
(gdb) python-interactive
>>> dir(gdbfrontend)
For example, you can get all client sockets like this:
>>> gdbfrontend.api.globalvars.httpServer.ws_clients
{1: <server.GDBFrontendSocket object at 0x...>}
or you can get all plugins:
>>> gdbfrontend.plugin.getAll()
['hello', 'theme_cyberpunk', 'theme_dark', 'theme_doki', 'theme_green', 'theme_light', 'theme_red', 'theme_sakura', 'theme_sky', 'theme_waifu']
You can use --credentials=USER:PASS option for adding HTTP authentication to your debugger session.
GDBFrontend is mainly developing with testing on Chromium-based browsers. It will work properly with other browsers especially with Firefox but if you face some problems on other browsers, you can send a bug-report.
Most of GDBFrontend functions are thread-safe and work on GDB's main-thread. So, if you run something that is blocking on the GDB shell, GDBFrontend functions have to wait it until finish.
You will get this warning when a thread-safe GDBFrontend function needs to work and you are blocking GDB's main thread.
(gdb) shell
$ ...

When you exit shell, blocking GDBFrontend functions will continue working.
Note: Sometimes you may get this warning without running anything in GDB shell, it means something (in GDB's event-loop) is taking a long time; in this case just ignore this warning.
GDBFrontend sends SIGTERM to i
$ claude mcp add gdb-frontend \
-- python -m otcore.mcp_server <graph>