características muito boas. Perdeu esta tão longe ...
PraveenMax
45
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.
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.
Você também pode usar a -iexopção para adicionar comandos individuais na linha de comando gdb.
precisa saber é o seguinte
5
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.
como você faz isso o padrão? Eu tentei .gdbinit, mas o gdb imprime /home/omry/.gdbinit:1: Erro no arquivo de comando de origem: O destino 'None' não pode suportar este comando.
Omry Yadan
4
Usando .gdbinit (inicie o arquivo onde você pode gravar macros e chamar a partir do gdb). Coloque .gdbinit no diretório inicial para que ele seja capturado toda vez que o gdb for carregado
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
p / d 0x10 -> fornece o equivalente decimal de 0x10
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.
Respostas:
fonte
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 eset print elements 0
são dois comandos que eu uso com muita frequência. Bastante útil.t a a bt
(significadothread apply all backtrace
). Pode ser usado com (quase) todos os outros comandos. Especialmente útil combt full
.Inicie o gdb com uma interface de usuário textual
fonte
A partir do gdb 7.0, há depuração reversível ; portanto, seus novos comandos favoritos são:
fonte
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".
fonte
Ctrl-a a
? Isso é uma piada? Parece mais comtmux
/screen
command. E não funciona para mim. Ele deve ser um dos como por docs :C-x C-a
,C-x a
,C-x A
.C-x a
. Você também pode alternar as visualizações comC-x 1
eC-x 2
quando no modo tui para ver a montagem também (se necessário).thread apply all bt
outhread apply all print $pc
: Para descobrir rapidamente o que todos os threads estão fazendo.fonte
Por exemplo, as macros definidas em stl-views.gdb
fonte
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.fonte
-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.
fonte
set scheduler-locking on
dentro de gdbthreads 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
fonte
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.
fonte
focus cmd
para que as setas para cima / para baixo funcionem. Você volta a usarfocus src
.Isso pode ser útil, tenho certeza de que poderia ser melhorado, ajude a bem-vindo:
fonte
Para depurar o STL, adicione conteúdo ao .gdbinit, siga estas instruções:
http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF
fonte