DDD : watchpoint, observar uma variável

Para quem não conhece o ddd, data display debugger, é um front end ao debugger do gdb, gnu data debugger, uma ferramenta para conseguir vasculhar o programa enquanto ele corre, para facilitar a vida a quem programa e detectar os bugs de uma forma mais fácil.

Uma funcionalidade que desconhecia como usar é o watchpoint, monitorizas uma variável e, quando ela mudar, o programa pára e mostra em que ponto do programa te encontras.
A funcionalidade é ideal para quando uma variável toma uma valor que tu não fazes ideia como lá foi parar, colocas um watchpoint, quando a variável mudar o programa pára e dá para ver quem mexeu …

Eu prefiro a linha de comandos à GUI, por isso isto é feito através da linha de comandos que geralmente está por baixo do código, senão Alt-1 e fica activa.

Em primeiro lugar colocar um breakpoint numa linha que a variável seja utilizada,

br FicheiroExemplo.cpp:123

depois, a parte complicada que pode não estar descrita da melhor forma … ainda usei esta funcionalidade poucas vezes. Imprimir o endereço da variável

print &(your_variable)

e activar a monitorização da variável, com o comando

watch *$

Após estes simples comandos sempre que a variável mudar a execução do programa pára para se poder analisar. Normalmente não só te interessa ver quem mudou mas também todas as funções responsáveis por essa alteração, as chamadas recursivas de funções, para isso existe o comando

backtrace

que imprime as funções que foram chamadas até ocorrer aquela instrução, ideal para observar a linha de execução do programa.

Eu aprendi esta funcionalidade através da ajuda do utilizador volodya no canal do irc gdb.freenode.net, e está explicado em inglês neste post.

Uma resposta to “DDD : watchpoint, observar uma variável”

  1. Helder Magalhães Says:

    > Eu prefiro a linha de comandos à GUI

    Que geek, meu… ;-P

    Usar o ddd é um pouco de doidos… Lembro-me vagamente de o fazer na faculdade mas, depois de conhecer ambientes de depuração mais amigáveis (IDEs e depuradores gráficos), não quero voltar a meter-me com nada disso!😀

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s


%d bloggers like this: