Partager via


Objets de tas TTD

Description

Les objets de tas TTD sont utilisés pour fournir des informations sur les appels de tas qui se produisent au cours d’une trace.

Propriétés

Chaque objet tas aura ces propriétés.

Propriété Description
Action Décrit l’action qui s’est produite. Les valeurs possibles sont : Alloc, ReAlloc, Free, Create, Protect, Lock, Unlock, Destroy.
Segment de mémoire (heap) Handle pour le tas Win32.

Propriétés conditionnelles

En fonction de l’objet tas, il peut avoir certaines des propriétés ci-dessous.

Propriété Description
Adresse Adresse de l’objet alloué.
PreviousAddress Adresse de l’objet alloué avant sa réaffectation. Si l’adresse n’est pas la même que PreviousAddress, la réaffectation a provoqué le déplacement de la mémoire.
Taille Taille et/ou taille demandée d’un objet alloué.
BaseAddress Adresse d’un objet alloué dans le tas. Il peut représenter l’adresse qui sera libérée (Libre) ou l’adresse de l’objet avant sa réaffectation (ReAlloc.)
Indicateurs La signification dépend de l’API.
Result Résultat de l’appel de l’API de tas. La valeur non zéro signifie la réussite et zéro signifie l’échec.
ReserveSize Quantité de mémoire à réserver pour le tas.
CommitSize Taille initiale validée pour le tas.
MakeReadOnly Une valeur non nulle indique une requête pour effectuer le tas en lecture seule ; Une valeur nulle indique que le tas doit être en lecture-écriture.

Children

Object Description
TimeStart Objet position qui décrit la position au début de l’allocation.
TimeEnd Objet position qui décrit la position à la fin de l’allocation.

Exemple d’utilisation

Utilisez cette commande dx (Display Debugger Object Model Expression) pour afficher la mémoire du tas dans une grille à l’aide de l’option -g.

0:0:000> dx -g @$cursession.TTD.Data.Heap()
=======================================================================================================================================================
=                          = Action     = Heap          = Address       = Size      = Flags  = (+) TimeStart = (+) TimeEnd = Result = PreviousAddress =
=======================================================================================================================================================
= [0x0] : [object Object]  - Alloc      - 0xaf0000      - 0xb0cfd0      - 0x4c      - 0x0    - FAB:17B1      - FAD:40      -        -                 =
= [0x1] : [object Object]  - Alloc      - 0xaf0000      - 0xb07210      - 0x34      - 0x8    - FB1:9         - FB3:74      -        -                 =
= [0x2] : [object Object]  - Alloc      - 0xaf0000      - 0xb256d8      - 0x3c      - 0x8    - E525:174      - E526:E1     -        -                 =

La sortie peut être décrite comme des « données normalisées », car il existe un ensemble choisi d’API qui représentent des opérations de tas. Les données extraites des paramètres appropriés sont présentées de manière uniforme.

En cliquant sur TimeStart ou TimeEnd, vous accédez à ce point dans la trace.

Cliquez sur le champ paramètres en regard d’une entrée spécifique pour afficher les informations de paramètre disponibles.

dx -r1 @$cursession.TTD.Data.Heap()[2].@"Parameters"
@$cursession.TTD.Data.Heap()[2].@"Parameters"                
    [0x0]            : 0x16c7d780000
    [0x1]            : 0x280000
    [0x2]            : 0x20
    [0x3]            : 0x0
...    

Augmentez la valeur de récursivité -r pour afficher des informations supplémentaires.

Voir aussi

Débogage de voyage dans le temps - Introduction aux objets de débogage de voyage dans le temps

Débogage de voyage dans le temps - Vue d’ensemble

dx (Afficher l’expression du modèle d’objet de débogage)