ICorDebugVariableHome, interface
Représente une variable ou un argument local d’une fonction.
Méthodes
Méthode | Description |
---|---|
GetArgumentIndex, méthode | Obtient l’index d’un argument de fonction. |
GetCode, méthode | Obtient l’instance de « ICorDebugCode » qui contient cet objet ICorDebugVariableHome . |
GetLiveRange, méthode | Obtient la plage native pour laquelle cette variable est active. |
GetLocationType, méthode | Obtient le type de l’emplacement natif de la variable. |
GetOffset, méthode | Obtient le décalage du registre de base pour une variable. |
GetRegister, méthode | Obtient le registre qui contient une variable ayant le type d’emplacement VLT_REGISTER ainsi que le registre de base d’une variable ayant le type d’emplacement VLT_REGISTER_RELATIVE . |
GetSlotIndex, méthode | Obtient l’index d’emplacement managé d’une variable locale. |
Exemple
Le fragment de code suivant utilise l’objet ICorDebugCode4 nommé pCode4
.
ICorDebugCode4 *pCode4 = NULL;
pCode->QueryInterface(IID_ICorDebugCode4, &pCode4);
ICorDebugVariableEnum *pVarLocEnum = NULL;
pCode4->EnumerateVariableHomes(&pVarLocEnum);
// retrieve local variables and arguments
ULONG celt = 0;
pVarLocEnum->GetCount(&celt);
ICorDebugVariableHome **homes = new ICorDebugVariableHome *[celt];
ULONG celtFetched = 0;
pVarLocEnum->Next(celt, homes, &celtFetched);
for (int i = 0; i < celtFetched; i++)
{
VariableLocationType locType = VLT_INVALID;
homes[i].GetLocationType(&locType);
switch (locType)
{
case VLT_REGISTER:
CorDebugRegister register = 0;
locals[i].GetRegister(®ister);
// now we know which register it is in
break;
case VLT_REGISTER_RELATIVE:
CorDebugRegister baseRegister = 0;
LONG offset = 0;
locals[i].GetRegister(®ister);
locals[i].GetOffset(&offset);
// now we know the register-relative offset
break;
case VLT_INVALID:
// handle case where we can't access the location
break;
}
}
Configuration requise
Plateformes : Consultez Configuration requise.
En-tête : CorDebug.idl, CorDebug.h
Bibliothèque : CorGuids.lib
Versions de .NET Framework : Disponibles depuis la version 4.6.2
Voir aussi
Collaborer avec nous sur GitHub
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.