
☕ GDBFrontend è un debugger GUI facile, flessibile ed estensibile.

GDBFrontend è un debugger GUI facile, flessibile ed estensibile.

Puoi installare GDBFrontend con pip.
sudo python3 -m pip install gdbfrontend
se è già installato e stai eseguendo un aggiornamento
sudo python3 -m pip install --upgrade gdbfrontend
oppure se vuoi installare uno snapshot GIT specifico:
sudo python3 setup.py install
e puoi eseguire
gdbfrontend
Puoi scaricare l'ultima versione del sorgente ed eseguirla.
Puoi eseguire gdb-frontend con i seguenti comandi:
git clone https://github.com/rohanrhu/gdb-frontend.git gdb-frontend
cd gdb-frontend
./gdbfrontend
e puoi aprirlo con:
http://127.0.0.1:5550/
Puoi aprire la shell GDB con il comando:
tmux a -t gdb-frontend
Puoi installare il pacchetto Arch Linux per le distribuzioni basate su Arch. (Pacchetto AUR)
yay -S gdb-frontend-bin
e puoi eseguirlo:
gdbfrontend
Il pacchetto Flatpak è un TODO.
Segui questo tutorial per imparare a eseguire il debug di app C/C++ dockerizzate con GDBFrontend.
Segui questo tutorial rapido per il debug di dispositivi embedded con GDBFrontend.
Segui questo tutorial rapido per il debug di estensioni Python C native con GDBFrontend.
GDBFrontend dispone di API potenti ed estensibili. Segui questo tutorial rapido per imparare a sviluppare plugin per GDBFrontend.
Segui questo tutorial rapido per idee di integrazione per esigenze speciali di sviluppo/debug.
Segui questo tutorial per il debug di STM32 con OpenOCD e GDBFrontend.
GDBFrontend ha un valutatore di espressioni che puoi utilizzare più volte contemporaneamente.



Fai clic destro su un punto di interruzione per impostarne la condizione.


Le espressioni di tutte le variabili, membri e elementi sono connesse in VariablesExplorer di GDBFrontend.

Puoi osservare, filtrare o gestire i processi con il Process Manager.


GDBFrontend ha un insieme di funzionalità per la collaborazione chiamate "Collaborazione avanzata".

Il disegno collaborativo è disponibile quando si abilita la Collaborazione avanzata. Fare clic su Disegna o usare la scorciatoia Ctrl + Shift + X per disegnare e Ctrl + Shift + C per cancellare tutti i disegni.

Con la Collaborazione avanzata, tutti i client del debugger sono sincronizzati nella visualizzazione del sorgente.

GDBFrontend è molto estensibile e dispone di potenti API. Alcuni esempi dell'estendibilità di GDBFrontend.


