Introdução
Seer - uma interface gráfica para gdb para Linux. (Ernie Pasveer [email protected])
Este projeto está sendo trabalhado ativamente. O objetivo é uma interface simples, mas agradável para o gdb.
Por favor, relate quaisquer bugs ou recursos desejados para meu e-mail ou crie uma tarefa na página do meu projeto GitHub.
Instalação
O Seer pode ser instalado a partir de um gerenciador de pacotes ou do código-fonte.
Observação
Certifique-se de que os requisitos sejam atendidos antes da instalação.
Requisitos
Instalar do pacote
Disponível através dos seguintes gerenciadores de pacotes:
Pamac (Manjaro)
zypper (openSUSE Tumbleweed)
Instalar da fonte
(Recomendado) O Seer pode ser construído com Qt6 seguindo as instruções abaixo.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
Ele ainda pode ser construído com Qt5, por enquanto seguindo as instruções abaixo.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
NOTÍCIAS
Confira a página Wiki do Seer no github.
- A versão v1.17 será o último lançamento do Qt5.
- A próxima versão será v2.0 e será baseada em Qt6. No entanto, por enquanto, ainda pode ser compilado com Qt5.
- Se você deseja a fonte Qt5 estável mais recente, pegue a v1.17 aqui: https://github.com/epasveer/seer/releases/tag/v1.17
Visão geral da GUI
Exemplos das diversas visualizações e diálogos do Seer.
Vista principal
A visualização principal do Seer é assim:
Fonte/Função/Tipos/Variáveis/Bibliotecas
- A lista de arquivos de origem/cabeçalho que foram usados no programa.
- Pesquise funções, tipos e variáveis estáticas. Clicar duas vezes abrirá o arquivo de origem.
- A lista de bibliotecas compartilhadas referenciadas pelo programa.
- A lista de arquivos de origem/cabeçalho pode ser pesquisada. Isto irá "diminuir" a lista de arquivos mostrados.
- Clicar duas vezes em um arquivo irá abri-lo no Gerenciador de Código.
Informações de variável/registro
- Mostrar valores de variáveis e registros.
- "Logger" - registra o valor de uma variável. Insira-o manualmente ou clique duas vezes na variável do arquivo que está aberto no gerenciador de código.
- "Tracker" - cria uma lista de variáveis para mostrar o valor sempre que o gdb atinge um ponto de parada (etapa, próximo, término, etc.). Quando o ponto de parada for atingido, todas as variáveis na lista mostrarão seu valor potencialmente novo.
- "Registradores" - mostra os valores de todos os registros da CPU.
Gerenciador de código.
- A grande área da parte central do Vidente gui.
- Os arquivos de origem são abertos nesta visualização.
- O texto em um arquivo pode ser pesquisado com ^F.
- Variáveis podem ser adicionadas ao “Logger” clicando duas vezes no nome da variável. Clique duas vezes com a tecla CTLR pressionada para adicionar " " à variável. Clique duas vezes com a tecla SHIFT pressionada para adicionar "&" à variável. Clique duas vezes com a tecla CTRL + SHIFT pressionada para adicionar "&" à variável .
- Variáveis podem ser adicionadas ao "Tracker" selecionando o nome da variável e RMB e selecionando "Adicionar variável ao Tracker".
- As variáveis podem ser adicionadas ao "Memory Visualizer" selecionando o nome da variável e RMB e selecionando "Adicionar variável ao Memory Visualizer".
- Um ponto de interrupção/ponto de impressão pode ser criado pelo RMB em uma linha específica.
- Pode ser executado em uma linha específica por RMB em uma linha específica.
- As guias nesta visualização podem ser desanexadas clicando duas vezes em uma guia.
Pontos de interrupção, pontos de controle, pontos de captura, pontos de impressão, comandos gdb manuais e logs.
- A área abaixo do Gerenciador de Código.
- Comandos manuais. Insira manualmente um comando gdb ou gdbmi. Os comandos são lembrados para o próximo uso do Vidente.
- Gerenciador de pontos de interrupção. Crie e gerencie pontos de interrupção.
- Gerenciador de ponto de observação. Crie e gerencie pontos de controle. Um watchpoint monitora quando uma variável é acessada (leitura, gravação, leitura/gravação).
- Gerenciador de pontos de captura. Crie e gerencie pontos de captura. Um ponto de captura interrompe a execução em uma chamada C++ throw/rethrow/catch.
- Gerenciador de pontos de impressão. Crie e gerencie pontos de impressão. Um ponto de impressão é como um ponto de interrupção, mas permite imprimir variáveis nesse ponto de impressão. Veja a chamada 'dprintf' do gdb.
- Saída GDB. Um log de qualquer saída do próprio programa gdb.
- Saída do vidente. Um registro de qualquer saída do próprio programa Seer. Como diagnóstico.
- As guias nesta visualização podem ser desanexadas clicando duas vezes em uma guia.
Informações do quadro de pilha.
- Lista de quadros de pilha. Um quadro pode ser clicado duas vezes para alterar o escopo (a função atual).
- Argumentos de quadro de pilha. Para cada quadro, imprima os argumentos passados para cada função.
- Empilhe locais. Para a função atual, imprima os valores das variáveis locais.
Informações do tópico.
- IDs de tópicos. Uma lista de todos os tópicos. Clique duas vezes em um ID de thread para alterar o escopo (o thread atual).
- Quadros de rosca. Para cada thread, liste seus quadros de pilha.
Suporta o modo de depuração reversa do Gdb.
- Ative ou desative a gravação de instruções.
- Defina a direção de reprodução para avançar ou retroceder.
Abrir caixa de diálogo
Quando a caixa de diálogo executável aberta é invocada, ela se parece com isto:
Console do Vidente
Toda a saída de texto do executável irá para o console do Seer. A entrada de texto para o executável também pode ser inserida através do console.
Vista da montagem
Normalmente, o Seer mostrará apenas o código-fonte como guias no Gerenciador de código. A montagem do programa também pode ser mostrada como uma aba.
Selecione "View->Assembly View" e uma guia extra será mostrada ao lado das guias do código-fonte que mostra o assembly atual sendo executado. Aqui está um exemplo.
Assim como as guias do código-fonte, os pontos de interrupção podem ser definidos na guia Assembly. A instrução atual é destacada.
Clicar duas vezes nas entradas da guia "Breakpoints" e da guia "Stack frames" mostrará a montagem desses endereços.
Existem teclas de atalho "Nexti" e "Stepi", conforme definido pelas suas configurações. Normalmente "Ctrl+F5" e "CTRL+F6". Usar "^F" na guia de montagem mostrará uma barra de pesquisa poderosa.
O recurso de montagem no Seer é novo. Sinta-se à vontade para sugerir alterações/recursos.
Visualizador de memória
Ao observar o conteúdo da memória bruta no Memory Visualizer, fica assim:
Memória | Desmontagem |
---|
| |
Visualizador de matriz
Ao observar o conteúdo dos arrays no Array Visualizer, fica assim:
Duas matrizes podem ser usadas como um gráfico XY. Por exemplo, esta matriz simples de 'pontos' forma o contorno XY de uma forma.
int main() {
int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
return 0;
}
Valores X | Valores Y | Valores XY |
---|
| | |
Visualizador de estrutura
Ao observar o conteúdo de uma estrutura C/C++ ou de uma classe C++ no Struct Visualizer, ele se parece com isto. Este exemplo mostra o conteúdo de "*this" para a classe C++ atual em que o Seer está. Todos os membros da estrutura que são tipos básicos podem ser editados.
Há também um Basic Struct Visualizer que é mais leve, mas não pode seguir ponteiros e não pode ser editado.
Visualizador de imagens
Ao observar o conteúdo da memória bruta que é uma imagem, o Image Visualizer pode ser usado.
Iniciando o Vidente
O Seer foi projetado para iniciar facilmente o programa para depuração a partir da linha de comando. gdb possui vários métodos para depurar um programa. Então Seer naturalmente também faz isso.
Vá para o Wiki para ver todas as maneiras de executar o Seer.
https://github.com/epasveer/seer/wiki/Starting-Seer
Suporte/Contato
Envie um e-mail para [email protected] para quaisquer bugs ou recursos. Ou crie uma tarefa na página do meu projeto GitHub.