quarta-feira, 13 de março de 2013

Debug remoto


   Quem nunca passou por uma situação em que na sua máquina a rotina executa normalmente e na máquina do cliente da erro? E ai? O que fazer? Bem, temos diversas "táticas" para validar essa situação como por exemplo fazer logs dentro das rotinas, ShowMessage e por ai vai. Agora, algo incrivelmente prático e correto é o Debug Remoto, isso mesmo que vocês estão pensando, acessar remotamente a máquina do cliente e debugar o sistema que está rodando na máquina dele. Como isso é possível? O Delphi, que é uma mãe pra nós, nos permite fazer isso de forma elegante e muito profissional utilizando ferrametas que acompanham o pacote de instalação.

   Primeiramente precisamos separar alguas DLLs que devem ficar na máquina remota em especial na pasta onde encontra-se o executável que será depurado remotamente. Essas DLLs podem ser encontradas na pasta Bin da instalação do Delphi normalmente em: C:\Program Files\Embarcadero\RAD Studio\7.0\bin. São os arquivos:


  • rmtdbg<nnn>.exe
  • bccide.dll
  • bordbk<nnn>.dll
  • bordbk<nnn>N.dll
  • comp32x.dll
  • dcc32<nnn>.dll - Win32
  • dcc64<nnn>.dll - Win64 
  • dccosx<nnn>.dll - Mac OS X


   <nnn> é o número da versão que vc está utilizando do Delphi. Para o RAD Studio XE3 por exemplo, o valor de nnn é 170.
Depois de adicionar na pasta os arquivos, precisamos registrar duas DLLs usando o regsvr32, bordbk<nnn>.dll e bordbk<nnn>n.dll.

   Agora vamos preparar nosso projeto para ser debugado remotamente.
   Acesse o menu Project --> Options --> Linking e altere a propriedade "Include remote debug symbols" para "True" conforme imagem.



   No Delphi pressione Shift+F9 para dar Build na sua aplicação. Nesse instante será gerado um arquivo com a extensão .rsm com o mesmo nome do executável. Esse arquivo nos possibilitará realizar o debug remoto. Agora envie para a máquina remota mais esses arquivos: o executável do sistema e o arquivo .rsm gerado após o Build.

   Na máquina remota, execute o arquivo rmtdbg<nnn>.exe. Será exibida uma tela do Prompt, deixe ela aberta.
Na sua máquina faça os seguintes passos:

1. Acesse o menu Run --> Load Process.
2. Selecione a opção "Remote".
3. Em "Remote Path" informe o caminho físico do executável na máquina remota, o Full Path mesmo: C:\Sistema\Sistema.exe, por exemplo.
4. Em "Remote Host" informe o IP da máquina remota.
5. Clique em "Load".

   Se tudo estiver configurado como informado nos passos acima a aplicação remota será executada e você poderá colocar seus Break Points a vontade no Delphi e verificar o que quiser e ainda com um plus: o ambiente testado é o ambiente real do cliente.

   Outra forma para realizar o Debug Remoto é acessando o menu Run --> Attach to Process, a diferença aqui é que você vai atachar um processo que já esteja executando na máquina remota. Para isso basta informar o IP da máquina remota, selecionar o processo e clicar em "Attach". O processo deve ocorrer da mesma forma porém nesse caso o aplicativo a ser Debugado já deve estar rodando.

Boa sorte na caça aos Bugs.

Nenhum comentário :