GDBFrontend est un débogueur graphique simple, flexible et extensible. Essayez-le en ligne !
Vous pouvez installer GDBFrontend avec pip
.
sudo python3 -m pip install gdbfrontend
s'il est déjà installé et que vous effectuez une mise à niveau
sudo python3 -m pip install --upgrade gdbfrontend
ou si vous souhaitez installer un instantané GIT spécifique :
sudo python3 setup.py install
et tu peux courir
gdbfrontend
Vous pouvez télécharger la dernière source et l'exécuter.
Vous pouvez exécuter gdb-frontend avec les commandes suivantes :
git clone https://github.com/rohanrhu/gdb-frontend.git gdb-frontend
cd gdb-frontend
./gdbfrontend
et vous pouvez l'ouvrir avec :
http://127.0.0.1:5550/
Vous pouvez ouvrir le shell GDB avec la commande :
tmux a -t gdb-frontend
Vous pouvez installer le package Arch Linux pour les distributions basées sur Arch. (Forfait AUR)
yay -S gdb-frontend-bin
et vous pouvez l'exécuter :
gdbfrontend
Le package Flatpak est un TODO.
Suivez ce didacticiel pour apprendre à déboguer des applications C/C++ Dockerisées avec GDBFrontend.
Suivez ce didacticiel rapide pour déboguer les périphériques embarqués avec GDBFrontend.
Suivez ce didacticiel rapide pour déboguer les extensions C Python natives avec GDBFrontend.
GDBFrontend dispose d'API puissantes et extensibles. Suivez ce didacticiel rapide pour apprendre à développer des plugins GDBFrontend.
Suivez ce didacticiel rapide pour obtenir des idées d'intégration pour des exigences particulières de développement/débogage.
Suivez ce tutoriel pour déboguer STM32 avec OpenOCD et GDBFrontend.
GDBFrontend dispose d'un évaluateur d'expression que vous pouvez utiliser plusieurs en même temps.
Faites un clic droit sur un point d'arrêt pour définir sa condition.
Les expressions de toutes les variables, membres et éléments sont connectées dans VariablesExplorer de GDBFrontend.
Vous pouvez surveiller, filtrer ou gérer les processus avec Process Manager.
GDBFrontend dispose d'un ensemble de fonctionnalités de collaboration nommées « Collabration améliorée ».
Le tirage au sort de collaboration est disponible lorsque vous activez la collaboration améliorée. Cliquez pour dessiner ou utilisez le raccourci Ctrl + Shift + X pour dessiner et Ctrl + Shift + C pour effacer tous les dessins.
Avec Enhanced Collabration, tous les clients du débogueur sont synchronisés lors de l'affichage des sources.
GDBFrontend est très extensible et possède des API puissantes. Quelques exemples de l'extensibilité de 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
, -h
Affiche le texte d'aide.
--version
, -v
Affiche la version.
--gdb-args="ARGS", -G "ARGS"
Spécifie les arguments de ligne de commande GDB. (Facultatif)
--gdb-executable=PATH
, -g PATH
Vous pouvez spécifier le chemin de l'exécutable GDB comme gdbfrontend --gdb-executable=/path/to/gdb
. (Facultatif)
--tmux-executable=PATH
, -tmux PATH
Vous pouvez spécifier le chemin de l'exécutable Tmux comme gdbfrontend --tmux-executable=/path/to/tmux
. (Facultatif)
--terminal-id=PATH
, -t PATH
Vous pouvez spécifier l'identifiant du terminal Tmux comme gdbfrontend --terminal-id=terminal-name
. (Par défaut : gdb-frontend
)
--credentials=USER:PASS
, -c USER:PASS
Spécifie le nom d'utilisateur et le mot de passe pour accéder au débogueur.
--host=IP
, -H IP
Spécifie l'adresse de l'hôte actuelle à laquelle vous pouvez accéder via les serveurs HTTP et WS.
--listen=IP
, -l IP
Spécifie l'adresse d'écoute pour les serveurs HTTP et WS.
--port=PORT
, -p PORT
Spécifie le port HTTP. (0 pour un port aléatoire.)
--url-base=PATH
, -u PATH
Spécifie le chemin de base de l'URL. (Défaut: /)
--readonly, -r
Rend l'éditeur de code en lecture seule. (Remarque : cette option n'est pas liée à la sécurité.)
--workdir, -w
Spécifie le répertoire de travail.
--plugin-dir, -P
Spécifie le répertoire des plugins.
--dontopenuionstartup
, -D
Évite d'ouvrir l'interface utilisateur juste après le démarrage.
--verbose
, -V
Active la sortie détaillée.
Les commandes GDB de GDBFrontend commencent par gf-
.
gf-refresh
Actualise tous les clients du navigateur.
gf-theme [theme-name]
Passez au thème souhaité. Par exemple : gf-theme light
, gf-theme red
ou gf-theme default
pour le thème par défaut.
gf-list-plugins
Répertorie tous les plugins GDBFrontend dans le répertoire des plugins.
gf-load-plugin [plugin-name]
Charge le plugin GDBFrontend.
gf-unload-plugin [plugin-name]
Décharge le plugin GDBFrontend.
Les raccourcis clavier actuels sont répertoriés ci-dessous.
Action | Raccourci clavier | Contexte |
---|---|---|
Général : Ouvrir un fichier source | Ctrl + O | GDB Frontend |
Général : nouveau ExpressionEvaluator | Ctrl+R | GDB Frontend |
Général : nouveau ExpressionEvaluator sur la fenêtre native | Ctrl + Maj + R | GDB Frontend |
Général : Recherche de source floue | Ctrl+P | GDB Frontend |
Durée d'exécution : Exécuter | F5 | GDB Frontend |
Durée d'exécution : Continuer | F6 | GDB Frontend |
Durée d'exécution : Pause/Interruption | F7 | GDB Frontend |
Durée d'exécution : passer à autre chose | F8 | GDB Frontend |
Runtime : entrez dans | F9 | GDB Frontend |
Exécution : Instruction étape par étape | F10 | GDB Frontend |
Durée d'exécution : Arrêter | F11 | GDB Frontend |
Collaboration améliorée : basculer en mode dessin | Ctrl + Maj + X | GDBFrontend / Collaboration améliorée : activé |
Collaboration améliorée : effacer tous les dessins | Ctrl + Maj + C | GDBFrontend / Collaboration améliorée : activé |
GDBFrontend a des thèmes intégrés.
Pour basculer entre les thèmes, utilisez la commande gf-theme [THEME]
sur le 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
Pour revenir au thème par défaut.
(gdb) gf-theme
Vous pouvez également consulter le didacticiel de développement de plugins.
Vous pouvez accéder à l'API Python de GDBFrontend via le module gdbfrontend
.
(gdb) python-interactive
> >> dir ( gdbfrontend )
Par exemple, vous pouvez obtenir toutes les sockets client comme ceci :
> >> gdbfrontend . api . globalvars . httpServer . ws_clients
{ 1 : < server . GDBFrontendSocket object at 0 x ... > }
ou vous pouvez obtenir tous les plugins :
> >> gdbfrontend . plugin . getAll ()
[ 'hello' , 'theme_cyberpunk' , 'theme_dark' , 'theme_doki' , 'theme_green' , 'theme_light' , 'theme_red' , 'theme_sakura' , 'theme_sky' , 'theme_waifu' ]
Vous pouvez utiliser l'option --credentials=USER:PASS
pour ajouter l'authentification HTTP à votre session de débogueur.
GDBFrontend se développe principalement avec des tests sur les navigateurs basés sur Chromium. Il fonctionnera correctement avec d'autres navigateurs, notamment avec Firefox, mais si vous rencontrez des problèmes sur d'autres navigateurs, vous pouvez envoyer un rapport de bug.
La plupart des fonctions GDBFrontend sont thread-safe et fonctionnent sur le thread principal de GDB. Ainsi, si vous exécutez quelque chose qui bloque sur le shell GDB, les fonctions GDBFrontend doivent attendre la fin.
Vous recevrez cet avertissement lorsqu'une fonction GDBFrontend thread-safe doit fonctionner et que vous bloquez le thread principal de GDB.
(gdb) shell
$ ...
Lorsque vous quittez le shell, le blocage des fonctions GDBFrontend continuera à fonctionner.
Remarque : Parfois, vous pouvez recevoir cet avertissement sans rien exécuter dans le shell GDB, cela signifie que quelque chose (dans la boucle d'événements de GDB) prend beaucoup de temps ; dans ce cas, ignorez simplement cet avertissement.
GDBFrontend envoie SIGTERM à ses sous-processus, à votre application et à ses sous-processus. Si votre application crée de nouveaux processus et définit leurs PGID, GDBFrontend peut ne pas les fermer. Dans ce cas, vous devez envoyer SIGKILL à vos processus.
pkill -f gdb
Si vous utilisez ExpressionEvaluator avec des variables/membres développés en profondeur très longue, les performances de déplacement de votre fenêtre de défilement et d'évaluateur peuvent être affectées par la visualisation du pointeur. Dans cette situation, vous pouvez désactiver les pointages de signal et d’emplacement pour cette fenêtre d’évaluateur.
En fait, gdb-frontend est capable de fonctionner sous Windows, mais il existe de sérieux problèmes dans la version Windows de GDB qui évitent d'utiliser gdb-frontend sous Windows. Bien sûr, vous pouvez utiliser gdb-frontend sur WSL si vous utilisez Windows 10.
Vous pouvez utiliser gdb-frontend sur WSL (sous-système Windows pour Linux).
/proc/net/tcp
ne fonctionne pas sur WSL. (WSL 2 n'a pas ce problème.) Depuis la v0.2.0-beta, GDBFrontend est passé à une nouvelle stratégie de gestion des versions.
Dans vX.YZ-STABILITY
:
X
est une version majeure , change à long terme avec des fonctionnalités et améliorations majeures.Y
correspond aux versions principales qui incluent de nouvelles fonctionnalités et améliorations.Z
correspond aux versions de correction de bugs des versions principales.STABILITY
est le niveau de stabilité de la version. ( alpha
, beta
, rcN
, stable
) La documentation est encore TODO.
La documentation de l'API est encore TODO.
Vous pouvez lire le didacticiel de développement de plugins.
Les thèmes sont développés sous forme de plugins.
Rejoignez la communauté Discord.
Vous pouvez contribuer en vous engageant dans un projet ou en développant un plugin. Tous les commits sont les bienvenus.
Devise | Adresse |
---|---|
BTC | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
ETH/USDT/USDC | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
Il est préférable de faire un don en USDT ou USDC, mais vous pouvez faire don de l’une des devises ci-dessus. ?
Copyright (C) 2019, Oğuzhan Eroğlu [email protected] (https://oguzhaneroglu.com/)
Licence publique générale GNU v3 (GPL-3)
Vous pouvez copier, distribuer et modifier le logiciel à condition de suivre les modifications/dates dans les fichiers sources. Toute modification ou logiciel incluant (via le compilateur) du code sous licence GPL doit également être rendu disponible sous GPL avec les instructions de construction et d'installation.