Partager via


_EFN_StackTrace, fonction

Fournit une représentation textuelle d'une trace de la pile managée et un tableau d'enregistrements CONTEXT pour chaque transition entre du code non managé et du code managé.

HRESULT CALLBACK _EFN_StackTrace(
    [in]  PDEBUG_CLIENT  Client,
    [out] WCHAR          wszTextOut[],
    [out] size_t         *puiTextLength,
    [out] LPVOID         pTransitionContexts,
    [out] size_t         *puiTransitionContextCount,
    [in]  size_t         uiSizeOfContext,
    [in]  DWORD          Flags
);

Paramètres

  • Client
    [in] Client en cours de débogage.

  • wszTextOut
    [out] Représentation textuelle de la trace de la pile.

  • puiTextLength
    [out] Pointeur vers le nombre de caractères figurant dans wszTextOut.

  • pTransitionContexts
    [out] Tableau de contextes de transition.

  • puiTransitionContextCount
    [out] Pointeur vers le nombre de contextes de transition figurant dans le tableau.

  • uiSizeOfContext
    [in] Taille de la structure de contexte.

  • Flags
    [in] Défini sur 0 ou sur SOS_STACKTRACE_SHOWADDRESSES (0x01) pour afficher le registre EBP et l'ESP (Enter Stack Pointer) devant chaque ligne module!functionname.

Notes

La structure _EFN_StackTrace peut être appelée à partir d'une interface de programmation WinDbg. Les paramètres sont utilisés de la façon suivante :

  • Si wszTextOut a pour valeur null et que puiTextLength n'a pas pour valeur null, la fonction retourne alors la longueur de chaîne figurant dans puiTextLength.

  • Si wszTextOut n'a pas pour valeur null, la fonction stocke alors le texte dans wszTextOut jusqu'à l'emplacement indiqué par puiTextLength. Il retourne une valeur si la taille de la mémoire tampon est suffisante ou il retourne E_OUTOFMEMORY dans le cas contraire.

  • La partie de transition de la fonction est ignorée si pTransitionContexts et puiTransitionContextCount ont tous deux pour valeur null. Dans ce cas, la fonction fournit des appelants avec pour sortie de texte uniquement les noms de fonction.

  • Si pTransitionContexts a pour valeur null et que puiTransitionContextCount n'a pas pour valeur null, la fonction retourne le nombre nécessaire d'entrées de contexte dans puiTransitionContextCount.

  • Si pTransitionContexts n'a pas pour valeur null, la fonction le traite comme un tableau de structures de longueur puiTransitionContextCount. La taille de la structure est indiquée par uiSizeOfContext. Sa valeur doit être SimpleContext ou CONTEXT pour l'architecture.

  • wszTextOut est écrit dans le format suivant :

    "<ModuleName>!<Function Name>[+<offset in hex>]
    ...
    (TRANSITION)
    ..."
    
  • Si l'offset en hexadécimaux est 0x0, aucun offset n'est écrit.

  • En l'absence de code managé sur le thread figurant actuellement dans le contexte, la fonction retourne alors SOS_E_NOMANAGEDCODE.

  • Le paramètre Flags est 0 ou SOS_STACKTRACE_SHOWADDRESSES pour voir EBP et ESP devant chaque ligne module!functionname. Sa valeur par défaut est 0.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001
    

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : SOS_Stacktrace.h

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Autres ressources

Fonctions statiques globales du débogage