共用方式為


DkmClrRuntimeInstance 類別

定義

表示在目標進程中執行的CLR實例。

衍生類別:DkmClrNcRuntimeInstance

public ref class DkmClrRuntimeInstance : Microsoft::VisualStudio::Debugger::DkmRuntimeInstance
[System.Runtime.InteropServices.Guid("ea234770-c86f-1706-8842-c6fb5311ba79")]
public class DkmClrRuntimeInstance : Microsoft.VisualStudio.Debugger.DkmRuntimeInstance
[<System.Runtime.InteropServices.Guid("ea234770-c86f-1706-8842-c6fb5311ba79")>]
type DkmClrRuntimeInstance = class
    inherit DkmRuntimeInstance
Public Class DkmClrRuntimeInstance
Inherits DkmRuntimeInstance
繼承
繼承
衍生
屬性

屬性

Capabilities

運行時間功能的列舉。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

(繼承來源 DkmRuntimeInstance)
Connection

這代表監視器與 IDE 之間的連線。 如果監視器在與 IDE 相同的進程中執行,則它可以是本機連線,也可以是遠端連線。 在監視程式中,只有一個連線。

(繼承來源 DkmRuntimeInstance)
CORSystemDirectory

[選擇性]Common Language Runtime (CLR) 實例的安裝目錄。 例如 『c:\Windows\Microsoft.NET\Framework\v2.0.50727』。 這是從 GetCORSystemDirectory API 傳回的相同路徑,而且一律包含尾端斜線。

Id

識別進程內的 DkmRuntimeInstance 物件。

(繼承來源 DkmRuntimeInstance)
IsUnloaded

如果已針對這個對象引發 'unloaded' 事件,則傳回 true (範例:DkmThread::Unload 會呼叫) 或物件已關閉。 請注意,檢查此狀態時必須小心,而不進行同步處理,傳回的狀態在讀取之後可能無法再精確指示。

(繼承來源 DkmDataContainer)
ParentRuntime

[選擇性]對於在另一個運行時間之上實作的運行時間,這可以選擇性地用來對邏輯父系進行索引。 然後,當子運行時間未實作服務時,這可用來向父代要求服務。 這目前僅用於取得頂端堆疊框架,以在子運行時間不會逐步執行堆疊本身時評估條件式斷點。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

(繼承來源 DkmRuntimeInstance)
Process

DkmProcess 代表正在偵錯的目標進程。 調試程式會偵錯進程,因此這是偵錯的基本單位。 DkmProcess 可以代表系統進程或虛擬進程,例如minidumps。

(繼承來源 DkmRuntimeInstance)
RuntimeVersion

[選擇性]CLR 實例的版本字串 (例如:'v2.0.50727') 。

TagValue

DkmRuntimeInstance 是抽象基類。 這個列舉表示這個物件的衍生類別是的實例。

(繼承來源 DkmRuntimeInstance)

方法

AfterSteppingArbitration(DkmStepper, DkmStepArbitrationReason, DkmRuntimeInstance)

在逐步執行仲裁完成但下一個運行時間實例開始逐步執行之前,舊控制運行時間實例上的逐步執行管理員會呼叫 AfterSteppingArbitration。 這可讓運行時間在另一個運行時間控制時清除任何逐步執行狀態。 如果沒有其他運行時間監視器宣告目前的位置,原始監視器應該會完成此步驟。 這表示 NewControllingRuntimeInstance 為 null。 例如,運行時間實例可以選擇在沒有符號的位置上,而沒有其他運行時間控制時,可以選擇跳回。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
BeforeEnableNewStepper(DkmStepper)

BeforeEnableNewStepper 會在啟用新的步驟程式之前,由逐步執行管理員呼叫。 這可讓運行時間執行任何可能需要的初始化,例如執行前置函式評估。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
BindMethodToObject(DkmStackWalkFrame, UInt64, DkmClrModuleInstance, Int32, DkmClrType, Int32)

嘗試將 Token 和 Module 所述的 方法系結至這個物件。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

此 API 是在 Visual Studio 17 Update 8 (DkmApiVersion.VS17Update8) 中引進。

CanDoFuncEval(DkmThread)

檢查指定的線程是否處於 CLR 支援 Managed func-evals 的狀態。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

ContinueForFuncEval(DkmThread, ICorDebugEval, DkmFuncEvalFlags, UInt32, String)

繼續此程式,並等候 func-eval 完成。 呼叫端應該一律執行 『CanDoFuncEval』,再建立 ICorDebugEval 並設定評估。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

ContinueForFuncEval(DkmThread, ICorDebugEval, DkmFuncEvalFlags, UInt32, String, DkmClrInstructionAddress)

