terça-feira, 17 de maio de 2011

Depuração de Thread

Se você trabalha com threads, sabe que um problema é a depuração de uma thread específica. Especialmente se há muitas instâncias de uma thread.

Dependendo da situação, fica caótico.

Uma maneira de se entender com o Delphi nesta situação é usar a janela "Thread Status" (Menu: View->Debug Windows->Threads, ou CTRL+ALT+T).

Isso abre a janela abaixo:


Mas qual a melhor maneira de utilizar?

Coloque o BreakPoint no ponto desejado, quando uma das threads chegar no ponto, o Delphi parará tudo, indicando qual a thread corrente:


Pois bem, no decorrer do Debug, pode ser que você vá para uma linha nada haver :) por que por algum motivo mudou-se a thread corrente...


Para voltar à thread em que você estava focado, vá na janela Thread Status, selecione a thread, e no pop-menu selecione a opção "Make Current"...


Por fim, você retorna à thread em que você estava focado.

Para facilitar um pouco mais, você pode nomear a sua thread para efeitos de debug: http://eugostododelphi.blogspot.com/2010/02/nomeacao-de-thread.html

Se você quiser mais alguma idéia sobre o assunto, leia também: http://edn.embarcadero.com/article/41175

Minha lista de blogs