
seer snap-latest
Seer - une interface graphique frontale pour gdb
Introduction
Seer - une interface graphique pour gdb sous Linux. (Ernie Pasveer [email protected])
Ce projet est activement développé. L'objectif est une interface graphique simple, mais agréable, pour gdb.
Veuillez signaler tout bug ou fonctionnalité souhaitée à mon adresse e-mail ou créer une tâche sur ma page de projet GitHub.
Installation
Seer peut être installé soit depuis un gestionnaire de paquets, soit depuis les sources.
[!NOTE] Assurez-vous que les prérequis sont satisfaits avant l'installation.
Prérequis
-
Linux
-
C++17
-
gdb avec l'interpréteur "mi" (vérifiez en exécutant :
gdb --interpreter=mi) -
CMake (3.5.0 ou plus récent)
-
QT6
- Lors de la compilation de Seer depuis les sources, vous aurez besoin des paquets QT6 "devel" installés sur votre système pour votre distribution.
- Core
- Gui
- Widgets
- PrintSupport
- Charts
- Svg
- Les instructions de compilation Qt6 sont ici : https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
- Lors de la compilation de Seer depuis les sources, vous aurez besoin des paquets QT6 "devel" installés sur votre système pour votre distribution.
-
QT5
- Seer ne compile plus avec Qt5. L'arborescence source 2.3 est la dernière à le faire.
- Les instructions de compilation Qt5 sont ici : https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
Installer depuis un paquet
Disponible via les gestionnaires de paquets suivants :
Pamac (Manjaro)
$ pamac install seer
zypper (openSUSE Tumbleweed)
$ zypper install seergdb
Flathub
Site web Flathub. Ici
$ flatpak install flathub io.github.epasveer.seer
Flatpak
Versions bêta de Seer. Page de publication de Seer sur github.
Important : flatpak-spawn --host, nécessaire dans GDB Launcher pour exécuter gdb. Voir https://github.com/epasveer/seer/issues/377#issuecomment-3620844808.
Téléchargez seer.flatpak. Installez-le :
$ flatpak install -y --bundle --user seer.flatpak
Snap
Versions bêta de Seer. Page de publication de Seer sur github.
$ snap install seergdb_<version>.snap --dangerous
Installer depuis les sources
(Recommandé) Seer peut être compilé avec Qt6 en suivant les instructions ci-dessous.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
Il peut encore être compilé avec Qt5, pour le moment, en suivant les instructions ci-dessous.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
NOUVEAUTÉS
Consultez la page Wiki de Seer sur github.
- La version v1.17 sera la dernière version Qt5.
- La prochaine version sera la v2.0 et sera basée sur Qt6. Cependant, pour le moment, elle peut encore être compilée avec Qt5.
- Si vous voulez la dernière source Qt5 stable, récupérez la v1.17 ici : https://github.com/epasveer/seer/releases/tag/v1.17
Démarrer Seer
Seer est conçu pour démarrer facilement le programme à déboguer depuis la ligne de commande. gdb dispose de multiples méthodes pour déboguer un programme. Seer en fait donc naturellement autant.
Rendez-vous sur le Wiki pour voir toutes les façons de lancer Seer.
https://github.com/epasveer/seer/wiki/Starting-Seer
Aperçu de l'interface graphique
Exemples des différentes vues et boîtes de dialogue de Seer.
Vue principale
La vue principale de Seer ressemble à ceci :

