NOTÍCIAS

[ANONYMOUS][grids]

Web GDB GUI: Gdbgui





  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. 

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