Package: gdbfrontend
GDBFrontend is an easy, flexible and extensionable gui debugger.Try it online!InstallingRequirementsGDB => 8.2 (with python3)python3 => 3.6tmuxPIP Package (Python Wheel) [Recommended]You can install GDBFrontend withpip.sudopython3-mpipinstallgdbfrontendif it is already installed and you are upgradingsudopython3-mpipinstall--upgradegdbfrontendor if you want to install specific GIT snapshot:sudopython3setup.pyinstalland you can rungdbfrontendRunning From GITYou can download latest source and run it.You can run gdb-frontend with following commands:gitclonehttps://github.com/rohanrhu/gdb-frontend.gitgdb-frontendcdgdb-frontend
./gdbfrontendand you can open it with:http://127.0.0.1:5550/You can open GDB shell with the command:tmuxa-tgdb-frontendArch Linux (AUR)You can install Arch Linux package for Arch-based distributions. (AUR Package)yay-Sgdb-frontend-binand you can run it:gdbfrontendFlatpakFlatpak package is a TODO.Embedded Debugging with GDBFrontendFollowthis quick tutorialfor debugging embedded devices with GDBFrontend.Python C Extension Debugging with GDBFrontendFollowthis quick tutorialfor debugging native C Python extensions with GDBFrontend.How to develop GDBFrontend plugins?GDBFrontend has powerful and extensible APIs. Followthis quick tutorialto learn developing GDBFrontend plugins.How to integrate GDBFrontend with your Makefile?Followthis quick tutorialfor integration ideas for special development/debugging requirements.STM32 Debugging using OpenOCD, GDB & GDBFrontend on LinuxFollowthis tutorialfor debugging STM32 with OpenOCD and GDBFrontend.FeaturesExpression EvaluatorGDBFrontend has an expression evaluator that you can use multiple in sametime.Pointer VisualisationLinked-List VisualizationConditional BreakpointsRight click to a breakpoint for setting its condition.Connected ExpressionsExpressions of all variables, members and items are connected in GDBFrontend's VariablesExplorer.Process ManagerYou can watch, filter or manage processes with Process Manager.Array-Graph VisualizationEnhanced CollabrationGDBFrontend has a set of some features for collabration named as "Enhanced Collabration".Collabration DrawCollabration draw is available when you enable Enhanced Collabration. Click to Draw or useCtrl + Shift + Xshortcut to draw andCtrl + Shift + Cto clear all drawings.Synced Source ViewingWith Enhanced Collabration all debugger clients are synchronized on source viewing.Expression hover popup variable explorerExtensibilityGDBFrontend is very extensible and has powerful APIs. Some examples of GDBFrontend's extensibility../gdbfrontend$gdbfrontend--help
GDBFrontendisaeasy,flexibleandextensionableguidebugger.

