Comment afficher la pile d'appels d'un processus / thread en cours d'exécution?

14

Quelqu'un m'a demandé d'obtenir une pile d'appels ou une trace de pile d'un processus en cours afin qu'il puisse l'analyser pour moi.

Comment puis-je obtenir ces informations?

Der Hochstapler
la source

Réponses:

35
  1. Obtenez Process Explorer .

  2. Activez Afficher les détails de tous les processus dans le menu Fichier :

    entrez la description de l'image ici

  3. Dans le volet principal, sélectionnez le processus qui vous intéresse:

    entrez la description de l'image ici

  4. Ouvrez le menu contextuel (clic droit) du processus sélectionné et cliquez sur Propriétés :

    entrez la description de l'image ici

  5. Dans l' onglet Threads , vous pourrez voir une liste des threads en cours d'exécution dans ce processus:

    entrez la description de l'image ici

  6. Sélectionnez le fil qui vous intéresse et cliquez sur le bouton Empiler :

    entrez la description de l'image ici

  7. Process Explorer affichera maintenant la pile d'appels actuelle pour le thread sélectionné:

    entrez la description de l'image ici

Symboles

Si votre dépannage vous oblige à obtenir plus de détails, il est souvent très utile de charger des symboles de débogage dans Process Explorer. C'est ainsi:

  1. Si vous n'avez pas déjà installé un débogueur Windows, vous devrez d'abord installer les outils de débogage pour Windows .

  2. Dans Process Explorer, ouvrez Configurer les symboles ... dans le menu Options :

    entrez la description de l'image ici

  3. Si les outils de débogage (ou un autre débogueur Windows) sont installés, Process Explorer trouvera automatiquement le dbghelp.dllfichier. Sinon, définissez le chemin correct ici.

    entrez la description de l'image ici

    Le chemin des symboles doit ressembler à ceci:

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

    La seule partie que vous voudrez ajuster est C:\Symbols. C'est l'emplacement où les symboles de débogage seront mis en cache.

Der Hochstapler
la source
existe-t-il un moyen de vider toutes les piles d'appels de threads dans un fichier?
bgura