visão dividida gdb com código


111

Eu estava apenas depurando um programa no gdb e de alguma forma encontrei um novo recurso que nunca tinha visto ou ouvido antes, uma visão dividida onde posso ver e navegar pelo código, além de dar comandos:

Desculpe pela imagem, mas ttys não tem screenshots.

O que é isso? O que eu fiz ou, mais especificamente, como posso obter esse modo de tela dividida novamente? Existe um nome para este modo ou algum lugar onde eu possa ler sobre como usá-lo?


2
Para referência rápida: Você pode sair desse modo usando qualquer um dos Cx Ca, Cx a ou Cx A.` Veja esta pergunta .
Richard

Respostas:


95

É chamado de TUI (sem brincadeira). Comece por exemplo com gdbtuiou gdb -tui...


11
você também pode usar layout nextdepois de começar gdbnormalmente
khaverim

87

Você pode acioná-lo dinamicamente pressionando ctrl+ xe ctrl+ a.


obrigado @ user146043, esta parece ser a única maneira se você estiver executando a tela ao mesmo tempo que ctrl-a é a maneira de iniciar os comandos da tela!
olik79

Parece que você também pode fechar com esse combo!
Nick Desaulniers



15

Painel GDB

https://github.com/cyrus-and/gdb-dashboard

O painel do GDB usa a API GDB Python oficial e imprime as informações que você deseja quando o GDB para, por exemplo, após um next, como o displaycomando nativo .

Vs TUI:

  • mais robusto, pois ele apenas imprime em stdout em vez de colocar o shell em um estado de maldições mágicas, por exemplo:

  • altamente configurável do Python: você pode selecionar o que deseja produzir e o tamanho de cada seção, dependendo do que você está depurando.

    As visualizações mais úteis já estão implementadas: fonte, montagem, registros, pilha, memória, threads, expressões ... mas deve ser fácil estendê-las com qualquer informação que é exposta na API GDB Python.

    A TUI só permite mostrar duas fontes, assembly e registradores e pronto. A menos que você queira modificar seu código-fonte C, é claro ;-)

insira a descrição da imagem aqui

Eu acredito que o GDB deve ser fornecido com uma configuração assim fora da caixa e ativado por padrão, ele atrairia muito mais usuários dessa forma.

Ah, e o desenvolvedor principal, Andrea Cardaci , tem sido muito responsivo e incrível. Muitos elogios.

Consulte também: Como destacar e colorir a saída do gdb durante a depuração interativa?


2
Não há palavras suficientes para descrever como isso é incrível. Obrigado :)
unresolved_external

11

Digite layoutcomo um comando em gdb e a janela dividida será exibida.


5

Quando o GDB está no modo padrão, o uso winmuda automaticamente para o modo TUI.
Outro comando para o modo TUI:

  • info win
    Liste e forneça o tamanho de todas as janelas exibidas.
  • focus next | prev | src | asm | regs | split
    Defina o foco para a janela nomeada. Este comando permite mudar a janela ativa para que as teclas de rolagem possam ser afetadas para outra janela.

Leia aqui mais ajuda.


2

Também existe uma ferramenta de interface para GDB chamada cgdb. Mesmo com algum destaque de cor. "ESC" para mudar para a visualização do código, "i" para voltar para gdb

cgdb


1

O modo tui foi claramente inspirado no emacs - descobri por acidente quando bati em ^ Xo, que alterna entre janelas divididas no emacs - às vezes bati nisso distraidamente quando o que deveria fazer é mudar para um programa diferente. De qualquer forma, isso leva a outro recurso não mencionado ainda, que você pode mover o cursor da janela de código (onde você pode rolar) para a linha de comando, ou vice-versa, com ^ Xo.


Obviamente, a maioria dos programas do GNU tem emacs como atalhos de teclado, principalmente por motivos de consistência. Eu sei que existe um modo vi no bash, mas isso não é nem de perto bom o suficiente como o modo emacs.
klaus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.