Options:--help,-h:Showsthishelpmessage.--version,-v:Showsversion.--gdb-args="ARGS",-G"ARGS":SpecifiesGDBcommandlinearguments.(Optional)--gdb-executable=PATH,-gPATH:SpecifiesGDBexecutablepath(Defaultis"gdb"commandonPATHenvironmentvariable.)--tmux-executable=PATH,-tmuxPATH:SpecifiesTmuxexecutablepath(Defaultis"tmux"commandonPATHenvironmentvariable.)--terminal-id=NAME,-tNAME:Specifiestmuxterminalidentifiername(Defaultis"gdb-frontend".)--credentials=USER:PASS,-cUSER:PASS:Specifiesusernameandpasswordforaccessingtodebugger.--host=IP,-HIP:SpecifiescurrenthostaddressthatyoucanaccessviaforHTTPandWSservers.--listen=IP,-lIP:SpecifieslistenaddressforHTTPandWSservers.--port=PORT,-pPORT:SpecifiesHTTPport.(0forrandomport.)--url-base=PATH,-uPATH:SpecifiesURLbasepath.(Default:/)--readonly,-r:Makescodeeditorreadonly.(Notice:Thisoptionisnotrelatedtosecurity.)--workdir,-w:Specifiesworkingdirectory.--plugin-dir,-P:Specifiespluginsdirectory.--dontopenuionstartup,-D:AvoidsopeningUIjustafterstartup.--verbose,-V:Enablesverboseoutput.Options--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 likegdbfrontend --gdb-executable=/path/to/gdb. (Optional)--tmux-executable=PATH,-tmux PATHYou can specify Tmux executable path likegdbfrontend --tmux-executable=/path/to/tmux. (Optional)--terminal-id=PATH,-t PATHYou can specify Tmux terminal id likegdbfrontend --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.GDB CommandsGDBFrontend's GDB commands starts withgf-.gf-refreshRefreshes all browser clients.gf-theme [theme-name]Switch to desired theme. For example:gf-theme light,gf-theme redorgf-theme defaultfor 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.Shortcuts / HotkeysCurrent hotkeys are listed below.ActionHotkeyContextGeneral:Open a source fileCtrl + OGDBFrontendGeneral:New ExpressionEvaluatorCtrl + RGDBFrontendGeneral:New ExpressionEvaluator on native windowCtrl + Shift + RGDBFrontendGeneral:Fuzzy source finderCtrl + PGDBFrontendRuntime:RunF5GDBFrontendRuntime:ContinueF6GDBFrontendRuntime:Pause/InterruptF7GDBFrontendRuntime:Step OverF8GDBFrontendRuntime:Step IntoF9GDBFrontendRuntime:Step InstructionF10GDBFrontendRuntime:StopF11GDBFrontendEnhanced Collabration:Toggle drawing modeCtrl + Shift + XGDBFrontend / Enhanced Collabration: EnabledEnhanced Collabration:Clear all drawingsCtrl + Shift + CGDBFrontend / Enhanced Collabration: EnabledThemesGDBFrontend has built-in themes.For switching between themes usegf-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 redFor switching back to the default theme.(gdb) gf-themeAlso you may want to look toPlugin Development Tutorial.GDBFrontend Python APIYou can access GDBFrontend's Python API viagdbfrontendmodule.(gdb) python-interactive>>>dir(gdbfrontend)For example, you can get all client sockets like this:>>>gdbfrontend.api.globalvars.httpServer.ws_clients{1:<server.GDBFrontendSocketobjectat0x...>}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']Security with Sharing SessionsYou can use--credentials=USER:PASSoption for adding HTTP authentication to your debugger session.Browser CompatibilityGDBFrontend 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 cansend a bug-report.TroubleshootingBlocking GDB shell/main-threadMost 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.Zombie ProcessesGDBFrontend sends SIGTERM to its sub-processes, your application and its sub-processes.
If your application is forking new processes and setting their PGIDs, GDBFrontend may not close them. In this case you should send SIGKILL to your processes.pkill-fgdbExpression Evaluator Performance TipsIf you are usingExpressionEvaluatorwith very long depth expanded variables/members, your scroll and evaluator window move performance may be affected bad for pointer visualization. In this situation, you can turn offsignalandslotpointings for that evaluator window.GDB-Related Issues and TipsGDB may not give sources of dynamic linked objectuntil stepping a line that calls a function from the dynamic linked object once.
You can add break point a line and step it once, then you will see sources from dynamic linked object hereafter during the session.WindowsIn fact, gdb-frontend is able to run on Windows but there are some serious issues in the GDB's Windows version those avoid using gdb-frontend on Windows. Of course you can use gdb-frontend on WSL if you are using Windows 10.Issues about Windows-GDBGDB's main-thread is being blocked during running process. (gdb-frontend has an interrupting mechanism to fixing this but it is not enough yet.)Windows-GDB's prompt is being blocked during running process and there are some issues about interrupting the application.WSLYou can use gdb-frontend on WSL (Windows Subsystem for Linux).Issues about WSLOn WSL 1, Random port option is not usable on WSL becasue/proc/net/tcpinterface is not working on WSL. (WSL 2 does not has this problem.)VersioningSince v0.2.0-beta, GDBFrontend switched to a new versioning strategy.Reading VersionsInvX.Y.Z-STABILITY:Xismajorversions, changes long term with major features and enhancements.Yismainversions that include new features and enhancements.Zisbugfixreleases of main versions.STABILITYis stability level of the release. (alpha,beta,rcN,stable)DocumentationDocumentation is TODO yet.API DocumentationAPI Documentation is TODO yet.Plugin DevelopmentYou can read thePlugin Development Tutorial.Theme DevelopmentThemes are developed as plugins.DiscordJoin to Discord community.🎊 ContributingYou can contribute with commiting to project or developing a plugin. All commits are welcome.Contribution Guide❤️ DonatePatreonBitcoinYou can donate for supporting me :)QR CodeBitcoin address for donations3KBtYfaAT42uVFd6D2XFRDTAoErLz73vpLOther currencies:CurrencyAddressBTC3KBtYfaAT42uVFd6D2XFRDTAoErLz73vpLETH0xCa422B014A6F588606864ef2d0C40ec2E5d83DFEUSDT0xCa422B014A6F588606864ef2d0C40ec2E5d83DFEUSDC0xCa422B014A6F588606864ef2d0C40ec2E5d83DFEXMR88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUtyLicenseCopyright (C) 2019, Oğuzhan Eroğlurohanrhu2@gmail.com(https://oguzhaneroglu.com/)GNU General Public License v3 (GPL-3)You may copy, distribute and modify the software as long as you track changes/dates in source files. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build & install instructions.