./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, -hMostra il testo di aiuto.
--version, -vMostra la versione.
--gdb-args="ARGS", -G "ARGS"Specifica gli argomenti della riga di comando di GDB. (Opzionale)
--gdb-executable=PATH, -g PATHPuoi specificare il percorso dell'eseguibile di GDB come gdbfrontend --gdb-executable=/path/to/gdb. (Opzionale)
--tmux-executable=PATH, -tmux PATHPuoi specificare il percorso dell'eseguibile di Tmux come gdbfrontend --tmux-executable=/path/to/tmux. (Opzionale)
--terminal-id=PATH, -t PATHPuoi specificare l'ID del terminale Tmux come gdbfrontend --terminal-id=terminal-name. (Predefinito: gdb-frontend)
--credentials=USER:PASS, -c USER:PASSSpecifica nome utente e password per accedere al debugger.
--host=IP, -H IPSpecifica l'indirizzo host corrente a cui puoi accedere per i server HTTP e WS.
--listen=IP, -l IPSpecifica l'indirizzo di ascolto per i server HTTP e WS.
--port=PORT, -p PORTSpecifica la porta HTTP. (0 per porta casuale.)
--url-base=PATH, -u PATHSpecifica il percorso base dell'URL. (Predefinito: /)
--readonly, -rRende l'editor di codice in sola lettura. (Nota: questa opzione non è correlata alla sicurezza.)
--workdir, -wSpecifica la directory di lavoro.
--plugin-dir, -PSpecifica la directory dei plugin.
--dontopenuionstartup, -DEvita di aprire l'interfaccia utente subito dopo l'avvio.
--verbose, -VAbilita l'output verboso.
I comandi GDB di GDBFrontend iniziano con gf-.
gf-refreshAggiorna tutti i client del browser.
gf-theme [theme-name]Passa al tema desiderato. Per esempio: gf-theme light, gf-theme red o gf-theme default per il tema predefinito.
gf-list-pluginsElenca tutti i plugin di GDBFrontend nella directory dei plugin.
gf-load-plugin [plugin-name]Carica un plugin di GDBFrontend.
gf-unload-plugin [plugin-name]Scarica un plugin di GDBFrontend.
Le hotkey attuali sono elencate di seguito.
GDBFrontend ha temi integrati.
Per passare da un tema all'altro usa il comando gf-theme [TEMA] sulla shell GDB.
(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
Per tornare al tema predefinito.
(gdb) gf-theme
Inoltre, potresti voler dare un'occhiata al Tutorial sullo sviluppo di plugin.
Puoi accedere all'API Python di GDBFrontend tramite il modulo gdbfrontend.
(gdb) python-interactive
>>> dir(gdbfrontend)
Ad esempio, puoi ottenere tutti i socket client in questo modo:
>>> gdbfrontend.api.globalvars.httpServer.ws_clients
{1: <server.GDBFrontendSocket object at 0x...>}
oppure puoi ottenere tutti i plugin:
>>> gdbfrontend.plugin.getAll()
['hello', 'theme_cyberpunk', 'theme_dark', 'theme_doki', 'theme_green', 'theme_light', 'theme_red', 'theme_sakura', 'theme_sky', 'theme_waifu']
Puoi usare l'opzione --credentials=USER:PASS per aggiungere l'autenticazione HTTP alla tua sessione di debug.
GDBFrontend viene sviluppato principalmente testandolo su browser basati su Chromium. Funzionerà correttamente con altri browser, specialmente con Firefox, ma se incontri qualche problema su altri browser, puoi inviare una segnalazione di bug.
La maggior parte delle funzioni di GDBFrontend sono thread-safe e lavorano sul main-thread di GDB. Quindi, se esegui qualcosa che blocca la shell GDB, le funzioni di GDBFrontend devono attendere fino al termine.
Riceverai questo avviso quando una funzione thread-safe di GDBFrontend deve lavorare e stai bloccando il main-thread di GDB.
(gdb) shell
$ ...

Quando esci dalla shell, le funzioni di GDBFrontend in attesa continueranno a funzionare.
Nota: A volte puoi ricevere questo avviso senza aver eseguito nulla nella shell GDB, significa che qualcosa (nel ciclo di eventi di GDB) sta richiedendo molto tempo; in questo caso ignora semplicemente l'avviso.
GDBFrontend invia SIGTERM ai suoi sotto-processi, alla tua applicazione e ai suoi sotto-processi. Se la tua applicazione genera nuovi processi e imposta i loro PGID, GDBFrontend potrebbe non chiuderli. In questo caso, dovresti inviare SIGKILL ai tuoi processi.
pkill -f gdb
Se stai usando ExpressionEvaluator con variabili/membri espansi a profondità molto lunga, le prestazioni di scorrimento e spostamento della finestra del valutatore potrebbero essere influenzate negativamente per la visualizzazione dei puntatori. In questa situazione, puoi disattivare i puntamenti signal e slot per quella finestra del valutatore.

In effetti, gdb-frontend è in grado di funzionare su Windows, ma ci sono alcuni seri problemi nella versione Windows di GDB che impediscono l'uso di gdb-frontend su Windows. Certo, puoi usare gdb-frontend su WSL se usi Windows 10.
Puoi usare gdb-frontend su WSL (Windows Subsystem for Linux).
/proc/net/tcp non funziona su WSL. (WSL 2 non ha questo problema.)Dalla v0.2.0-beta, GDBFrontend è passato a una nuova strategia di versionamento.
In vX.Y.Z-STABILITÀ:
X sono le versioni major, cambiamenti a lungo termine con funzionalità e miglioramenti importanti.Y sono le versioni main che includono nuove funzionalità e miglioramenti.Z sono le versioni bugfix delle versioni main.STABILITÀ è il livello di stabilità della release. (alpha,beta,rcN,stable)La documentazione è ancora TODO.
La documentazione delle API è ancora TODO.
Puoi leggere il Tutorial sullo sviluppo di plugin.
I temi sono sviluppati come plugin.
Unisciti alla community Discord.
Puoi contribuire facendo commit al progetto o sviluppando un plugin. Tutti i commit sono benvenuti.
| Valuta | Indirizzo |
|---|---|
| BTC | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
| ETH / USDT / USDC | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
| XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
Preferibilmente, si consiglia di donare USDT o USDC, ma puoi donare una qualsiasi delle valute sopra elencate. 🥳
Copyright (C) 2019, Oğuzhan Eroğlu [email protected] (https://oguzhaneroglu.com/)
GNU General Public License v3 (GPL-3)
Puoi copiare, distribuire e modificare il software purché tenga traccia delle modifiche/delle date nei file sorgente. Qualsiasi modifica o software che includa (tramite compilatore) codice con licenza GPL deve essere reso disponibile anche sotto GPL insieme alle istruzioni di compilazione e installazione.
| Azione | Scorciatoia | Contesto |
|---|
| Generale: Apri un file sorgente | Ctrl + O | GDBFrontend |
| Generale: Nuovo ExpressionEvaluator | Ctrl + R | GDBFrontend |
| Generale: Nuovo ExpressionEvaluator in finestra nativa | Ctrl + Shift + R | GDBFrontend |
| Generale: Cerca sorgente fuzzy | Ctrl + P | GDBFrontend |
| Esecuzione: Esegui | F5 | GDBFrontend |
| Esecuzione: Continua | F6 | GDBFrontend |
| Esecuzione: Pausa/Interrompi | F7 | GDBFrontend |
| Esecuzione: Passa sopra | F8 | GDBFrontend |
| Esecuzione: Entra | F9 | GDBFrontend |
| Esecuzione: Istruzione passo | F10 | GDBFrontend |
| Esecuzione: Ferma | F11 | GDBFrontend |
| Collaborazione avanzata: Attiva/disattiva modalità disegno | Ctrl + Shift + X | GDBFrontend / Collaborazione avanzata: Abilitata |
| Collaborazione avanzata: Cancella tutti i disegni | Ctrl + Shift + C | GDBFrontend / Collaborazione avanzata: Abilitata |