Conhecendo o Debugger do Delphi
Se você usa o Delphi 7 ou versão anterior até tem uma desculpa para não conhecer todos os recursos do Debugger do Delphi – as janelas com as informações interessantes ficavam escondidas, por padrão, e era necessário ir atrás delas para exibí-las e utilizá-las. Nas versões mais recentes, até o novo Delphi 2007, ele vem com um “Debug Desktop” pré-definido com a maioria das janelas já configuradas como visíveis, e assim as informações ficaram bem mais acessíveis. Apesar disso, acredito que ainda existe quem as ignora e continua sem conhecer esses recursos interessantes.
Como pretendo escrever mais artigos sobre recursos de debugger, mostrando dicas e truques e citando as suas janelas, não posso deixar que você não conheça cada uma delas. Vamos dar uma passada rápida por elas.
- Breakpoints – Ctrl-Alt-B
A janela de Breakpoints permite gerenciar todos os breakpoints de uma forma rápida. É possível adicionar novos breakpoints, incluindo breakpoints de dados, apagar/desabilitar todos ou seletivamente.
- Call Stack – Ctrl-Alt-S
Call Stack mostra a pilha de chamadas, que é a sequência das rotinas que foram chamadas para que a execução chegasse naquele ponto que o programa se encontra. Bastante útil para saber o contexto que você está examinando, para saber porquê a execução chegou até ali. Particularmente útil quando a execução do programa passa por um ponto que não deveria e você não sabe bem o motivo.
- Watches – Ctrl-Alt-W
Watches permitem monitorar o valor de variáveis e o resultado de expressões durante a depuração. Bom para acompanhar o conteúdo de alguma variável que não deveria estar sendo alterada. Não se esqueça do atalho para criar um novo watch – Ctrl-F5.
- Local Variables – Ctrl-Alt-L
Uma espécie de watches automáticos, a janela de Local Variables mostra o conteúdo das variáveis locais à um método. Não deixe de usá-lo quando estiver passando por algum método que faz cálculos – é essencial ter todos os valores à vista.
- Threads – Ctrl-Alt-T
Mostra todas as threads que pertencem ao seu processo, e seu status. Permite alterar a thread corrente para você depurá-la.
- Event Log – Ctrl-Alt-V
O Event Log é um painel importante para vários truques de depuração. É nele que vão várias mensagens do debugger, como o inicio de threads, exceções, paradas em breakpoints.
- Modules – Ctrl-Alt-M
A janela de Modules mostra todos os módulos carregados pelo seu executável, inclusive o caminho completo de cada um. Contém informação importante para aplicativos que são modularizados em DLLs e/ou BPLs, ajudando a descobrir qual arquivo está realmente sendo carregado, evitando o tempo perdido quando você compila um módulo mas o seu aplicativo carrega um cópia dele em uma pasta diferente.
Também diz quais dos módulos possuem símbolos para o debugger utilizar, e, para cada módulo, mostra uma lista de funções exportadas por ele, levando até a sua implementação.
- CPU/FPU Window – Ctrl-Alt-C, Ctrl-Alt-F
As janelas de CPU e FPU mostram o conteúdo da memória, dos registradores do processador, e o disassembly do código que está sendo executado no momento. É relativamente assustadora para quem não conhece assembly, mas de qualquer forma, o acesso de baixo nível que é possível ter permite a investigação dos piores problemas, e alguns truques interessantes.
Todas as janelas acimas, além de disponíveis pelos atalhos que listei, também estão em View/Debug Windows.
Outras duas janelas importantes que não estão acessíveis por este menu são:
- Evaluate/Modify – Ctrl-F7
Evaluate/Modify é um recurso que eu espero que você já tenha usado pelo menos alguma vez. Ele mostra o conteúdo de uma variável e permite a sua alteração. Também calcula o resultado de expressões e funções. Essencial para alguns truques que vou mostrar no futuro.
- Debug Inspector
Uma janela que mostra o conteúdo de uma objeto ou outra estrutura em tempo de execução da mesma forma que o Object Inspector mostra as propriedades de componentes em tempo de projeto, é um recurso bastante útil e geralmente desconhecido e não utilizado.
Para ativá-lo existem algumas formas diferentes. Nas versões mais antigas, Ctrl-Clique em um identificador em tempo de projeto levava até a sua declaração, e durante a depuração abria o Debug Inspector. Nas versões mais recentes do Delphi o Ctrl-Clique foi incrementado para levar até a declaração durante a depuração também, então o atalho para o Debug Inspector mudou para Ctrl-Shift-Clique. Também é possível abrir o Debug Inspector dando um duplo clique em um objeto na janela de Local Variables. Tanto o Evaluate/Modify quanto o Debug Inspector também são acessíveis pelo menu de contexto do editor.
Isso foi um resumo rápido da interface do debugger do Delphi, que vai servir como base para futura dicas aqui.
Se você é novo por aqui, não deixe de assinar o feed RSS ou notificações por email. Não perca novos artigos!
Em 22 de maio de 2007 às 14:38
Fiquei curioso pra saber que truques interessantes podem ser feitos usando a janela CPU :\
Em 28 de janeiro de 2009 às 10:12
Muito interessante e útil para novatos e veteranos. Já trabalho algum tempo e não conhecia tudo isso. Legal isso q ces fizeram. Valeu!!!!
Em 06 de fevereiro de 2009 às 09:12
Mto legal isso q tu fez, sou novato no delphi e achei mto interessante essas ferramentas q ate entaum eu nao conhecia, mas tb fiquei curioso pra saber quais recursos posso fazer com o CPU/FPU, se tu puder mande por -email, eu agradeceria…VLW!!!
Em 02 de agosto de 2009 às 17:45
amigão, estou precisando usar o evaluate/modify para verificar o conteúdo de uma query tipo: sql.add(‘update …’)
para ter certeza que esta recebendo os valores corretos numa alteração de registro. obrigado
Em 25 de agosto de 2009 às 20:40
Sou iniciante.. no meu programa tenho uma variável que é do tipo TDateTime.. quando debugo o que tem nela aparece um valor numérico. Como faço pra saber a data que tem na variavel?
Em 03 de dezembro de 2009 às 09:25
E aí Josué, td bem ?? então eu li seu post em um site sobre Delphi, sele vc diz que tem uma variável do tipo TDateTime certo, aki está o link onde vc deixou seu post http://www.techtips.com.br/programacao/delphi/depuracao/conhecendo-o-debugger-do-delphi/ , ao abrir o evaluate/modify escreva assim DateToStr()
Espero que tenha ajudado
Abraços !!
Em 23 de novembro de 2009 às 16:49
Legal, algumas telas eu não conhecia, mas também fiquei curioso quanto ao restante das dicas.
Podem passar o link ?
Em 04 de janeiro de 2010 às 17:59
Muito Showw !!! Isso será muito utilizado VLWW