Domanda

Per favore, non rispondere Dovrei usare ddd, nemiver, emacs, vim o qualsiasi altro front-end, preferisco semplicemente gdb così com'è, ma vorrei vedere il suo output con alcuni colori terminali.

È stato utile?

Soluzione

.gdbinit

Puoi modificare il tuo ~ / .gdbinit per avere colori. Puoi usare il .gdbinit di mammon che è disponibile qui:

https://github.com/gdbinit/gdbinit

Puoi modificarlo quanto vuoi. Ho trovato questo grazie a questa risposta SO . Ecco il tipo di output che puoi ottenere:

. gdbinit

È disponibile anche un repository GitHub: https://github.com/gdbinit/Gdbinit

In una nota a margine, la stessa idea era stata anche applicata a lldb .

Dashboard GDB

Seguendo lo stesso concetto, GDB Dashboard fornisce un'interfaccia visiva modulare per GDB in Python .

 Dashboard GDB

(void) walker

Un altro progetto simile utilizza il supporto Python di GDB per fornire maggiore estensibilità, quindi vale la pena dare un'occhiata: https: // github .com / dholm / Voidwalker

@dholm fornisce anche il suo .gdbinit ispirato al precedente.

(void) walker

pwndbg

Alcuni progetti forniscono una serie di funzioni utili, tra cui una migliore visualizzazione. Questo è il caso di PEDA o pwndbg . Quest'ultimo fornisce la seguente descrizione:

  

Una sostituzione PEDA. Nello spirito del nostro buon amico windbg , pwndbg è pronunciato pwnd-bag .

     
      
  • Velocità
  •   
  • Resilienza
  •   
  • Codice pulito
  •   

Fornisce comandi per supportare il debug e sfruttare lo sviluppo simile a quelli di PEDA e una migliore visualizzazione (sebbene questo non sia l'obiettivo principale del progetto). Il software è ancora in fase di sviluppo e non è stato ancora rilasciato correttamente.

 pwndbg

Voltron

La descrizione del progetto afferma:

  

Voltron è un'interfaccia utente di debugger estensibile per gli hacker. Te lo permette   associare al debugger (LLDB le viste di utilità in esecuzione in altri terminali)   o GDB), mostrando informazioni utili come lo smontaggio, lo stack   contenuti, valori di registro, ecc., pur continuando a fornirti lo stesso   CLI debugger a cui sei abituato.

Puoi modificare il tuo .gdbinit per integrarlo automaticamente. Tuttavia, il display stesso è al di fuori di GDB (ad es. In una divisione tmux).

 voltron

GEF

GEF è un'altra opzione ed è descritta come:

  

È destinato principalmente ad essere utilizzato da sfruttatori e reverse-engineer   fornire funzionalità aggiuntive a GDB utilizzando l'API Python per fornire assistenza   durante il processo di analisi dinamica e sviluppo dello sfruttamento.

 GEF

Altri suggerimenti

Non sono i colori, ma considera text gui di gdb. Fa una grande differenza su quanto sia utilizzabile gdb.

Puoi avviarlo con:

gdb -tui executable.out

Cattura schermo:

inserisci qui la descrizione dell'immagine

Come puoi vedere, le caratteristiche principali sono:

  • mostra su quale linea della fonte ci troviamo e sulle linee circostanti
  • mostra i punti di interruzione

So che non volevi un frontend. Ma che mi dici di cgdb è molto vicino a gdb, è textmode ma ha una finestra sorgente sopra con l'evidenziazione della sintassi sul codice.

È possibile migliorare notevolmente l'aspetto di gdb attraverso l'uso dei colori. Questo viene fatto tramite uno dei seguenti metodi:

  1. Prompt colorato di "quot set prompt". Ad esempio, rendere il prompt in grassetto e rosso:

    imposta prompt \ 033 [1; 31m (gdb) \ 033 [m

    o trasforma il prompt in una nuova forma, in grassetto e rosso:

    imposta prompt \ 033 [01; 31m \ n \ n ######################################## ##### > \ 033 [0m

     inserisci qui la descrizione dell'immagine

  2. Comandi colorati tramite hook

  3. Evidenziazione della sintassi colorata dell'elenco " " comando.

Tutti gli esempi sono disponibili nei seguenti post di blog scritti da Michael Kelleher:

" Beautify GDB " ;, 12 maggio 2010 (tramite archive.org)

" Evidenziazione della sintassi GDB sperimentale " ;, 15 maggio 2010 (tramite archive.org)

#into .gdbinit
shell mkfifo /tmp/colorPipe

define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-disassemble
hookpost-list
end 

define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-list
set logging off 
set logging redirect off 
shell sleep 0.1s
end 

define hook-quit
shell rm /tmp/colorPipe
end 

define re
hookpost-disassemble
echo \033[0m
end 
document re
Restore colorscheme
end 

Avviso: Buggy. Nessun supporto TUI, hack "in modalità utente".

Trovato la parte principale qui e lo ha modificato un po '. È necessario evidenziare, c ++ filt. Se i colori si incasinano, re il comando.

cgdb è molto meglio di gdb -tui

Bene, ho appena trovato questo trucco usando colout: https: / /github.com/nojhan/colout/blob/master/colout/example.gdbinit

before - after

Volevo evidenziare come segue: enfatizzare le linee di una traccia dello stack che appartengono ai miei file sorgente (piuttosto che alle librerie).

La soluzione era usare gdb-python (su MSYS; su Linux in genere gdb viene fornito con Python già incorporato?), agganciare backtrace , usare

python stack_trace = gdb.execute('backtrace', False, True')

Quindi elabora stack_trace con le regex di Python e stampale. Il grassetto e altri colori sono raggiunti da una funzione come questa:

def term_style(*v):
    """1 is bold, 30--37 are the 8 colours, but specifying bold may also
    change the colour. 40--47 are background colours."""
    return '\x1B['+';'.join(map(str, v))+'m'

#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)

Un'altra buona combinazione di colori è data da questo configurazione. Rende molto più facile l'ispezione dei backtrace. Per usarlo, basta salvare quel file come ~ / .gdbinit ed eseguire gdb normalmente

Novità nel prossimo GDB 8.3!

https: / /sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS

  

Lo stile del terminale è ora disponibile per la CLI e la TUI. Fonte GNU   L'evidenziazione può essere utilizzata anche per fornire uno stile al codice sorgente   frammenti. Vedi lo "stile impostato" comandi, di seguito, per ulteriori informazioni.

 screenshot di gdb 8.2.91.20190401-23.fc30

puoi ottenere qualsiasi colore tu voglia;

# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top