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: https://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
https://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