Como posso rastrear/perfilar um processo no Windows?

Como posso rastrear/perfilar um processo no Windows?

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 muitas vezes é possível inferir informações úteis informações dos nomes dos métodos).

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

No entanto, este pode ser um processo bastante demorado e tedioso. Geralmente, executo o código de interesse em um loop, anexe o depurador e, em seguida, interrompo continuamente e continuo até atingir uma pilha de chamadas que pareça interessante para o assunto sob investigação. Posso então percorrer o código e observar os nomes dos métodos que estão sendo chamados. No entanto, isso leva séculos.

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?

Responder1

Se não me engano, você provavelmente está procurando pelo Process Monitor (também conhecido como procmon). Você pode obtê-lo deeste site da Microsoft.

Especificamente, a opção de menu "Stack Summary" contém esse tipo de informação. Mais detalhes na seçãoPM2-6: Desenrolando a pilha

insira a descrição da imagem aqui

Responder2

Oanalisadorem versões superiores do Visual Studio podem ser usadas para fazer isso.

Exemplo de saída

Captura de tela

(Ea resposta aquimostra por que isso é útil)

Ou adicionalmente oKit de ferramentas de desempenho do Windowsé gratuito e também pode fazer o mesmo e muito mais. Uma boa série de vídeos sobre isso pode ser encontrada emhttps://channel9.msdn.com/Search?term=Defrag%20tools%20wpt#ch9Search

informação relacionada