-
Source/Fonction/Types/Variables/Bibliothèques
- La liste des fichiers source/en-tête qui ont été utilisés dans le programme.
- Recherchez des fonctions, des types et des variables statiques. Un double-clic ouvrira le fichier source.
- La liste des bibliothèques partagées référencées par le programme.
- La liste des fichiers source/en-tête peut être recherchée. Cela "réduira" la liste des fichiers affichés.
- Un double-clic sur un fichier l'ouvrira dans le gestionnaire de code.
-
Informations sur les variables/registres
- Afficher les valeurs des variables et des registres.
- "Logger" - journaliser la valeur d'une variable. Saisissez-la manuellement ou double-cliquez sur la variable dans le fichier ouvert dans le gestionnaire de code.
- "Tracker" - créer une liste de variables dont la valeur sera affichée chaque fois que gdb atteint un point d'arrêt (step, next, finish, etc.). Lorsque le point d'arrêt est atteint, toutes les variables de la liste afficheront leur nouvelle valeur potentielle.
- "Registers" - afficher les valeurs de tous les registres du processeur.
-
Gestionnaire de code.
- La grande zone de la partie centrale de l'interface graphique de Seer.
- Les fichiers source sont ouverts dans cette vue.
- Le texte d'un fichier peut être recherché avec ^F.
- Des variables peuvent être ajoutées au "Logger" en double-cliquant sur le nom de la variable. Un double-clic avec la touche CTRL enfoncée préfixera la variable par "". Un double-clic avec la touche SHIFT enfoncée préfixera la variable par "&". Un double-clic avec les touches CTRL+SHIFT enfoncées préfixera la variable par "&".
- Des variables peuvent être ajoutées au "Tracker" en sélectionnant le nom de la variable, puis clic droit et sélection de "Add variable to Tracker".
- Des variables peuvent être ajoutées au "Memory Visualizer" en sélectionnant le nom de la variable, puis clic droit et sélection de "Add variable to Memory Visualizer".
- Un point d'arrêt/point d'impression peut être créé par clic droit sur une ligne spécifique.
- Exécuter jusqu'à une ligne spécifique par clic droit sur une ligne spécifique.
- Les onglets de cette vue peuvent être détachés en double-cliquant sur un onglet.
-
Points d'arrêt, points de surveillance, points de capture, points d'impression, commandes gdb manuelles et journaux.
- La zone située sous le gestionnaire de code.
- Commandes manuelles. Saisissez manuellement une commande gdb ou gdbmi. Les commandes sont mémorisées pour la prochaine utilisation de Seer.
- Gestionnaire de points d'arrêt. Créer et gérer des points d'arrêt.
- Gestionnaire de points de surveillance. Créer et gérer des points de surveillance. Un point de surveillance surveille l'accès à une variable (lecture, écriture, lecture/écriture).
- Gestionnaire de points de capture. Créer et gérer des points de capture. Un point de capture arrête l'exécution lors d'un appel C++ throw/rethrow/catch.
- Gestionnaire de points d'impression. Créer et gérer des points d'impression. Un point d'impression est comme un point d'arrêt, mais il vous permet d'afficher des variables à ce point d'impression. Voir l'appel 'dprintf' de gdb.
- Sortie GDB. Un journal de toute sortie du programme gdb lui-même.
- Sortie Seer. Un journal de toute sortie du programme Seer lui-même. À titre de diagnostic.
- Les onglets de cette vue peuvent être détachés en double-cliquant sur un onglet.
-
Informations sur les cadres de pile.
- Liste des cadres de pile. Un double-clic sur un cadre permet de changer la portée (la fonction courante).
- Arguments des cadres de pile. Pour chaque cadre, afficher les arguments passés à chaque fonction.
- Variables locales de la pile. Pour la fonction courante, afficher les valeurs des variables locales.
-
Informations sur les threads.
- Identifiants des threads. Une liste de tous les threads. Double-cliquez sur un identifiant de thread pour changer la portée (le thread courant).
- Cadres des threads. Pour chaque thread, lister ses cadres de pile.
-
Prend en charge le mode de débogage inversé de Gdb.
- Activer ou désactiver l'enregistrement des instructions.
- Définir la direction de lecture en avant ou en arrière.
Boîte de dialogue d'ouverture
Lorsque la boîte de dialogue d'ouverture d'exécutable est invoquée, elle ressemble à ceci :

Console Seer
Toute sortie texte de l'exécutable ira dans la console Seer. La saisie de texte pour l'exécutable peut également être effectuée via la console.

Vue assembleur
Normalement, Seer affiche simplement le code source sous forme d'onglets dans le gestionnaire de code. L'assembleur du programme peut également être affiché sous forme d'onglet.
Sélectionnez "View->Assembly View" et un onglet supplémentaire sera affiché à côté des onglets de code source, montrant l'assembleur en cours d'exécution. Voici un exemple.

Comme pour les onglets de code source, des points d'arrêt peuvent être définis dans l'onglet assembleur. L'instruction courante est mise en surbrillance.
Un double-clic sur les entrées de l'onglet "Breakpoints" et de l'onglet "Stack frames" affichera l'assembleur pour ces adresses.
Il existe des raccourcis clavier "Nexti" et "Stepi", tels que définis par vos paramètres de configuration. Normalement "Ctrl+F5" et "CTRL+F6". L'utilisation de "^F" dans l'onglet assembleur affichera une puissante barre de recherche.
La fonctionnalité assembleur de Seer est nouvelle. N'hésitez pas à suggérer des modifications/fonctionnalités.
Visualiseur de mémoire
Lors de l'examen du contenu de la mémoire brute dans le visualiseur de mémoire, cela ressemble à ceci :
| Mémoire | Désassemblage |
|---|---|
![]() | ![]() |
Visualiseur de tableaux
Lors de l'examen du contenu de tableaux dans le visualiseur de tableaux, cela ressemble à ceci :
| Normal | Spline | Nuage de points |
|---|---|---|
![]() | ![]() | ![]() |
Deux tableaux peuvent être utilisés comme un graphique X-Y. Par exemple, ce simple tableau 'points' forme le contour X-Y d'une forme.
int main() {
int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
return 0;
}
| Valeurs X | Valeurs Y | Valeurs XY |
|---|---|---|
![]() | ![]() | ![]() |
Visualiseur de structures
Lors de l'examen du contenu d'une structure C/C++ ou d'une classe C++ dans le visualiseur de structures, cela ressemble à ceci. Cet exemple montre le contenu de "*this" pour la classe C++ courante dans laquelle Seer se trouve. Tous les membres de structure qui sont des types de base peuvent être modifiés.

Il existe également un Basic Struct Visualizer plus léger, mais qui ne peut pas suivre les pointeurs et ne peut pas être modifié.
Visualiseur d'images
Lors de l'examen du contenu de la mémoire brute qui est une image, le visualiseur d'images peut être utilisé.

Support/Contact
Envoyez un e-mail à [email protected] pour tout bug ou fonctionnalité. Ou créez une tâche sur ma page de projet GitHub.
Stargazers
C'est un monde merveilleux.







