Partager via


k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)

Les commandes k* affichent le cadre de pile du thread donné avec des informations associées.

Mode utilisateur, processeur x86

[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[~Thread] kd [WordCount]

Mode noyau, processeur x86

[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[Processor] kd [WordCount]

Mode utilisateur, processeur x64

[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]

Mode noyau, processeur x64

[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]

Mode utilisateur, processeur ARM

[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]

Mode noyau, processeur ARM

[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]

Paramètres

Thread
Spécifie la pile de threads à afficher. Si vous omettez ce paramètre, la pile du thread actuel s’affiche. Pour plus d’informations sur la syntaxe de thread, consultez Syntaxe de thread. Vous pouvez spécifier des threads uniquement en mode utilisateur.

Processeur
Spécifie le processeur dont la pile doit être affichée. Pour plus d’informations sur la syntaxe du processeur, consultez Syntaxe multiprocesseur.

b
Affiche les trois premiers paramètres passés à chaque fonction dans la trace de pile.

c
Affiche une trace de pile propre. Chaque ligne d’affichage inclut uniquement le nom du module et le nom de la fonction.

p
Affiche tous les paramètres de chaque fonction appelée dans la trace de pile. La liste des paramètres inclut le type de données, le nom et la valeur de chaque paramètre. L’option p respecte la casse. Ce paramètre nécessite des informations complètes sur les symboles.

P
Affiche tous les paramètres de chaque fonction appelée dans la trace de pile, comme le p paramètre. Toutefois, pour P, les paramètres de fonction sont imprimés sur une deuxième ligne de l’affichage, plutôt que sur la même ligne que le reste des données.

v
Affiche les informations d’omission du pointeur de trame (FPO). Sur les processeurs x86, l’affichage inclut également des informations de convention d’appel.

n
Affiche les numéros de trame.

f
Affiche la distance entre les images adjacentes. Cette distance correspond au nombre d’octets qui séparent les images sur la pile réelle.

L
Masque les lignes sources dans l’affichage. L respecte la casse.

M
Affiche la sortie à l’aide du langage de balisage débogueur. Chaque numéro de trame dans l’affichage est un lien que vous pouvez sélectionner pour définir le contexte local et afficher les variables locales. Pour plus d’informations sur le contexte local, consultez .frame.

FrameCount
Spécifie le nombre d’images de pile à afficher. Vous devez spécifier ce nombre au format hexadécimal, sauf si vous avez modifié le radix à l’aide de la commande n (set number base). Utilisez la commande .kframes (définir la longueur de la pile) pour afficher la valeur par défaut et modifier la valeur.

BasePtr
Spécifie le pointeur de base pour la trace de pile. Le BasePtr paramètre est disponible uniquement s’il existe un signe égal (=) après la commande.

StackPtr
Spécifie le pointeur de pile pour la trace de pile. Si vous omettez StackPtr et InstructionPtr, la commande utilise le pointeur de pile que le registre rsp (ou esp) spécifie et le pointeur d’instruction spécifié par le registre d’extraction (ou eip).

InstructionPtr
Spécifie le pointeur d’instruction pour la trace de pile. Si vous omettez StackPtr et InstructionPtr, la commande utilise le pointeur de pile que le registre rsp (ou esp) spécifie et le pointeur d’instruction spécifié par le registre d’extraction (ou eip).

WordCount
Spécifie le nombre de valeurs DWORD_PTR dans la pile à vider.

Environnement  
Modes Mode utilisateur, mode noyau
Targets Vidage en direct sur incident
Plateformes Tous

Remarques

Lorsque vous émettez les kcommandes , kb, kpkP, ou kv , une trace de pile s’affiche dans un format tabulaire. Si le chargement de ligne est activé, les modules sources et les numéros de ligne sont également affichés.

La trace de pile inclut le pointeur de base pour le cadre de pile, l’adresse de retour et les noms des fonctions.

Si vous utilisez les kp commandes ou kP , les paramètres complets de chaque fonction appelée dans la trace de pile s’affichent. La liste des paramètres inclut le type de données, le nom et la valeur de chaque paramètre.

La commande peut être lente. Par exemple, lorsque vous MyFunction1 appelez MyFunction2, le débogueur doit disposer d’informations complètes sur les symboles pour MyFunction1 afficher les paramètres passés dans cet appel. Cette commande n’affiche pas entièrement les routines Microsoft Windows internes qui ne sont pas exposées dans les symboles publics.

Si vous utilisez les kb commandes ou kv , les trois premiers paramètres passés à chaque fonction s’affichent. Si vous utilisez la commande, les kv données FPO s’affichent également.

Sur un processeur x86, la kv commande affiche également les informations de convention d’appel.

Lorsque vous utilisez la kv commande, les informations FPO sont ajoutées à la fin de la ligne au format suivant.

Texte de l’objet de stratégie de groupe Signification
FPO : [non-Fpo] Aucune donnée FPO pour le cadre.
FPO : [N1,N2,N3] N1 est le nombre total de paramètres.

N2 est le nombre de valeurs DWORD pour les variables locales.

N3 correspond au nombre de registres enregistrés.
FPO : [N1,N2] TrapFrame @ Address N1 est le nombre total de paramètres.

N2 est le nombre de valeurs DWORD pour les locaux.

Adresse est l’adresse du cadre d’interruption.
FPO : Segment TaskGate : 0 Segment est le sélecteur de segment pour la porte de tâche.
FPO : [EBP 0xBase] Base est le pointeur de base du cadre.

La kd commande affiche les données de pile brutes. Chaque valeur DWORD est affichée sur une ligne distincte. Les informations sur les symboles sont affichées pour ces lignes avec les symboles associés. Ce format crée une liste plus détaillée que les autres k* commandes. La kd commande est équivalente à une commande dds (mémoire d’affichage) qui utilise l’adresse de la pile comme paramètre.

Si vous utilisez la k commande au début d’une fonction (avant l’exécution du prologue de la fonction), vous recevez des résultats incorrects. Le débogueur utilise le registre de trames pour calculer le backtrace actuel, et ce registre n’est pas défini correctement pour une fonction tant que son prologue n’a pas été exécuté.

En mode utilisateur, la trace de pile est basée sur la pile du thread actuel. Pour plus d’informations sur les threads, consultez Contrôle des processus et des threads.

En mode noyau, la trace de pile est basée sur le contexte de registre actuel. Vous pouvez définir le contexte de registre pour qu’il corresponde à un thread, un enregistrement de contexte ou une trame d’interruption spécifique.

Informations supplémentaires

Pour plus d’informations sur le contexte d’inscription et d’autres paramètres de contexte, consultez Modification des contextes.