Como posso rastrear / criar um perfil em um processo no Windows?

2

Ocasionalmente, ao investigar problemas do SQL Server, acho útil poder anexar o depurador do Visual Studio a ele e tentar descobrir o que ele está fazendo, observando a pilha de chamadas (os símbolos públicos estão disponíveis e geralmente é possível inferir informações úteis a partir dos nomes dos métodos).

Um ótimo exemplo do tipo de informação interna que pode ser inferida é nesta postagem do blog que inspirou minhas tentativas.

Isso pode ser um processo demorado e tedioso, no entanto. Geralmente eu corro o código de interesse em um loop anexar o depurador, em seguida, continuamente quebrar e continuar até que eu acerte uma pilha de chamadas que parece interessante para o assunto sob investigação. Eu posso então percorrer o código e ver os nomes dos métodos sendo chamados. Isso leva séculos no entanto.

Existe alguma maneira de automatizar isso para que eu possa simplesmente registrar todos os métodos chamados por um curto período e depois revisar o arquivo de log depois?

    
por Martin Smith 29.04.2012 / 17:25

2 respostas

2

O profiler em versões superiores do Visual Studio pode ser usado para fazer isso.

Exemplo de saída

(E a resposta aqui mostra por que isso é útil)

Ou, adicionalmente, o Windows Performance Toolkit é gratuito e também pode fazer o mesmo e muito mais. Uma boa série de vídeos sobre isso pode ser encontrada no link

    
por 23.12.2012 / 11:49
3

Se eu não estou enganado, você provavelmente está procurando pelo Process Monitor (também conhecido como procmon). Você pode obtê-lo em este site da Microsoft .

Especificamente, a opção de menu "Resumo da pilha" tem esse tipo de informação. Mais detalhes na seção PM2-6: desenrolando a pilha

    
por 29.04.2012 / 19:31