GDBFrontend : Easy, Flexible & Extensionable GUI Debugger

GDBFrontend is an easy, flexible and extensionable gui debugger.

Installing

Deb Package (Debian / Ubuntu / KDE Neon)

You can install GDBFrontend via deb package for Debian-based distributions.

You can install it from following commands:

echo “deb [trusted=yes] https://oguzhaneroglu.com/deb/ ./” |
sudo tee -a /etc/apt/sources.list > /dev/null
sudo apt update
sudo apt install gdbfrontend

After installing with APT, you will get updates for new releases on APT upgrade.

You can get upgrades with following commands:

sudo apt update
sudo apt upgrade gdbfrontend

and you can run it:

gdbfrontend

Running From GIT

You can download latest source and run it.

Requirements

  • GDB => 8.2 (with python3)
  • python3
  • tmux

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:5551/terminal/

or without terminal:

http://127.0.0.1:5551/

You can open GDB shell with the command:

tmux a -t gdb-frontend

Flatpak

Flatpak package is a TODO.

./gdbfrontend

–help
GDBFrontend is a easy, flexible and extensionable gui debugger.
Options:

–help, -h: Shows this help message.
–version, -v: Shows version.
–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”.)
–listen=IP, -l IP: Specifies listen address for HTTP and WS servers.
–port=PORT, -p PORT: Specifies port range for three ports to (Gotty: PORT, HTTP: PORT+1, WS: PORT+2).
–http-port=PORT: Specifies HTTP server port.
–server-port=PORT: Specifies WS server port.
–gotty-port=PORT: Specifies Gotty server port.
–readonly, -r: Makes code editor readonly. (Notice: This option is not related to security.)
–verbose, -V: Enables verbose output.

Options

–help, -h
Shows help text.
–version, -v
Shows version.
–gdb-executable=PATH, -g PATH
You can specify GDB executable path like gdbfrontend –-gdb-executable=/path/to/gdb. (Optional)
–tmux-executable=PATH, -tmux PATH
You can specify Tmux executable path like gdbfrontend –tmux-executable=/path/to/tmux. (Optional)
–terminal-id=PATH, -t PATH

You can specify Tmux terminal id like gdbfrontend –terminal-id=terminal-name. (Default: gdb-frontend)
–listen=IP, -l IP
Specifies listen address for HTTP and WS servers.
–port=PORT, -p PORT
Specifies port range for three ports to (Gotty: PORT, HTTP: PORT+1, WS: PORT+2).
–http-port=PORT
Specifies HTTP server port.
–server-port=PORT
Specifies WS server port.
–gotty-port=PORT
Specifies Gotty server port.
–readonly, -r
Makes code editor readonly. (Notice: This option is not related to security.)
–verbose, -v
Enables verbose output.

Troubleshooting

Zombie Processes

Sometimes GDB and gdb-frontend may not be closed correctly. In this case, you can terminate gdb-frontend shell.

tmux kill-session -t gdb-frontend

GDB-Related Issues and Tips

  • GDB does not give sources of linked object until stepping a line that calls a function from the linked object once. You can add break point a line and step it once, then you will see sources from linked object hereafter during the session.

Windows

In 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-GDB

  • GDB’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.
  • Current release of Windows-GDB contains Python2. New GDB 9 have Python3 but it is not released yet.
R K

Recent Posts

Shadow-rs : Harnessing Rust’s Power For Kernel-Level Security Research

shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…

1 week ago

ExecutePeFromPngViaLNK – Advanced Execution Of Embedded PE Files via PNG And LNK

Extract and execute a PE embedded within a PNG file using an LNK file. The…

2 weeks ago

Red Team Certification – A Comprehensive Guide To Advancing In Cybersecurity Operations

Embark on the journey of becoming a certified Red Team professional with our definitive guide.…

3 weeks ago

CVE-2024-5836 / CVE-2024-6778 : Chromium Sandbox Escape via Extension Exploits

This repository contains proof of concept exploits for CVE-2024-5836 and CVE-2024-6778, which are vulnerabilities within…

3 weeks ago

Rust BOFs – Unlocking New Potentials In Cobalt Strike

This took me like 4 days (+2 days for an update), but I got it…

3 weeks ago

MaLDAPtive – Pioneering LDAP SearchFilter Parsing And Security Framework

MaLDAPtive is a framework for LDAP SearchFilter parsing, obfuscation, deobfuscation and detection. Its foundation is…

3 weeks ago