Como posso visualizar a pilha de chamadas de um processo/thread em execução?

Como posso visualizar a pilha de chamadas de um processo/thread em execução?

Alguém me pediu para pegar umpilha de chamadasourastreamento de pilhade um processo em execução para que ele pudesse analisá-lo para mim.

Como posso obter essa informação?

Responder1

  1. PegarExplorador de processos.

  2. HabilitarMostrar detalhes de todos os processosdeArquivocardápio:

    insira a descrição da imagem aqui

  3. No painel principal, selecione o processo de seu interesse:

    insira a descrição da imagem aqui

  4. Abra o menu de contexto (clique com o botão direito) para o processo selecionado e clique emPropriedades:

    insira a descrição da imagem aqui

  5. NoTópicosguia, você poderá ver uma lista dos threads em execução dentro desse processo:

    insira a descrição da imagem aqui

  6. Selecione o tópico de seu interesse e clique no botãoPilhabotão:

    insira a descrição da imagem aqui

  7. O Process Explorer agora exibirá a pilha de chamadas atual para o thread selecionado:

    insira a descrição da imagem aqui

Símbolos

Se a sua solução de problemas exigir que você obtenha mais detalhes, geralmente é muito útil carregar a depuraçãosímbolosno Process Explorer. É assim:

  1. Se você ainda não possui um depurador do Windows instalado, precisará instalar oFerramentas de depuração para Windowsprimeiro.

  2. No Process Explorer, abraConfigurar símbolos...deOpçõescardápio:

    insira a descrição da imagem aqui

  3. Se você tiver as ferramentas de depuração (ou outro depurador do Windows) instaladas, o Process Explorer encontrará o dbghelp.dllarquivo automaticamente. Caso contrário, defina o caminho correto aqui.

    insira a descrição da imagem aqui

    OCaminho dos símbolosdeve ser algo como:

    SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
    

    A única parte que você deseja ajustar é C:\Symbols. Esse é o local onde os símbolos de depuração serão armazenados em cache.

Responder2

Se você precisar de uma pilha de processos clr, poderá usar o ProcInsp (sou o desenvolvedor, a ferramenta é de uso gratuito).

  1. InstalarProcInsp
  2. Encontre o processo de seu interesse e clique nele Lista de processos
  3. Clique no thread (observe que o ProcInsp mostra o ponto de entrada do aplicativo como o nome do thread - ele pula todos os frames da infraestrutura .net) Lista de tópicos
  4. O rastreamento de pilha com o ponto de entrada destacado é mostrado Stacktrace

informação relacionada