Um frontend moderno baseado em navegador para gdb (depurador gnu). Adicione pontos de interrupção, veja traços de pilha e mais em C, C ++, Go e Rust! Basta executar o gdbgui do terminal e uma nova aba será aberta em sua navegação
aracterísticas
Depurar um programa diferente em cada guia (nova instância gdb é gerada para cada guia)
Definir / remover pontos de interrupção
Ver pilha, tópicos
Alterar o quadro na pilha, alternar entre os segmentos
Inspecionar a memória no formulário hexadecimal / caractere
Exibir todos os registros
Deslocamento de todos os arquivos usados para compilar binário, com funcionalidade de autocompletar
Explorador de código fonte com habilidade de saltar para a linha
Mostrar montagem ao lado do código-fonte, destacando as instruções atuais. Também pode seguir as instruções.
Depurar um programa diferente em cada guia (nova instância gdb é gerada para cada guia)
Definir / remover pontos de interrupção
Ver pilha, tópicos
Alterar o quadro na pilha, alternar entre os segmentos
Inspecionar a memória no formulário hexadecimal / caractere
Exibir todos os registros
Deslocamento de todos os arquivos usados para compilar binário, com funcionalidade de autocompletar
Explorador de código fonte com habilidade de saltar para a linha
Mostrar montagem ao lado do código-fonte, destacando as instruções atuais. Também pode seguir as instruções.
Web GDB GUI: gdbgui
Como funciona?
Ele usa o Python para gerenciar o gdb como um subprocesso. Especificamente, a biblioteca pygdbmi, que retorna os pares chave / valor (dicionários) que podem ser usados para criar um frontend. Para fazer um frontend utilizável, primeiro um servidor deve fazer interface com gdb. Neste caso, o servidor Flask é usado, o que faz três coisas: cria um subprocesso gdb gerenciado com pygdbmi, engendra um segmento separado para verificar constantemente a saída do subprocesso gdb e cria pontos finais para o navegador, incluindo solicitações http e conexões web.
Como a saída é analisada no fio do leitor, ela é imediatamente enviada para o frontend através do websocket. À medida que o navegador recebe essas mensagens de websocket, ele mantém o estado do gdb (seja executado, pausado ou exitado, onde os pontos de interrupção são, o que é a pilha, etc.) e atualiza os DOM conforme apropriado. Claro, o navegador também envia comandos para o gdb através do servidor Flask, o que ele faz conforme necessário quando vários botões são pressionados ou quando o usuário entra em um comando de linha de comando. O servidor também tem acesso ao sistema de arquivos, de modo que o cliente pode mostrar o código fonte de qualquer arquivo.
O gdbgui foi projetado para ser facilmente hackeável e extensível. Não existe um sistema de compilação necessário para executar ou desenvolver este aplicativo.
Os principais componentes do gdbgui são
backend.py: o backend consiste em um único arquivo Python, que faz uso de pygdbmi para interagir com um subprocesso gdb e o Flask para configurar o roteamento de url, websockets e respostas http.
gdbgui.pug: arquivo HTML que define o frontend
gdbgui.js: A maioria do aplicativo está contido neste arquivo. Se atualizar dinamicamente a página e manter o estado gdb. Ele envia solicitações AJAX e usa websockets para interagir com o gdb através do servidor, depois recebe a resposta e atualiza o DOM conforme necessário.
gdbgui.css: folha de estilo css
Por que gdbgui?
Desenvolvido e compatível com a versão mais recente do gdb (7.12)
Apenas uma coisa: depura programas. Sem sistema de compilação integrado, sem configurações de projeto, nada para tornar as coisas mais complicadas do que precisam ser. Apenas uma frente leve.
Design influenciado pelo incrível depurador do Chrome: código fonte à esquerda, painel lateral à direita com widgets encapsuláveis, console no fundo.
Utilitário de linha de comando completo gdb criado em
Escrito em idiomas amplamente utilizados (Python e JavaScript) Opções de
código aberto e livre opcional argumentos posicionais:> comando: (Opcional) O binário e argumentos para executar no gdb. Esta é uma maneira de script o carregamento inicial do binário inferior que deseja depurar. Por exemplo, gdbgui ./mybinary -myarg -flag1 -flag2 argumentos opcionais: -h, -help
mostre esta mensagem de ajuda e saia
-p PORT, -port PORT
A porta na qual o gdbgui será hospedado
-host HOST O endereço IP do host no qual o gdbgui é servido.
-g GDB, -gdb GDB
Path para gdb executável.
-v, -version Versão de impressão
-debug A bandeira de depuração deste aplicativo do Flask. Passe este sinalizador ao depurar o próprio gdbgui para recarregar automaticamente o servidor quando as mudanças são detectadas -
nenhum navegador Por padrão, o navegador será aberto com gdb gui. Passe esta bandeira para que o navegador não abra.
Compatibilidade
gdbgui foi testado para funcionar nesses ambientes. Pode também funcionar em outros ambientes.
Versões de Python: 2,7, 3,4, 3,5, pypy
Sistemas operacionais: Ubuntu 14.04, Ubuntu 16.04,
Navegadores OSX : Chrome, Firefox, Ubuntu Web Browser
Gdb: 7.7.1 (testado), 7.12 (testado), provavelmente funciona com versões intermediárias