
seer snap-latest
Seer - un frontend grafico per gdb
Introduzione
Seer - un'interfaccia grafica frontend per gdb su Linux. (Ernie Pasveer [email protected])
Questo progetto è attivamente sviluppato. L'obiettivo è un'interfaccia grafica semplice ma piacevole per gdb.
Segnala eventuali bug o funzionalità desiderate alla mia email o crea un task nella mia pagina del progetto GitHub.
Installazione
Seer può essere installato tramite un gestore di pacchetti o dal sorgente.
[!NOTE] Assicurati che i requisiti siano soddisfatti prima di installare.
Requisiti
-
Linux
-
C++17
-
gdb con interprete "mi" (verifica eseguendo:
gdb --interpreter=mi) -
CMake (3.5.0 o successivo)
-
QT6
- Quando si compila Seer dal sorgente, avrai bisogno dei pacchetti "devel" QT6 installati sul tuo sistema per la tua distribuzione.
- Core
- Gui
- Widgets
- PrintSupport
- Charts
- Svg
- Le istruzioni di compilazione Qt6 sono qui: https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
- Quando si compila Seer dal sorgente, avrai bisogno dei pacchetti "devel" QT6 installati sul tuo sistema per la tua distribuzione.
-
QT5
- Seer non viene più compilato con Qt5. L'albero dei sorgenti 2.3 è l'ultimo che lo fa.
- Le istruzioni di compilazione Qt5 sono qui: https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
Installazione dal pacchetto
Disponibile tramite i seguenti gestori di pacchetti:
Pamac (Manjaro)
$ pamac install seer
zypper (openSUSE Tumbleweed)
$ zypper install seergdb
Flathub
Sito web Flathub. Qui
$ flatpak install flathub io.github.epasveer.seer
Flatpak
Versioni beta di Seer. Pagina delle release di Seer su github.
Importante: flatpak-spawn --host, necessario in GDB Launcher per eseguire gdb. Vedi https://github.com/epasveer/seer/issues/377#issuecomment-3620844808.
Scarica seer.flatpak. Installalo:
$ flatpak install -y --bundle --user seer.flatpak
Snap
Versioni beta di Seer. Pagina delle release di Seer su github.
$ snap install seergdb_<versione>.snap --dangerous
Installazione dal sorgente
(Raccomandato) Seer può essere compilato con Qt6 seguendo le istruzioni qui sotto.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
Può ancora essere compilato con Qt5, per il momento, seguendo le istruzioni qui sotto.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
NOTIZIE
Dai un'occhiata alla pagina Wiki di Seer su github.
- La versione v1.17 sarà l'ultima release Qt5.
- La prossima release sarà la v2.0 e sarà basata su Qt6. Tuttavia, per il momento, è ancora possibile compilarla con Qt5.
- Se vuoi l'ultimo sorgente Qt5 stabile, prendi la v1.17 da qui: https://github.com/epasveer/seer/releases/tag/v1.17
Avvio di Seer
Seer è pensato per avviare facilmente il programma da debuggare dalla riga di comando. gdb ha più metodi per debuggare un programma. Quindi Seer li ha naturalmente anche lui.
Vai alla Wiki per vedere tutti i modi per eseguire Seer.
https://github.com/epasveer/seer/wiki/Starting-Seer
Panoramica della GUI
Esempi delle varie viste e finestre di dialogo di Seer.
Vista Principale
La vista principale di Seer si presenta così:

