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