繼續此程式,並等候 func-eval 完成。 呼叫端應該一律執行 『CanDoFuncEval』,再建立 ICorDebugEval 並設定評估。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

此 API 是在 Visual Studio 15 RTM (DkmApiVersion.VS15RTM) 中引進。

Create(DkmProcess, DkmRuntimeInstanceId, DkmRuntimeCapabilities, DkmRuntimeInstance, String, String, DkmDataItem)

從偵錯監視器建立新的運行時間實例物件。 當偵錯監視器偵測到新的運行時間實例已載入 (時,當對應的運行時間 dll 載入目標進程) 時,必須從事件線程呼叫這個方法。

這個方法會傳送 RuntimeInstanceLoad 事件。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

Create(DkmProcess, DkmRuntimeInstanceId, String, String, DkmDataItem)

從偵錯監視器建立新的運行時間實例物件。 當偵錯監視器偵測到新的運行時間實例已載入 (時,當對應的運行時間 dll 載入目標進程) 時,必須從事件線程呼叫這個方法。

這個方法會傳送 RuntimeInstanceLoad 事件。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

Disassemble(DkmInstructionAddress, UInt32)

在偵錯運行時間中反組譯位址範圍。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

(繼承來源 DkmRuntimeInstance)
FindAppDomain(Int32)

在此 DkmClrRuntimeInstance 中尋找 DkmClrAppDomain 元素。 如果沒有具有指定輸入索引鍵的專案存在,FindAppDomain 將會失敗。

FindClrModuleInstance(ICorDebugModule)

從 ICorDebugModule 取得 DkmClrModuleInstance。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

FindModulesByName(String)

這個方法會傳回符合指定名稱的所有模組。

(繼承來源 DkmRuntimeInstance)
GetActiveStatements(DkmActiveStatement[])

提供所有線程上所有作用中語句的堆疊。 因此,如果相同的函式在呼叫堆疊上多次,則會在此數位中重複。 堆疊中的專案會依線程分組。

位置條件約束:可以從用戶端到伺服器端呼叫。

此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 引進。

GetActiveStatements(DkmWorkList, DkmCompletionRoutine<DkmGetActiveStatementsAsyncResult>)

提供所有線程上所有作用中語句的堆疊。 因此,如果相同的函式在呼叫堆疊上多次,則會在此數位中重複。 堆疊中的專案會依線程分組。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

位置條件約束:可以從用戶端到伺服器端呼叫。

此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 引進。

GetAliases(DkmInspectionContext)

取得目前可用於表達式的別名清單。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

GetAppDomains()

GetAppDomains 會列舉這個 DkmClrRuntimeInstance 物件的 DkmClrAppDomain 元素。

GetApplyUpdateCapabilities()

取得執行時間所支援之一組 [編輯後繼續] 編輯的功能字串。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引進。

GetApplyUpdateCapabilities(DkmWorkList, DkmCompletionRoutine<DkmGetApplyUpdateCapabilitiesAsyncResult>)

取得執行時間所支援之一組 [編輯後繼續] 編輯的功能字串。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引進。

GetArrayLayoutForType(DkmManagedTypeId)

假設有 Managed 類型識別碼,請取得該類型的數位配置。

此 API 是在 Visual Studio 17 Update 5 (DkmApiVersion.VS17Update5) 引進。

GetCodePathsInRange(ICorDebugFrame, UInt32, UInt32)

呼叫 GetCodePathsInRange 以取得特定 IL 範圍中的程式代碼路徑。

位置條件約束:它應該只在伺服器端呼叫。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

(繼承來源 DkmRuntimeInstance)
GetCorFrame(DkmThread, UInt64, Guid)

GetCorFrame 可用來取得 ICorDebugFrame,元件可用來深入檢查堆疊框架。

傳回的介面只能用來檢查目標進程,而且絕對不要用來控制執行 (不執行、沒有斷點、沒有繼續等) 。 不支援這麼做,而且會導致未定義的行為。

位置條件約束:必須從目標運行時間實作堆疊逐步解說的相同進程呼叫此 API。 針對 Managed 偵錯,這表示偵錯 64 位或遠端進程時,必須從偵錯監視器元件呼叫此 API。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

GetCorProcess()

提供 ICorDebugProcess 物件的直接存取權,讓表示式評估工具或其他元件可用於檢查。

傳回的介面只能用來檢查目標進程,而且絕對不要用來控制執行 (不執行、沒有斷點、沒有繼續等) 。 不支援這麼做,而且會導致未定義的行為。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

GetCorThread(DkmThread)

提供 ICorDebugThread 物件的直接存取權,讓表達式評估工具或其他元件可用來檢查應用程式域。

傳回的介面只能用來檢查目標進程,而且絕對不要用來控制執行 (不執行、沒有斷點、沒有繼續等) 。 不支援這麼做,而且會導致未定義的行為。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