-
Sorgente/Funzioni/Tipi/Variabili/Librerie
- L'elenco dei file sorgente/intestazione utilizzati nel programma.
- Cerca Funzioni, Tipi e Variabili Statiche. Il doppio clic aprirà il file sorgente.
- L'elenco delle librerie condivise referenziate dal programma.
- L'elenco dei file sorgente/intestazione può essere cercato. Questo "restringerà" l'elenco dei file mostrati.
- Il doppio clic su un file lo aprirà nel Code Manager.
-
Informazioni Variabili/Registri
- Mostra i valori di variabili e registri.
- "Logger" - registra il valore di una variabile. Inseriscilo manualmente o fai doppio clic sulla variabile nel file aperto nel code manager.
- "Tracker" - crea un elenco di variabili per mostrare il valore ogni volta che gdb raggiunge un punto di arresto (step, next, finish, ecc.). Quando viene raggiunto il punto di arresto, tutte le variabili nell'elenco mostreranno il loro potenziale nuovo valore.
- "Registers" - mostra i valori di tutti i registri della cpu.
-
Code Manager.
- La grande area della parte centrale della gui di Seer.
- I file sorgente vengono aperti in questa vista.
- Il testo in un file può essere cercato con ^F.
- Le variabili possono essere aggiunte al "Logger" facendo doppio clic sul nome della variabile. Il doppio clic con il tasto CTRL premuto anteporrà "" alla variabile. Il doppio clic con il tasto SHIFT premuto anteporrà "&" alla variabile. Il doppio clic con i tasti CTRL+SHIFT premuti anteporrà "&" alla variabile.
- Le variabili possono essere aggiunte al "Tracker" selezionando il nome della variabile e con il tasto destro del mouse selezionare "Add variable to Tracker".
- Le variabili possono essere aggiunte al "Memory Visualizer" selezionando il nome della variabile e con il tasto destro del mouse selezionare "Add variable to Memory Visualizer".
- Un breakpoint/printpoint può essere creato con il tasto destro del mouse su una riga specifica.
- Puoi eseguire fino a una riga specifica con il tasto destro del mouse su una riga specifica.
- Le schede in questa vista possono essere staccate facendo doppio clic su una scheda.
-
Breakpoints, Watchpoints, Catchpoints, Printpoints, comandi gdb manuali e log.
- L'area sotto il Code Manager.
- Comandi manuali. Inserisci manualmente un comando gdb o gdbmi. I comandi vengono ricordati per il prossimo utilizzo di Seer.
- Gestore breakpoint. Crea e gestisci i breakpoint.
- Gestore watchpoint. Crea e gestisci i watchpoint. Un watchpoint monitora quando una variabile viene acceduta (lettura, scrittura, lettura/scrittura).
- Gestore catchpoint. Crea e gestisci i catchpoint. Un catchpoint ferma l'esecuzione su una chiamata C++ throw/rethrow/catch.
- Gestore printpoint. Crea e gestisci i printpoint. Un printpoint è come un breakpoint ma ti permette di stampare variabili in quel printpoint. Vedi la chiamata 'dprintf' di gdb.
- Output GDB. Un log di qualsiasi output dal programma gdb stesso.
- Output Seer. Un log di qualsiasi output dal programma Seer stesso. Come diagnostica.
- Le schede in questa vista possono essere staccate facendo doppio clic su una scheda.
-
Informazioni sullo stack frame.
- Elenco stack frame. Un frame può essere aperto con doppio clic per cambiare l'ambito (la funzione corrente).
- Argomenti dello stack frame. Per ogni frame, stampa gli argomenti passati a ciascuna funzione.
- Variabili locali dello stack. Per la funzione corrente, stampa i valori delle variabili locali.
-
Informazioni sui thread.
- ID dei thread. Un elenco di tutti i thread. Fai doppio clic su un ID thread per cambiare l'ambito (il thread corrente).
- Frame dei thread. Per ogni thread, elenca i suoi stack frame.
-
Supporta la modalità Reverse Debugging di Gdb.
- Attiva o disattiva la registrazione delle istruzioni.
- Imposta la direzione di riproduzione su avanti o indietro.
Finestra di dialogo Apri
Quando viene invocata la finestra di dialogo dell'eseguibile aperto, si presenta così:

Console di Seer
Tutto l'output testuale dall'eseguibile andrà alla console di Seer. Anche l'input testuale per l'eseguibile può essere inserito tramite la console.

Vista Assembly
Normalmente Seer mostrerà solo il codice sorgente come schede nel Code Manager. L'assembly del programma può essere mostrato anche come scheda.
Seleziona "View->Assembly View" e una scheda extra verrà mostrata accanto alle schede del codice sorgente che mostra l'assembly corrente in esecuzione. Ecco un esempio.

Come le schede del codice sorgente, i breakpoint possono essere impostati nella scheda assembly. L'istruzione corrente è evidenziata.
Il doppio clic sulle voci nella scheda "Breakpoints" e nella scheda "Stack frames" mostrerà l'assembly per quegli indirizzi.
Ci sono i tasti rapidi "Nexti" e "Stepi", come definito dalle tue impostazioni di configurazione. Normalmente "Ctrl+F5" e "CTRL+F6". Usando "^F" nella scheda assembly verrà mostrata una potente barra di ricerca.
La funzionalità assembly in Seer è nuova. Sentiti libero di suggerire modifiche/funzionalità.
Memory Visualizer
Quando si osservano i contenuti della memoria grezza nel Memory Visualizer, si presenta così :
| Memoria | Disassembly |
|---|---|
![]() | ![]() |
Array Visualizer
Quando si osservano i contenuti degli array nell'Array Visualizer, si presenta così :
| Normale | Spline | Dispersione |
|---|---|---|
![]() | ![]() | ![]() |
Due array possono essere usati come un grafico X-Y. Ad esempio, questo semplice array 'points' forma il contorno X-Y di una forma.
int main() {
int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
return 0;
}
| Valori X | Valori Y | Valori XY |
|---|---|---|
![]() | ![]() | ![]() |
Struct Visualizer
Quando si osservano i contenuti di una struct C/C++ o di una classe C++ nello Struct Visualizer, si presenta così. Questo esempio mostra i contenuti di "*this" per la classe C++ corrente in cui si trova Seer. Tutti i membri della struttura che sono tipi base possono essere modificati.

C'è anche uno Basic Struct Visualizer più leggero, ma che non può seguire i puntatori e non può essere modificato.
Image Visualizer
Quando si osservano i contenuti della memoria grezza che è un'immagine, può essere usato l'Image Visualizer.

Supporto/Contatti
Invia un'email a [email protected] per qualsiasi bug o funzionalità. Oppure crea un task nella mia pagina del progetto GitHub.
Stargazers
È un mondo meraviglioso.







