O GDB (também conhecido como depurador GNU Project) é um software de linha de comando de software livre que permite aos usuários e desenvolvedores ver o que está acontecendo dentro de outro programa, enquanto executado, ou porque um aplicativo está falhando em um determinado ponto.
Recursos em resumo
Os principais recursos incluem quatro técnicas diferentes para ajudar os desenvolvedores a detectar bugs, iniciar um aplicativo e especificar qualquer coisa que possa afetar seu comportamento, fazer um programa parar em condições especificadas, examinar os logs quando o aplicativo falha, mudar gradualmente as coisas um programa para experimentar a correção dos efeitos de um problema e continuar aprendendo sobre outro bug. Ele também suporta a depuração de programas escritos em uma ampla gama de linguagens de programação, incluindo C, C ++, Pascal. , Ada, Objective-C e muitos outros.
É um aplicativo de linha de comando
O depurador do Projeto GNU é sempre um aplicativo de linha de comando. Para usá-lo, você deve executar o & ldquo; gdb & rdquo; comando em um emulador de terminal, em seguida, execute o & ldquo; help & rdquo; comando (sem aspas) a prompt do gdb. Além disso, você também pode digitar o & ldquo; help all & rdquo; comando para ver uma lista de todos os comandos, digite "help" seguido por nome de comando para visualizar a documentação completa, digite "help" seguido por um nome de classe para visualizar uma lista de comandos nessa classe, digite "apropos word" para pesquisar para comandos relacionados a "palavra".
Lista de classes de comandos
Depois de digitar o & ldquo; help & rdquo; comando como descrito acima, você verá uma lista de classes de comandos, incluindo aliases (exibe aliases de outros comandos), pontos de interrupção (faz o programa parar em determinados pontos), dados (para examinar dados), arquivos (para examinar arquivos) , internos (comandos de manutenção), obscuros (recursos obscuros), em execução (para executar o programa), pilha (para examinar a pilha), status (para consultas de status), suporte (para instalações de suporte), pontos de rastreio (para rastrear a execução do programa sem parar o programa) e definido pelo usuário (comandos definidos pelo usuário).
Plataformas de hardware e sistemas operacionais suportados
O GDB foi projetado a partir do deslocamento para ser um aplicativo de plataforma cruzada, sendo executado em sistemas operacionais comuns, como o Microsoft Windows e algumas das variantes Linux / UNIX mais populares. É suportado em plataformas de hardware de 32 e 64 bits.
O que há de novo nesta versão:
- PR gdb / 22824 (descrição enganosa da nova função rbreak do Python no arquivo GDB 8.1 NEWS)
- PR gdb / 22849 (ctrl-c não funciona em remoto estendido)
- PR gdb / 22907 ([Regressão] gdbserver não funciona com binários somente de nome de arquivo)
- PR gdb / 23028 (desmontagem inconsistente de vcvtpd2dq)
- PR gdb / 23053 (Corrigir -D_GLIBCXX_DEBUG gdb-add-index regressão)
- PR gdb / 23127 ([AArch64] GDB não pode ser usado para depurar softwares que usam endereços virtuais altos)
- Servidor PR / 23158 (gdbserver não funciona mais no Windows)
- Pontos de interrupção PR / 23210 ([Regressão 8.1 / 8.2] Endereço de Ponto de Interrupção Bogus ajustado de 0xf7fe7dd3 para 0xfffffffff7fe7dd3)
O que há de novo na versão 8.1:
- Os pontos de interrupção em funções C ++ agora são definidos em todos os escopos por padrão (correspondência "wild");
- Suporte para inserção de pontos de interrupção em funções marcadas com tags ABI C ++;
- Emulação aritmética de ponto flutuante de destino durante a avaliação de expressão (requer MPFR 3.1 ou posterior);
- Vários aprimoramentos do script Python;
- Suporte melhorado à ferrugem; em particular, os objetos de Traço agora podem ser inspecionados ao depurar o código Rust;
- O GDB não faz mais suposições sobre o tipo de símbolos sem depurar informações para evitar produzir resultados errôneos e muitas vezes confusos;
- Os comandos 'enable' e 'disable' agora aceitam vários locais de ponto de interrupção;
- Novo comando 'starti' para iniciar o programa na primeira instrução;
- Novo comando 'rbreak' para inserir vários pontos de interrupção por meio de um padrão de expressão regular (requer Python);
- O comando 'ptype' agora suporta a impressão do deslocamento e tamanho dos campos em uma estrutura;
- O comando 'gcore' agora suporta o despejo de todos os mapeamentos de memória (opção de linha de comando '-a');
- Novos atalhos para o modo de chave única da TUI: 'i' para stepi e 'o' para nexti;
- Aprimoramentos do GDBserver:
- Suporte para transmitir variáveis de ambiente para o GDBserver;
- Suporte para iniciar processos inferiores com um diretório de trabalho inicial especificado;
- Em sistemas Unix, suporte para expansão de globbing e substituição de variáveis de argumentos de linha de comando inferiores;
- Vários aprimoramentos de conclusão;
- O comando usado para compilar e injetar código com o comando 'compile' agora é configurável;
- Nova opção de linha de comando '--readnever' para acelerar a inicialização do GDB quando as informações de depuração não são necessárias;
- Suporte para as novas configurações nativas a seguir:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- Suporte para os novos alvos a seguir:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- OpenRISC ELF (or1k * - * - elf)
- Suporte removido para os seguintes destinos e configurações nativas:
- Solaris2 / x86 (i? 86 - * - solaris2. [0-9]);
- Solaris2 / sparc (sparc * - * - solaris2. [0-9]);
O que há de novo na versão:
- Construir esta versão do GDB agora requer as seguintes ferramentas:
- Um compilador C ++ - 11 (por exemplo, GCC 4.8 ou posterior);
- O GNU faz a versão 3.81 ou posterior.
- As alterações nesta versão incluem:
- C ++: suporte para referências de valor
- Aprimoramentos de script do Python:
- Novas funções para iniciar, parar e acessar uma gravação btrace em execução.
- Suporte de referência de valor em gdb.Type.
- Interpretador de comandos do GDB:
- Os comandos do usuário agora aceitam um número ilimitado de argumentos.
- O & quot; eval & quot; O comando agora expande os argumentos definidos pelo usuário.
- Suporte da versão 5 do DWARF
- (observe que seu índice .debug_names ainda não é suportado).
- Aprimoramentos do GDB / MI:
- Novo comando -file-list-shared-libraries para listar as bibliotecas compartilhadas no programa.
- Novo comando -target-flash-erase, para apagar a memória flash.
- Suporte para o FreeBSD nativo / mips (mips * - * - freebsd)
- Suporte para os seguintes destinos:
- Synopsys ARC (arc * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Aprimoramentos diversos:
- Redirecionamento de linha de comando agora é suportado em hosts MS-Windows.
- Suporte para nomes de threads no MS-Windows.
- Suporte para o registro PKU no GNU / Linux.
- Suporte para descrições de alvos em sparc32 e sparc64.
- Novo comando do GDB / CLI para apagar a memória flash
- instruções de rdrand e rdseed para gravar / reproduzir suporte.
- O suporte para os seguintes recursos foi removido:
- Suporte para programas Java compilados com gcj
- Suporte para as seguintes configurações:
- FreeBSD / alpha (alfa * - * - freebsd *)
- GNU / kFreeBSD / alpha (alfa * - * - kfreebsd * -gnu)
O que há de novo na versão 7.9.1:
- RP build / 18033 (comentário no estilo C ++ usado em gdb / iq2000-tdep.c e gdb / compile / compile - *. c)
- O comando PR build / 18298 ("compilar" não pode encontrar o compilador se as ferramentas estiverem configuradas com triplet em vez de quádruplo)
- PR tui / 18311 (SEGV aleatório ao exibir registros no modo TUI)
- PR python / 18299 (exceção ao registrar uma impressora bonita global no modo detalhado)
- PR python / 18066 (argumento & quot; palavra & quot; parece quebrado em Command.complete (texto, palavra))
- PR pascal / 17815 (Corrigir comportamento pascal para campos de classe com testcase)
- RP python / 18285 (o comando ptype expr-com-x causa o SEGV)
O que há de novo na versão 7.9:
- Aprimoramentos de script do Python.
- Compilação de código-fonte e injeção no inferior.
- Novos comandos, opções, variáveis / opções de conveniência.
- Suporte a MIPS SDE (mips * -sde * -elf *).
- Melhor manuseio de sinais ao depurar programas encadeados.
- PR binutils / 17677 (_bfd_elf_get_synthetic_symtab é executado em complexidade O (n ^ 2))
- PR gdb / 16215 (SPARC: não é possível calcular o CFA para este quadro)
- PR gdb / 17525 (comandos target-async: breakpoint não executados quando o programa é executado a partir do script -x)
- PR cli / 17828 ([7,8 regressão] -batch -ex r termina o terminal)
O que é novo na versão 7.8.2: -error: resolve_dynamic_struct: Assertion `TYPE_NFIELDS (type) & gt; 0 'falhou.)
O que há de novo na versão 7.8.1:
- RP python / 17364 (Precisa de melhores nomes de impressoras em bound_registers.py)
- PR build / 17104 (CFLAGS = "-Wall -Wextra" gdb / confgure --with-babeltrace falha)
- PR gdb / 17345 (o babeltrace (1.1.2 e posterior) reclama dos dados do ctf gerados pelo GDB)
- PR build / 17298 (gcore: não foi possível obter registros: nenhum processo desse tipo)
- PR python / 17342 (o Xmethod Python não é compatível com o Python 3)
- PR python / 17355 (Falha nos filtros de quadros do Python com argumento ilegível)
- PR guile / 17367 (cálculo do caminho da associação errado quando o script pkg-config é fornecido como arg para --with-guile)
- PR gdb / 17247 (gdb congela no aplicativo multiencadeado)
- PR gdb / 17347 (Regressão: GDB parado em execução com processo anexado)
- PR gdb / 17407 (Regressão para leitura vDSO do Linux)
- Servidor PR / 17457 (aarch64 / gdbserver: exibição incorreta de registradores de ponto flutuante)
- Servidor PR / 17487 (estado- & gt; dr_control_mirror == 0 declaração falhada no gdbserver no Windows)
- PR gdb / 17472 (com anotações, entrada durante a execução no primeiro plano falha readline / gdb)
- PR gdb / 17471 (a repetição de um comando de segundo plano torna-o primeiro plano)
- PR cli / 17300 (falha no modo non-stop com continue -a & (readline_callback_read_char () chamado sem manipulador!))
- PR python / 17372 (python trava ao exibir ajuda ())
- PR python / 17408 (../../gdb/infrun.c:5256: erro interno: switch_back_to_stepped_thread: Asserção `! schedlock_applies (1) 'falhou.)
O que há de novo na versão 7.8:
- Suporte a scripts Guile.
- Aprimoramentos de scripts do Python.
- Novos comandos, opções, variáveis / opções de conveniência.
- Aprimoramentos do Protocolo Remoto e GDBserver.
- Novas configurações de destino (PowerPC64 GNU / Linux little-endian).
- aprimoramentos do btrace.
- Suporte a matrizes automáticas de comprimento variável ISO C99.
- As & quot; seções de comparação & quot; O comando agora funciona em todos os alvos.
- O & quot; alvo nativo & quot; Agora, o comando se conecta ao destino nativo.
O que há de novo na versão 7.7:
- Suporte aprimorado ao script Python.
- Algumas melhorias do C ++.
- Novos comandos, opções, variáveis / opções de conveniência.
- Vários novos comandos e aprimoramentos do GDB / MI.
- Aprimoramentos do Protocolo Remoto e GDBserver.
- Novas configurações de destino (Nios II, TI MSP430).
- Suporte a dados de desanuviamento do GDB Windows x64.
- Probes do SystemTap SDT suportam no AArch64 GNU / Linux.
- Suporte a CTF (Common Trace Format).
- Novos scripts gcore e gdb-add-index.sh.
- Suporte aprimorado de registro / reprodução de braço * -linux.
- Removido o suporte para configurações obsoletas do NetBSD e do OpenBSD. As variantes ELF dessas configurações são mantidas com suporte.
- O & quot; define | mostra remotebaud & quot; os comandos estão obsoletos em favor de "show | show serial baud".
O que há de novo na versão 7.6.2:
- ponto de interrupção PR / 16251 (erro de ponto de interrupção de hardware AArch64 após garfo)
- PR gdb / 16303 (o GDB 7.6.1 não funciona com binutils 2.24 no MIPS16 e microMIPS)
O que há de novo na versão 7.6.1:
- PR tdep / 15420 (Não é possível depurar programas encadeados em versões mais recentes do x86-solaris - Solaris 10, Atualização 10 ou posterior)
- PR remoto / 15455 (pacote remoto QTro quebrado)
- PR build / 15476 (Falha de compilação devido ao tipo de enumeração incompleta em utils.h)
- Servidor PR / 15594 (o suporte tls em 64x32 x86 gdbserver não estende o endereço para 64 bits)
- Servidor PR / 15075 (dprintf interage com & quot; next & quot;)
- PR server / 15434 (o dprintf usa um 'continue' síncrono, mesmo no modo non-stop)
- PR tui / 14880 (em layouts de registro de divisão, resulta em falha de declaração no valor.c)
- PR c ++ / 15519 (o GDB 7.6 é 94x mais lento que o GDB 7.5.1 usando um determinado arquivo principal)
- PR gdb / 15837 (GDB imprime valores de entrada para variáveis locais)
- PR gdb / 15415 (gdb resolve links simbólicos ao passar o argv [0])
- PR cli / 15603 (CTRL-C não pode mais interromper inferior)
- PR gdb / 15604 (regressão de fuga 7.5 do socket gdbserver)
O que há de novo na versão 7.5:
- Obtenha suporte ao idioma.
- Novos alvos (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Mais melhorias no script em Python.
- Sondas SDT (Static Defined Tracing) suportam com probes do SystemTap.
- Melhorias no GDBserver (conexões stdio, avaliação do lado do destino das condições do ponto de interrupção, melhorias remotas do protocolo).
- Outras melhorias diversas (capacidade de parar quando uma biblioteca compartilhada é carregada / descarregada, impressão dinâmica, etc).
- Depuração reversa no ARM.
- O binário & quot; gdbtui & quot; foi abandonado e não pode mais ser construído. Use & quot; gdb -tui & quot; em vez disso.
O que há de novo na versão 7.4:
- Os espaços de linha ambíguos agora são tratados de forma mais consistente.
- As funções e os arquivos desinteressantes agora podem ser ignorados ao avançar com a função & quot; função de salto & quot; e & quot; ignorar arquivo & quot; comandos.
- Os comandos para definir e obter o limite máximo de comprimento de um watchpoint de hardware de destino remoto foram adicionados.
- O script Python foi amplamente melhorado.
- Muitas outras melhorias, correções de bugs e alterações gerais foram feitas.
O que há de novo na versão 7.1:
- Suporte para novos alvos (incluindo um simulador):
- MicroBlaze Xilinx
- Renesas RX
- Os principais novos recursos são:
- Depuração multiprograma, permitindo que o depurador controle mais de
- um programa dentro da mesma sessão do GDB.
- Ele também apresenta muitos aprimoramentos e correções de erros, incluindo:
- O suporte ao Python foi estendido.
- Melhorias no suporte a C ++ (namespace, operadores de elenco, correções de bugs)
- Melhorias de suporte ao ponto de rastreio.
- Melhorias no registro de processo (salvar / restaurar log de execução, hardware
- suporte a watchpoints).
- Aprimoramentos de protocolo remoto (depuração do kernel do Linux, novos pacotes
- para suporte ao ponto de rastreio)
Depuração de posição independente executável (PIE)
Comentários não encontrado