GetDataItem<T>()

取得已新增至這個容器實例的 『T』 實例。 如果此容器不包含 『T』,此函式會傳回 null。

(繼承來源 DkmDataContainer)
GetEncAvailability(String)

檢查對應的運行時間實例是否支援 Edit 和 Continue。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

此 API 是在 Visual Studio 16 Update 1 (DkmApiVersion.VS16Update1) 中引進。

GetInstructionAddress(DkmInstructionAddress, Int32)

傳回相對於起始位址之 kth 指令的位址。 對於常數長度指令集,這是簡單的算術。 對於可變長度指令集,需要反向反組譯碼才能取得此位址。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

(繼承來源 DkmRuntimeInstance)
GetIntrinsicAssemblyMetaDataBytesPtr(UInt32)

取得「內建方法元件」的元數據。 內建方法是偵錯引擎在執行CLR檢查查詢時瞭解的特殊方法。 範例:在 C# 運算式評估工具中評估 「$exception」 時,C# 運算式編譯程式會在內建方法元件中發出 GetException 的呼叫。 調試程式會改為模擬方法呼叫,並在目前線程上傳回例外狀況,而不是正常執行呼叫。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

GetManagedHeapSamplers()

GetManagedHeapSamplers 會列舉這個 DkmRuntimeInstance 物件的 DkmManagedHeapSampler 元素。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

(繼承來源 DkmRuntimeInstance)
GetManagedHeapWalkers()

GetManagedHeapWalkers 會列舉這個 DkmRuntimeInstance 物件的 DkmManagedHeapWalker 元素。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

(繼承來源 DkmRuntimeInstance)
GetMethodReturnAddresses(DkmClrModuleInstance, DkmClrMethodId)

在指定方法中尋找所有重試指令位址的內部協助程式方法。 鈮! 位址會指向實際的 IL,而不是目前/先前的序列點!

位置條件約束:無。

此 API 是在 Visual Studio 16 Update 6 (DkmApiVersion.VS16Update6) 引進。

GetModuleInstances()

GetModuleInstances 會列舉這個 DkmRuntimeInstance 物件的 DkmModuleInstance 元素。

(繼承來源 DkmRuntimeInstance)
GetOutOfProcStepAddresses(DkmStepper, DkmStackWalkFrame, DkmSteppingRange[])

內部協助程式方法,用於尋找逐步執行/覆寫的候選位址。

位置條件約束:無。

此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。

GetScriptDocumentTreeNodes()

GetScriptDocumentTreeNodes 會列舉這個 DkmRuntimeInstance 物件的 DkmScriptDocumentTreeNode 元素。

(繼承來源 DkmRuntimeInstance)
GetSymbolNameForAddress(DkmWorkList, UInt64, DkmCompletionRoutine<DkmGetSymbolNameForAddressAsyncResult>)

使用運行時間資訊,取得指定位址的符號名稱,而不是符號。 目前,這隻會針對 CLR 運行時間實例實作。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

此 API 是在 Visual Studio 16 Update 7 (DkmApiVersion.VS16Update7) 引進。

(繼承來源 DkmRuntimeInstance)
GetTaskProviders()

GetTaskProviders 會列舉這個 DkmRuntimeInstance 物件的 DkmTaskProvider 元素。

(繼承來源 DkmRuntimeInstance)
GetThreadDisplayProperties(DkmWorkList, DkmThread, DkmCompletionRoutine<DkmGetThreadDisplayPropertiesAsyncResult>)

取得線程的顯示屬性,包括顯示名稱和線程類別目錄。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

(繼承來源 DkmRuntimeInstance)
GetThreadName(DkmThread)

計算線程的名稱。

(繼承來源 DkmRuntimeInstance)
GetThreadName(DkmWorkList, DkmThread, DkmCompletionRoutine<DkmGetThreadNameAsyncResult>)

計算線程的名稱。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

(繼承來源 DkmRuntimeInstance)
GetTypeLayoutForType(DkmManagedTypeId)

假設有受控類型識別碼,請取得該類型的類型配置。

此 API 是在 Visual Studio 17 Update 6 (DkmApiVersion.VS17Update6) 引進。

NotifyStepComplete(DkmStepper)

當步驟完成時,所有非控制運行時間實例上的逐步執行管理員都會呼叫 NotifyStepComplete。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
OnFuncEvalQuickAbortDllLoaded(DkmThread, Boolean)

通知嘗試載入 FEQA DLL 的結果。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

OnLoadComplete()

這個方法是由偵錯監視器呼叫,以引發 RuntimeInstanceLoadComplete 事件。 RuntimeInstanceLoadComplete 目前只會針對原生運行時間實例傳送,不過未來可能會變更。 在建立運行時間實例中初始模組集的 DkmModuleInstance 物件之後,就會發出事件。

