Respostas:
info locals
- Veja todas as variáveis locais; lista - visualizar fonte; rbreak - quebra na função que corresponde à expressão regular.
set print object on
para elementos polimórficos e set print elements 0
são dois comandos que eu uso com muita frequência. Bastante útil.
t a a bt
(significado thread apply all backtrace
). Pode ser usado com (quase) todos os outros comandos. Especialmente útil com bt full
.
Inicie o gdb com uma interface de usuário textual
gdb -tui
A partir do gdb 7.0, há depuração reversível ; portanto, seus novos comandos favoritos são:
* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
Em vez de iniciar o GDB com o parâmetro "-tui", você também pode mudar para o modo de texto depois de um tempo usando, digitando "wh".
C-x a
. Você também pode alternar as visualizações com C-x 1
e C-x 2
quando no modo tui para ver a montagem também (se necessário).
Por exemplo, as macros definidas em stl-views.gdb
Usando a -command=<file with gdb commands>
opção durante a inicialização do gdb. O mesmo que -x <command file>
. Este arquivo de comando pode conter comandos gdb, como pontos de interrupção, opções, etc. Útil no caso de um determinado executável precisar ser executado em execuções sucessivas de depuração usando o gdb.
-iex
opção para adicionar comandos individuais na linha de comando gdb.
scripting gdb é um bom truque, além do que eu gosto de ativar / desativar o bloqueio do agendador para impedir a execução de outros threads quando você está entrando em um.
set scheduler-locking on
dentro de gdb
threads de informações para listar todos os threads ativos ef (#) -> # número do thread para o qual você deseja alternar
em algum momento eu uso o gdb para converter de hex para decimal ou binário, é muito útil em vez de abrir uma calculadora
Em vez de iniciar o gdb com a opção -tui para ver um processo filho que contém uma tela que destaca onde a linha de código em execução está no seu programa, entre e saia desse recurso com Cx o e Cx a. Isso é útil se você estiver usando o recurso e o que não usar temporariamente, para que você possa usar a seta para cima para obter um comando anterior.
focus cmd
para que as setas para cima / para baixo funcionem. Você volta a usar focus src
.
Para depurar o STL, adicione conteúdo ao .gdbinit, siga estas instruções: