A maioria dos complicados / comandos úteis para depurador gdb [fechado]
Pergunta
Você pode postar seus comandos maioria complicadas e úteis quando você executar um depurador como gdb ou dbx.
Solução
- backtrace completo : backtrace Completo com variáveis ??locais
- se , abaixo , quadro : Mover através de quadros
- relógio : Suspender o processo quando uma determinada condição é satisfeita ??li>
- definição de impressão bonita em : Prints fora lindamente formatado código fonte C
- logging set on : Log sessão de depuração para mostrar aos outros para suporte
- array print set on : impressão variedade Bonita ??li>
- acabamento : Continuar até final de função
- permitir e desativar : Ativar / desativar pontos de interrupção
- Tbreak : Ruptura uma vez, e em seguida, remover o ponto de interrupção
- , onde : Número da linha a ser executada
- info locals : Ver todas as variáveis ??locais
- Info args : Ver todos os argumentos da função
- lista ??em>: view source
- RBREAK : pausa na função de correspondência expressão regular
Outras dicas
gdb Comece com uma interface de usuário textual
gdb -tui
A partir de gdb 7.0, há reversível depuração , para que o seu novo favorito comandos 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 lançar GDB com "-tui" param você também pode alternar para o modo de texto depois de um tempo usando digitando "wh".
thread apply all bt
ou thread apply all print $pc
: Para descobrir rapidamente o que os tópicos estão fazendo
Por exemplo, as macros definido na STL-views.gdb
Usando a opção -command=<file with gdb commands>
enquanto queima-se gdb. Mesmo que -x <command file>
. Este arquivo de comando pode conter comandos gdb como pontos de interrupção, opções, etc. útil caso a determinadas necessidades executáveis ??para ser colocado através de corridas de depuração sucessivas usando gdb.
scripting gdb é um bom truque, além de que eu gosto conjunto de travamento agendador on / off para evitar a execução de outros tópicos quando você está pisando em um.
Em vez de começar gdb com o -tui opção para ver um processo filho que contém uma tela que destaca onde a linha de execução de código está em seu programa, salto dentro e fora de esse recurso com C-x O e C-x a. Isso é útil se você estiver usando o recurso eo que temporariamente não usá-lo para que você possa usar a seta para cima para obter um comando anterior.
- Usando .gdbinit (start up de arquivos onde você pode escrever macros e chamada do GDB). Lugar .gdbinit em seu diretório pessoal para que ele seja pego cada vez gdb é carregado
-
info threads para listar todos os tópicos ativos, e f (#) -> número # segmento que você quer mudar para
-
Às vezes eu usar gdb converter de hexadecimal para decimal ou binário, é muito útil em vez de abrir-se uma calculadora
- p / d 0x10 -> dá equivalente decimal de 0x10
- p / t 0x10 -> equivalente binário 0x10
- p / x 256 -> hex equivalente a 256
Isto pode ser útil, estou certo de que poderia ser melhorado no entanto, ajuda bem-vinda:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
Para STL de depuração, o conteúdo add para .gdbinit, siga estas instruções:
http://www.yolinux.com/TUTORIALS/GDB-Commands. html # STLDEREF