Como Monitorar Chamadas de API de uma Aplicação?



Como Monitorar Chamadas de API de uma Aplicação?


Por: João de Souza e Roberto Farah


 


Alguns anos atrás nós nos deparamos com um incidente onde não era possível ter acesso ao código fonte do cliente para recomendar a devida instrumentação uma vez que suspeitávamos de chamadas de API que falhavam e a aplicação não previa esse cenário.


Para comprovar as suspeitas, dado as limitações de acesso a aplicação, usamos uma ferramenta que monitora chamadas de API. No incidente em questão isso foi decisivo para isolar o problema.


Imaginamos que muitos de vocês já se depararam com problema semelhante, portanto decidimos criar esse artigo para falar sobre isso.


Notem que há outras ferramentas e outras abordagens para se monitorar APIs, entretanto, nesse blog nós focaremos em explicar duas ferramentas: logger.exe e LogViewer.exe


 


Essas 2 ferramentas são parte do Debugging Tools For Windows que é um pacote de ferramentas para troubleshooting e nosso mais potente depurador, o WinDbg.


Portanto, baixe o Debugging Tools For Windows desse link: http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx


 


Em seguida, usaremos duas específicas ferramentas entre outras que vêm no pacote:


 


Logger – para monitorar e registrar todas as chamadas de API em um arquivo texto.


LogViewer – para visualizar o arquivo de log gerado pelo Logger.


 


 


Como exemplo usaremos uma aplicação Visual Basic 6 cujo conteúdo foi extraído desse artigo:


 


How To Call Windows API Functions with Special Requirements from Visual Basic


http://support.microsoft.com/kb/202179/en-us


 


Pois bem, instale o Debugging Tools For Windows em um diretório como c:\Debuggers e via linha de comando vá até esse diretório e digite o seguinte:


 


Logger.exe <nome aplicacao.exe>


 


No nosso caso, usando o artigo acima criamos uma aplicação chamada Project1.exe cujo único botão chama a rotina MySample() referida no artigo acima. No meu ambiente eu rodei o seguinte comando:


 


Logger C:\Development\My Tools\BLOG Articles\Article #4\Project1.exe


 


Que tal apenas:


Logger C:\Development\Project1.exe


 


No seu caso você deverá referenciar sua aplicação.


 


Após a execução da linha acima você deverá obter algo como:


 


 



 


Pressione Go.


 


Em seguida deverá aparecer a tela da sua aplicação. No nosso caso é:


 




 


Após rodar a aplicação encerre o Logger.exe


 


O arquivo de saída deverá estar no subdiretório LogExts do Desktop.


 


Usando LogViewer.exe abra o arquivo de extensão LGV.


A saída deverá ser algo como:


 


 



 


Portanto, você terá estatísticas de todas as APIs utilizadas pela aplicação!


 


Note que você tem opções como:


 


          Menu File/Export to text…  ß Exporta saída para arquivo texto.


          File/Statistics ß Mostra número de chamadas por API e número de falhas na chamada.


          Search/Find ß Pesquisa o log por alguma API em específico.


          View/API Display ß Filtra saída por Categoria de APIs ou por APIs.


          View/Modules Display ß Filtra saída por APIs relacionadas por módulo.


 


 



 


Pois bem, com isso você está apto a monitorar as chamadas de API. Se você tem um problema com alguma aplicação que usa APIs para fazer acesso a arquivos, por exemplo, esse poderia ser um modo de se monitorar as chamadas feitas pela aplicação.


 


 


João Delinger de Souza e Roberto Alexis Farah


 

Comments (0)