這個方法只能由建立 物件的元件呼叫。

此 API 是在 Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2) 引進。

(繼承來源 DkmRuntimeInstance)
OnNewControllingRuntimeInstance(DkmStepper, DkmStepArbitrationReason, DkmRuntimeInstance)

在步驟仲裁選取新的控制運行時間實例之後,所有非控制運行時間實例上的逐步執行管理員會呼叫 OnNewControllingRuntimeInstance。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
OwnsCurrentExecutionLocation(DkmStepper, DkmStepArbitrationReason)

在搜尋監視器以執行步驟時,由逐步執行管理員呼叫 OwnsCurrentExecutionLocation。 如果此監視器瞭解偵錯範圍中的目前位置,可以在這裡傳回 true 以控制步驟。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
PrepareForFuncEvalQuickAbort(DkmThread, Boolean, UInt64)

檢查是否應該載入 FEQA DLL。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

ReenableFuncEval(String)

嘗試重新啟用 func-eval。

此 API 是在 Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4) 中引進。

RemoveDataItem<T>()

從這個容器中移除 『T』 的實例。 通常不需要呼叫這個方法,因為數據容器會在物件關閉時自動清空。

(繼承來源 DkmDataContainer)
ResolveCPUInstructionAddress(DkmWorkList, UInt64, DkmCompletionRoutine<DkmResolveCPUInstructionAddressAsyncResult>)

將 CPU 指示Address 解析為運行時間特定的 DkmInstructionAddress 物件。

此 API 目前只有 CLR DkmRuntimeInstance 物件支援,而 CLR 執行時間實例目前只能尋找目前位於目標進程中其中一個線程呼叫堆疊的方法中的指令位址。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

位置條件約束:此 API 通常應該在用戶端上呼叫,但可以在伺服器上呼叫,以便將 CLR 位址轉譯 (,而不是原生編譯) 。

(繼承來源 DkmRuntimeInstance)
ResolveCPUInstructionAddress(UInt64, Boolean)

將 CPU 指示Address 解析為運行時間特定的 DkmInstructionAddress 物件。

此 API 目前只有 CLR DkmRuntimeInstance 物件支援,而 CLR 執行時間實例目前只能尋找目前位於目標進程中其中一個線程呼叫堆疊的方法中的指令位址。

位置條件約束:此 API 通常應該在用戶端上呼叫,但可以在伺服器上呼叫,以便將 CLR 位址轉譯 (,而不是原生編譯) 。

(繼承來源 DkmRuntimeInstance)
SetDataItem<T>(DkmDataCreationDisposition, T)

將新專案放在數據容器中。

(繼承來源 DkmDataContainer)
SetRegisterValue(DkmStackWalkFrame, Int32, ReadOnlyCollection<Byte>)

在線程的內容中設定緩存器的值。 支援由大型緩存器組成的子緩存器。

(繼承來源 DkmRuntimeInstance)
Step(DkmStepper, DkmStepArbitrationReason)

步驟是由逐步執行管理員在判斷此監視器之後呼叫,這是執行步驟的正確監視器。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
StepControlRequested(DkmStepper, DkmStepArbitrationReason, DkmRuntimeInstance)

當非控制運行時間實例偵測到線程已叫用轉換到其運行時間時,逐步執行管理員會呼叫 StepControlRequested。 如果目前的控制運行時間實例可以停止逐步執行,它應該將 Granted 設定為 true。 在要求運行時間呼叫 DkmStepper.TakeStepControl 之前,不會提供實際控件。 這兩個部分程式可讓呼叫端同時要求控制多個階梯。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
StopStep(DkmStepper)

當逐步執行程式繼續清除步驟的任何剩餘逐步執行狀態時,逐步執行管理員會呼叫 StopStep。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
TakeStepControl(DkmStepper, Boolean, DkmStepArbitrationReason, DkmRuntimeInstance)

當非控制運行時間實例偵測到線程已叫用轉換到運行時間時,逐步管理員會呼叫TakeStepControl。 逐步執行管理員會將呼叫轉送至目前的控制運行時間實例。 要求控件的運行時間實例應該先在想要控制的所有階梯上呼叫 StepControlRequested。 如果它們全都設定為 true,運行時間實例應該在每個步驟程式上呼叫此方法,以控制它。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

(繼承來源 DkmRuntimeInstance)
TryDisableFuncEval(String)

嘗試停用 func-eval。

此 API 是在 Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4) 中引進。

Unload()

當監視器叫用 DkmRuntimeInstance::Unload 時,發送器會傳送 RuntimeInstanceUnload。

這個方法只能由建立 物件的元件呼叫。

(繼承來源 DkmRuntimeInstance)

適用於