Pular para o conteúdo

GDB 18.1 traz depuração non-stop ao Windows e remove stabs

O GDB 18.1, lançado em 25 de setembro, traz depuração non-stop ao Windows 10+, novos comandos save e de ambiente, e remove o antigo formato stabs.

Por Tech AI Wire Team

4 min de leitura

XLinkedIn
A screenshot of GDB's text interface paused at a breakpoint in a multithreaded C++ file, with a stack backtrace below the source view.
Foto: Wikimedia Commons / Auremel, CC BY-SA 3.0

O Projeto GNU lançou em 25 de setembro de 2026 a versão 18.1 do GDB, seu depurador de linha de comando. As maiores mudanças chegam ao Windows, que ganha depuração non-stop no Windows 10 e posteriores. A versão também remove vários formatos de depuração antigos. Por isso, algumas compilações legadas deixarão de carregar corretamente.

O GDB permite pausar um programa em execução, percorrê-lo linha a linha e inspecionar suas variáveis. Ele funciona com Ada, C, C++, Fortran, Go, Rust e muitas outras linguagens. As mudanças abaixo vêm do anúncio oficial da versão na lista de e-mail gdb-announce, com detalhes extras da reportagem do LWN.

O que muda para desenvolvedores Windows

Segundo o anúncio, o Windows recebe o maior conjunto de melhorias no GDB 18.1. O alvo nativo do Windows, ou seja, o GDB depurando um programa na mesma máquina Windows, agora suporta o modo non-stop no Windows 10 e posteriores.

O modo non-stop permite que uma thread pare em um ponto de interrupção enquanto as outras threads do programa continuam rodando. Isso importa em servidores e aplicativos gráficos. Neles, congelar todas as threads de uma vez pode esconder o bug que se está procurando. O Windows também ganha scheduler-locking. Esse recurso controla se outras threads podem rodar enquanto você avança passo a passo por uma delas.

O GDB no Windows agora também lê variáveis de armazenamento local de thread (TLS). São variáveis que guardam um valor separado para cada thread. O anúncio cita ainda cores reais de 24 bits no Windows Terminal, com texto UTF-8 e emoji. Os caminhos de arquivo agora aparecem sempre com barras normais.

Novos comandos no GDB 18.1

A versão adiciona vários comandos, listados tanto no anúncio quanto no resumo do LWN:

ComandoO que faz
set/show/unset local-environmentGerencia o ambiente do programa depurado
save historyGrava o histórico de comandos em um arquivo
save skipSalva a lista de funções e arquivos que o GDB pula ao avançar passo a passo
save userSalva comandos definidos pelo usuário
set/show progress-bars enabledLiga ou desliga as barras de progresso
info proc environMostra as variáveis de ambiente de um processo Linux

Uma nova opção --no-escape-args passa os argumentos do programa sem escapá-los. Argumentos com quebras de linha agora funcionam quando estão entre aspas. Em alvos extended-remote, em que o GDB controla um programa em outra máquina, o GDB agora define automaticamente o executável remoto.

O LWN observa também que info locals agora marca variáveis que escondem outra variável com o mesmo nome. O comando mostra ainda onde cada variável está armazenada.

API Python e novos alvos

O GDB pode ser programado em Python, e a versão 18.1 amplia essa interface. O anúncio cita uma nova classe gdb.Corefile para trabalhar com core dumps. São os instantâneos de memória que um programa deixa ao travar. Também adiciona uma classe gdb.Style e dois novos registros de eventos, selected_context e corefile_changed. A saída de desmontagem feita a partir do Python agora pode ter estilos.

Chegam dois novos alvos. GNU/Linux no MicroBlaze, um pequeno projeto de processador usado em chips FPGA, passa a ser suportado via gdbserver. O AArch64 MinGW, ou seja, Windows em Arm de 64 bits compilado com o conjunto de ferramentas MinGW, também é suportado. O LWN acrescenta que o AArch64 agora suporta seu registrador de modo de ponto flutuante, chamado FPMR.

O que o GDB 18.1 remove

Segundo o anúncio, o GDB 18.1 abandona uma série de formatos e plataformas antigos:

  • Os formatos de depuração stabs, mdebug e dbx
  • O Common Trace Format
  • Versões antigas da seção .gdb_index, um índice que acelera o carregamento de símbolos
  • A versão 1 do DWP, o formato de pacote para arquivos de depuração separados
  • AIX 7.1
  • O alvo s390 de 32 bits

Do lado positivo, as seções .gdb_index agora incluem símbolos de tipo, o que ajuda o GDB a encontrar tipos mais rápido. O código-fonte está disponível no servidor FTP do GNU como um arquivo .tar.xz de 22 MiB ou um arquivo .tar.gz de 37 MiB.

O que isso significa para desenvolvedores

Confira suas opções de compilação antes de atualizar. Stabs é um formato de depuração anterior ao DWARF, o padrão que a maioria dos compiladores emite hoje. A maioria dos conjuntos de ferramentas modernos parou de usar stabs há muito tempo. Mas um conjunto de ferramentas embarcado antigo ou um script de build legado talvez ainda passe -gstabs. Nesse caso, o GDB 18.1 não lerá mais essas informações de depuração, e é melhor mudar para DWARF primeiro.

O mesmo vale para configurações com depuração separada. Se sua equipe ainda guarda arquivos .dwp no antigo formato versão 1, reconstrua-os antes de migrar para o 18.1. Regenere também as seções .gdb_index criadas por um GDB antigo. O formato de índice mais novo também lista os tipos, então a reconstrução vale a pena de qualquer forma.

Desenvolvedores Windows que desistiram do GDB para código multithread deveriam tentar de novo. O modo non-stop com scheduler-locking permite parar uma thread de trabalho sem congelar o resto do programa.

Se você mantém um arquivo .gdbinit cheio de comandos personalizados, experimente save user para fazer backup deles. Depois use save history para que uma longa sessão de depuração não se perca quando o GDB fechar. Equipes que criam ferramentas sobre a API Python do GDB devem olhar o gdb.Corefile para scripts que analisam dumps de falhas.

Até que sua distribuição Linux empacote a versão 18.1, você pode compilá-la a partir do tarball de código-fonte no servidor FTP do GNU.

Fontes

  1. GDB 18.1 released! - Sourceware gdb-announce
  2. GDB 18.1 released - LWN.net

Artigos relacionados