GDBFrontend é um depurador de interface gráfica fácil, flexível e extensível. Experimente on-line!
Você pode instalar o GDBFrontend com pip
.
sudo python3 -m pip install gdbfrontend
se já estiver instalado e você estiver atualizando
sudo python3 -m pip install --upgrade gdbfrontend
ou se você deseja instalar um snapshot GIT específico:
sudo python3 setup.py install
e você pode correr
gdbfrontend
Você pode baixar a fonte mais recente e executá-la.
Você pode executar o gdb-frontend com os seguintes comandos:
git clone https://github.com/rohanrhu/gdb-frontend.git gdb-frontend
cd gdb-frontend
./gdbfrontend
e você pode abri-lo com:
http://127.0.0.1:5550/
Você pode abrir o shell do GDB com o comando:
tmux a -t gdb-frontend
Você pode instalar o pacote Arch Linux para distribuições baseadas em Arch. (Pacote AUR)
yay -S gdb-frontend-bin
e você pode executá-lo:
gdbfrontend
O pacote Flatpak é um TODO.
Siga este tutorial para aprender como depurar aplicativos C/C++ Dockerizados com GDBFrontend.
Siga este tutorial rápido para depurar dispositivos incorporados com GDBFrontend.
Siga este tutorial rápido para depurar extensões C Python nativas com GDBFrontend.
GDBFrontend possui APIs poderosas e extensíveis. Siga este tutorial rápido para aprender a desenvolver plugins GDBFrontend.
Siga este tutorial rápido para obter ideias de integração para requisitos especiais de desenvolvimento/depuração.
Siga este tutorial para depurar STM32 com OpenOCD e GDBFrontend.
GDBFrontend possui um avaliador de expressão que você pode usar vários ao mesmo tempo.
Clique com o botão direito em um ponto de interrupção para definir sua condição.
Expressões de todas as variáveis, membros e itens são conectadas no VariablesExplorer do GDBFrontend.
Você pode assistir, filtrar ou gerenciar processos com o Process Manager.
GDBFrontend possui um conjunto de alguns recursos para colaboração denominado "Enhanced Collabration".
O sorteio de colaboração está disponível quando você ativa a colaboração aprimorada. Clique para desenhar ou use o atalho Ctrl + Shift + X para desenhar e Ctrl + Shift + C para limpar todos os desenhos.
Com a colaboração aprimorada, todos os clientes do depurador são sincronizados na visualização da origem.
GDBFrontend é muito extensível e possui APIs poderosas. Alguns exemplos da extensibilidade do GDBFrontend.
./gdbfrontend
$ gdbfrontend --help
GDBFrontend is a easy, flexible and extensionable gui debugger.
Options:
--help, -h: Shows this help message.
--version, -v: Shows version.
--gdb-args= " ARGS " , -G " ARGS " : Specifies GDB command line arguments. (Optional)
--gdb-executable=PATH, -g PATH: Specifies GDB executable path (Default is " gdb " command on PATH environment variable.)
--tmux-executable=PATH, -tmux PATH: Specifies Tmux executable path (Default is " tmux " command on PATH environment variable.)
--terminal-id=NAME, -t NAME: Specifies tmux terminal identifier name (Default is " gdb-frontend " .)
--credentials=USER:PASS, -c USER:PASS: Specifies username and password for accessing to debugger.
--host=IP, -H IP: Specifies current host address that you can access via for HTTP and WS servers.
--listen=IP, -l IP: Specifies listen address for HTTP and WS servers.
--port=PORT, -p PORT: Specifies HTTP port. (0 for random port.)
--url-base=PATH, -u PATH: Specifies URL base path. (Default: /)
--readonly, -r: Makes code editor readonly. (Notice: This option is not related to security.)
--workdir, -w: Specifies working directory.
--plugin-dir, -P: Specifies plugins directory.
--dontopenuionstartup, -D: Avoids opening UI just after startup.
--verbose, -V: Enables verbose output.
--help
, -h
Mostra texto de ajuda.
--version
, -v
Mostra a versão.
--gdb-args="ARGS", -G "ARGS"
Especifica argumentos de linha de comando do GDB. (Opcional)
--gdb-executable=PATH
, -g PATH
Você pode especificar o caminho executável do GDB como gdbfrontend --gdb-executable=/path/to/gdb
. (Opcional)
--tmux-executable=PATH
, -tmux PATH
Você pode especificar o caminho executável do Tmux como gdbfrontend --tmux-executable=/path/to/tmux
. (Opcional)
--terminal-id=PATH
, -t PATH
Você pode especificar o ID do terminal Tmux como gdbfrontend --terminal-id=terminal-name
. (Padrão: gdb-frontend
)
--credentials=USER:PASS
, -c USER:PASS
Especifica nome de usuário e senha para acesso ao depurador.
--host=IP
, -H IP
Especifica o endereço do host atual que você pode acessar para servidores HTTP e WS.
--listen=IP
, -l IP
Especifica o endereço de escuta para servidores HTTP e WS.
--port=PORT
, -p PORT
Especifica a porta HTTP. (0 para porta aleatória.)
--url-base=PATH
, -u PATH
Especifica o caminho base do URL. (Padrão: /)
--readonly, -r
Torna o editor de código somente leitura. (Aviso: esta opção não está relacionada à segurança.)
--workdir, -w
Especifica o diretório de trabalho.
--plugin-dir, -P
Especifica o diretório de plug-ins.
--dontopenuionstartup
, -D
Evita abrir a UI logo após a inicialização.
--verbose
, -V
Ativa a saída detalhada.
Os comandos GDB do GDBFrontend começam com gf-
.
gf-refresh
Atualiza todos os clientes do navegador.
gf-theme [theme-name]
Mude para o tema desejado. Por exemplo: gf-theme light
, gf-theme red
ou gf-theme default
para o tema padrão.
gf-list-plugins
Lista todos os plugins GDBFrontend no diretório de plugins.
gf-load-plugin [plugin-name]
Carrega o plugin GDBFrontend.
gf-unload-plugin [plugin-name]
Descarrega o plugin GDBFrontend.
As teclas de atalho atuais estão listadas abaixo.
Ação | Tecla de atalho | Contexto |
---|---|---|
Geral: Abra um arquivo de origem | Ctrl + O | Front-end GDB |
Geral: Novo ExpressionEvaluator | Ctrl+R | Front-end GDB |
Geral: Novo ExpressionEvaluator na janela nativa | Ctrl + Shift + R | Front-end GDB |
Geral: localizador de fonte difusa | Ctrl+P | Front-end GDB |
Tempo de execução: Executar | F5 | Frontend GDB |
Tempo de execução: Continuar | F6 | Front-end GDB |
Tempo de execução: pausar/interromper | F7 | Front-end GDB |
Tempo de execução: passar por cima | F8 | Front-end GDB |
Tempo de execução: entre | F9 | Front-end GDB |
Tempo de execução: instrução passo | F10 | Front-end GDB |
Tempo de execução: Parar | F11 | Front-end GDB |
Colaboração aprimorada: alternar modo de desenho | Ctrl + Shift + X | GDBFrontend/Colaboração aprimorada: ativado |
Colaboração aprimorada: limpe todos os desenhos | Ctrl + Shift + C | GDBFrontend/Colaboração aprimorada: ativado |
GDBFrontend possui temas integrados.
Para alternar entre temas, use o comando gf-theme [THEME]
no shell do GDB.
(gdb) gf-theme doki
(gdb) gf-theme sky
(gdb) gf-theme sakura
(gdb) gf-theme waifu
(gdb) gf-theme cyberpunk
(gdb) gf-theme dark
(gdb) gf-theme green
(gdb) gf-theme light
(gdb) gf-theme red
Para voltar ao tema padrão.
(gdb) gf-theme
Além disso, você pode querer dar uma olhada no Tutorial de desenvolvimento de plug-ins.
Você pode acessar a API Python do GDBFrontend por meio do módulo gdbfrontend
.
(gdb) python-interactive
> >> dir ( gdbfrontend )
Por exemplo, você pode obter todos os soquetes do cliente assim:
> >> gdbfrontend . api . globalvars . httpServer . ws_clients
{ 1 : < server . GDBFrontendSocket object at 0 x ... > }
ou você pode obter todos os plug-ins:
> >> gdbfrontend . plugin . getAll ()
[ 'hello' , 'theme_cyberpunk' , 'theme_dark' , 'theme_doki' , 'theme_green' , 'theme_light' , 'theme_red' , 'theme_sakura' , 'theme_sky' , 'theme_waifu' ]
Você pode usar a opção --credentials=USER:PASS
para adicionar autenticação HTTP à sua sessão de depurador.
GDBFrontend está desenvolvendo principalmente com testes em navegadores baseados em Chromium. Funcionará corretamente com outros navegadores, especialmente com o Firefox, mas se você enfrentar alguns problemas em outros navegadores, poderá enviar um relatório de bug.
A maioria das funções do GDBFrontend são thread-safe e funcionam no thread principal do GDB. Portanto, se você executar algo que está bloqueando no shell do GDB, as funções do GDBFrontend terão que esperar até terminar.
Você receberá este aviso quando uma função GDBFrontend thread-safe precisar funcionar e você estiver bloqueando o thread principal do GDB.
(gdb) shell
$ ...
Ao sair do shell, o bloqueio das funções do GDBFrontend continuará funcionando.
Nota: Às vezes você pode receber este aviso sem executar nada no shell do GDB, isso significa que algo (no loop de eventos do GDB) está demorando muito; neste caso, simplesmente ignore este aviso.
GDBFrontend envia SIGTERM para seus subprocessos, sua aplicação e seus subprocessos. Se o seu aplicativo estiver bifurcando novos processos e configurando seus PGIDs, o GDBFrontend poderá não fechá-los. Neste caso você deverá enviar SIGKILL para seus processos.
pkill -f gdb
Se você estiver usando ExpressionEvaluator com variáveis/membros expandidos de profundidade muito longa, o desempenho de movimentação da janela de rolagem e do avaliador poderá ser afetado negativamente para a visualização do ponteiro. Nessa situação, você pode desativar os sinais e os apontamentos de slot para essa janela do avaliador.
Na verdade, o gdb-frontend é capaz de rodar no Windows, mas existem alguns problemas sérios na versão do GDB para Windows que evitam usar o gdb-frontend no Windows. Claro que você pode usar o gdb-frontend no WSL se estiver usando o Windows 10.
Você pode usar o gdb-frontend no WSL (subsistema Windows para Linux).
/proc/net/tcp
não está funcionando no WSL. (WSL 2 não tem esse problema.) Desde a v0.2.0-beta, o GDBFrontend mudou para uma nova estratégia de versionamento.
Em vX.YZ-STABILITY
:
X
é uma versão principal , muda a longo prazo com recursos e aprimoramentos importantes.Y
são versões principais que incluem novos recursos e melhorias.Z
é uma correção de bugs das versões principais.STABILITY
é o nível de estabilidade da versão. ( alpha
, beta
, rcN
, stable
) A documentação ainda é TODO.
A documentação da API ainda é TODO.
Você pode ler o Tutorial de Desenvolvimento de Plugins.
Os temas são desenvolvidos como plugins.
Junte-se à comunidade Discord.
Você pode contribuir comprometendo-se com o projeto ou desenvolvendo um plugin. Todos os commits são bem-vindos.
Moeda | Endereço |
---|---|
Bitcoin | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
ETH/USDT/USDC | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
De preferência, é recomendado doar USDT ou USDC, mas você pode doar qualquer uma das moedas acima. ?
Copyright (C) 2019, Oğuzhan Eroğlu [email protected] (https://oguzhaneroglu.com/)
Licença Pública Geral GNU v3 (GPL-3)
Você pode copiar, distribuir e modificar o software, desde que rastreie alterações/datas nos arquivos de origem. Quaisquer modificações no software, incluindo (via compilador) código licenciado pela GPL, também devem ser disponibilizadas sob a GPL junto com instruções de construção e instalação.