Pergunta

Por favor, não responda eu deveria usar ddd, nemiver, emacs, vim, ou qualquer outro front-end, eu prefiro gdb como ele é, mas gostaria de ver a sua saída com algumas cores terminais.

Foi útil?

Solução

.gdbinit

Você pode ajustar o seu ~/.gdbinit ter cores. Você pode usar .gdbinit de Mamom que está disponível aqui:

https://github.com/gdbinit/gdbinit

Você pode ajustá-lo tanto quanto você quer também. Eu achei isso graças a este SO resposta . Aqui é o tipo de saída que você pode obter:

gdbinit

repositório

A GitHub também está disponível: https://github.com/gdbinit/Gdbinit

Em uma nota lateral, a mesma idéia também foi aplicada a LLDB .

GDB Painel

Seguindo o mesmo conceito, GDB Painel fornece uma interface visual modular para GDB em Python .

 GDB dashboard

(void) walker

Outro projeto semelhante usa o suporte Python do GDB para fornecer mais extensibilidade, assim que este vale a pena conferir: https: // github .com / dholm / voidwalker

@dholm também fornece seu próprio .gdbinit inspirado da anterior.

(void) walker

pwndbg

Alguns projetos fornecer um conjunto de funções úteis, incluindo uma melhor exibição. Este é o caso para PEDA ou pwndbg . Este último dá a seguinte descrição:

substituição Um PEDA. No espírito do nosso bom amigo windbg, pwndbg é pwnd-bag pronunciado.

  • Velocidade
  • Resiliência
  • código limpo

Ele fornece comandos para suporte a depuração e explorar o desenvolvimento semelhantes aos de PEDA, e melhor visualização (embora este não é o foco principal do projeto). O software ainda está em desenvolvimento, e não foi devidamente lançado ainda.

 pwndbg

voltron

projeto Descrição estados:

Voltron é uma UI depurador extensível para hackers. Ele permite que você anexar visualizações de serviços públicos em execução em outros terminais para o depurador (LLDB ou GDB), exibindo informações úteis, tais como desmontagem, pilha conteúdos, cadastre-se valores, etc, enquanto continua a dar-lhe o mesmo depurador CLI que você está acostumado.

Você pode modificar o seu .gdbinit para integrá-lo automaticamente. No entanto, o próprio mostrador está fora de GDB (por exemplo, numa divisão tmux).

 Voltron

GEF

GEF é outra opção, e é descrito como:

Pretende-se a ser utilizado principalmente por exploradores e engenheiros reversos, a fornecer recursos adicionais para GDB usando a API do Python para ajudar durante o processo de análise dinâmica e explorar o desenvolvimento.

 GEF

Outras dicas

Não é cores, mas considere texto do gdb gui . Faz uma grande diferença em como gdb utilizável é.

Você pode iniciá-lo com:

gdb -tui executable.out

Captura de tela:

enter descrição da imagem aqui

Como você pode ver, as principais características são:

  • mostra o que linha da fonte estamos no e linhas circundantes
  • mostra pontos de interrupção

Eu sei que você não queria um frontend. Mas como sobre cgdb é muito perto de gdb, é textmode mas tem uma janela de origem acima, com destaque de sintaxe no código.

É possível aumentar consideravelmente a aparecer de gdb através do uso de cores. Isto é feito através de qualquer um dos seguintes métodos:

  1. Colorized rápida através do "set prompt". Por exemplo, fazer o prompt negrito e vermelho:

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

    ou fazer a solicitação de uma nova forma, negrito e vermelho:

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

    enter descrição da imagem aqui

  2. comandos Colorized via ganchos

  3. Colorized destaque de sintaxe do comando "list".

Todos os exemplos estão disponíveis nos seguintes posts escritos por Michael Kelleher:

"Embeleze GDB", Maio 12, 2010 (via archive.org)

"Sintaxe Experimental GDB destacando" , 15 de maio, 2010 (via 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 

Atenção: Buggy. Não há suporte TUI, 'user-mode' hack.

Encontrou a parte principal aqui e modificou um pouco. Necessidades destacar, c ++ filt. Se as cores ficar confuso questão re comando.

cgdb é muito melhor do que gdb -tui

Neat, eu só encontrei este hack usando colout: https: / /github.com/nojhan/colout/blob/master/colout/example.gdbinit

antes - depois

Eu queria destacar as seguintes:. Enfatizar as linhas de um rastreamento de pilha que pertencem aos meus arquivos de origem (em vez de bibliotecas)

A solução foi usar gdb-python (em MSYS;? Em Linux normalmente gdb vem com Python embutido já), backtrace gancho, uso

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

stack_trace processo Então, com expressões regulares do Python, e imprimi-los. Cores fortes e outros são alcançados por uma função como esta:

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)

Outra boa combinação de cores é dada por este configuração. Ela torna inspecionar os backtraces muito mais fácil. Para usá-lo, basta salvar o arquivo como ~/.gdbinit e executar gdb normalmente

Novo nos próximos GDB 8.3!

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

styling Terminal está agora disponível para o CLI ea TUI. GNU Fonte Destaque pode ainda ser usado para fornecer um estilo de código fonte trechos. Veja os comandos "set estilo", abaixo, para obter mais informações.

captura de tela do gdb 8.2.91.20190401-23.fc30

você pode obter cores que você quer;

# 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top