ICorDebugVariableHome Arabirimi
Bir işlevin yerel değişkenini veya bağımsız değişkenini temsil eder.
Yöntemler
Yöntem | Açıklama |
---|---|
GetArgumentIndex Yöntemi | İşlev bağımsız değişkeninin dizinini alır. |
GetCode Yöntemi | Bu ICorDebugVariableHome nesneyi içeren "ICorDebugCode" örneğini alır. |
GetLiveRange Yöntemi | Bu değişkenin üzerinde bulunduğu yerel aralığı alır. |
GetLocationType Yöntemi | Değişkenin yerel konumunun türünü alır. |
GetOffset Yöntemi | Bir değişken için temel yazmaçtan uzaklığı alır. |
GetRegister Yöntemi | konum türüne sahip bir değişken içeren yazmaç ve konum türü VLT_REGISTER olan bir değişken VLT_REGISTER_RELATIVE için temel yazmaç alır. |
GetSlotIndex Yöntemi | Yerel değişkenin yönetilen yuva dizinini alır. |
Örnek
Aşağıdaki kod parçası adlı pCode4
ICorDebugCode4 nesnesini kullanır.
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;
}
}
Gereksinimler
Platform: Bkz. Sistem Gereksinimleri.
Üstbilgi: CorDebug.idl, CorDebug.h
Kitaplığı: CorGuids.lib
.NET Framework Sürümleri: 4.6.2 sürümünden itibaren kullanılabilir
Ayrıca bkz.
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.