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