DkmInstructionSymbol 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
DkmInstructionSymbol 代表目標進程中的方法。
衍生類別:DkmClrInstructionSymbol、DkmClrNcInstructionSymbol、DkmCustomInstructionSymbol、DkmNativeInstructionSymbol、DkmScriptInstructionSymbol
public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmInstructionSymbol abstract
[Windows::Foundation::Metadata::WebHostHidden]
class DkmInstructionSymbol abstract
[System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")]
public abstract class DkmInstructionSymbol
[<System.Runtime.InteropServices.Guid("c55d7b4d-246f-0e5a-e37e-c9d9f2d996c6")>]
type DkmInstructionSymbol = class
Public MustInherit Class DkmInstructionSymbol
- 繼承
-
DkmInstructionSymbol
- 衍生
- 屬性
屬性
Module |
DkmModule 類別代表程式代碼組合 (例如:dll 或 exe) ,也就是或一次載入一或多個進程。 DkmModule 類別是符號 API 的中央物件,而且是 1:1,而符號處理程式會表示載入的內容。 如果程式代碼組合載入三個不同的進程 (或相同的進程,但有三個不同的基位址或三個不同的應用程式域) 但符號處理程式會將這兩者視為相同,則只有一個模組物件。 |
RuntimeType |
運行時間識別碼段的執行環境。 發送器會使用運行時間標識碼來決定要分派的監視。 請注意,運行時間標識符 Guid 的排序稍微重要,這表示在仲裁期間,哪個運行時間會取得第一次。 因此,如果想要宣告建置在CLR上的新運行時間實例,運行時間標識碼應該小於 DkmRuntimeId.Clr。 |
TagValue |
DkmInstructionSymbol 是抽象基類。 這個列舉表示這個對像是實例的衍生類別。 |
方法
Bind(DkmModuleInstance) |
將指令符號系結至特定模組實例。 指令符號會連線到 DkmModule,而不是 DkmModuleInstance,因此它不會繫結至特定進程、應用程式域或模組基位址。 |
GetAlternateSourcePosition(DkmSourcePositionFlags) |
傳回替代原始程式檔位置 (例如:此指令符號example.cs行 12 行) 。 這目前用於來源對應案例,以傳回原始 (未對應) 來源位置。 如果找不到主要來源位置,調試程式 UI 將會呼叫此 API。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) 引進。 |
GetBasicInfo(DkmWorkList, DkmModuleInstance, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetBasicSymbolInfoAsyncResult>) |
以異步方式計算指定 DkmInstructionSymbol 的基本符號資訊。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。 |
GetCompilerId(DkmInspectionSession) |
傳回指定符號 (LanguageId/VendorId) 編譯程式識別符。 針對 Microsoft PDB 讀取器,如果 PDB 是由使用 ISymUnmanagedWriter 的編譯程式所建立,則 PDB 讀取器將能夠從從 ISymUnmanagedWriter.DefineDocument 傳遞的 LanguageId/VendorId 配對判斷正確的 DkmCompilerId。 如果 PDB 是由未使用 ISymUnmanagedWriter 的編譯程式所建立,PDB 讀取器可能會從 S_COMPILE* PDB 記錄取得 DkmCompilerId。 如此一來,編譯程式必須先針對每個編譯程式發出S_COMPILE* 記錄。 編譯程式必須確定已正確填寫語言列舉值和編譯程式字串。 編譯程式應該確保編譯程式字串足以用於選取表達式評估工具;建議包含公司名稱。 發出列舉/名稱組之後,表達式評估工具的設定應該會向調試程序註冊此配對。 若要這樣做,表達式評估工具應該設定此登錄機碼:%VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% 並定義 VendorId/LanguageId。 |
GetCompilerId(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetCompilerIdAsyncResult>) |
傳回指定符號 (LanguageId/VendorId) 編譯程式識別符。 針對 Microsoft PDB 讀取器,如果 PDB 是由使用 ISymUnmanagedWriter 的編譯程式所建立,則 PDB 讀取器將能夠從從 ISymUnmanagedWriter.DefineDocument 傳遞的 LanguageId/VendorId 配對判斷正確的 DkmCompilerId。 如果 PDB 是由未使用 ISymUnmanagedWriter 的編譯程式所建立,PDB 讀取器可能會從 S_COMPILE* PDB 記錄取得 DkmCompilerId。 如此一來,編譯程式必須先針對每個編譯程式發出S_COMPILE* 記錄。 編譯程式必須確定已正確填寫語言列舉值和編譯程式字串。 編譯程式應該確保編譯程式字串足以用於選取表達式評估工具;建議包含公司名稱。 發出列舉/名稱組之後,表達式評估工具的設定應該會向調試程序註冊此配對。 若要這樣做,表達式評估工具應該設定此登錄機碼:%VSRegistryRoot%\Debugger\CodeView Compilers%CodeViewLanguageCode%:%CompilerName% 並定義 VendorId/LanguageId。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。 |
GetCurrentStatementRange() |
這個方法會傳回 IL 位移範圍,其中包含指令位址中指定的目前 IL 位移。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
GetDisassemblyLabel(DkmInspectionSession) |
傳回符號的名稱,因為它應該出現在反組譯碼視窗中。 針對 Microsoft C++ 程式代碼,這是以公用符號名稱為基礎。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetEmbeddedDocument() |
傳回包含此符號的內嵌檔。 如果內嵌檔不存在,則傳回S_FALSE。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 引進。 |
GetGPUInstructionMetadataCallback(DkmInstructionAddress, DkmInstructionSymbol) |
這個方法會將位址資訊傳回至 GPU 偵錯監視器。 |
GetInlineFramesCount(DkmBasicSymbolInfoRequestFlags) |
傳回指定指令符號處內嵌框架的數目。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。 |
GetInlineFramesCount(DkmWorkList, DkmBasicSymbolInfoRequestFlags, DkmCompletionRoutine<DkmGetInlineFramesCountAsyncResult>) |
傳回指定指令符號處內嵌框架的數目。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。 |
GetInlineSourcePosition(DkmStackWalkFrame, Boolean) |
傳回來源檔案位置 (例如:example.cs,此指令符號的第 12 行) 位於指定的內嵌框架編號。 如果這個指令符號與原始程式檔沒有關聯,則會在原生) 傳回 null (S_FALSE 傳回碼。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 15 RTM (DkmApiVersion.VS15RTM) 中引進。 |
GetInlineSourcePosition(DkmWorkList, DkmStackWalkFrame, DkmCompletionRoutine<DkmGetInlineSourcePositionAsyncResult>) |
傳回來源檔案位置 (例如:example.cs,此指令符號的第 12 行) 位於指定的內嵌框架編號。 如果這個指令符號與原始程式檔沒有關聯,則會在原生) 傳回 null (S_FALSE 傳回碼。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 15 RTM (DkmApiVersion.VS15RTM) 中引進。 |
GetNoSourceRanges() |
查詢符號提供者,以判斷未對應至任何使用者來源語句的指令範圍,並由基底偵錯監視器用來在逐步執行期間一律逐步執行。 |
GetSourcePosition(DkmSourcePositionFlags, DkmInspectionSession, Boolean) |
傳回原始程式檔位置 (例如:example.cs,此指令符號的第 12 行) 。 如果這個指令符號與原始程式檔沒有關聯,則會在原生) 傳回 null (S_FALSE 傳回碼。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSourcePosition(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionAsyncResult>) |
傳回原始程式檔位置 (例如:example.cs,此指令符號的第 12 行) 。 如果這個指令符號與原始程式檔沒有關聯,則會在原生) 傳回 null (S_FALSE 傳回碼。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSourcePositionCallback(DkmSourcePositionFlags, DkmInspectionSession, Boolean) |
傳回原始程式檔位置 (例如:example.cs,此指令符號的第 12 行) 。 如果這個指令符號與原始程式檔沒有關聯,則會在原生) 傳回 null (S_FALSE 傳回碼。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
GetSourcePositionCallback(DkmWorkList, DkmSourcePositionFlags, DkmInspectionSession, DkmCompletionRoutine<DkmGetSourcePositionCallbackAsyncResult>) |
傳回原始程式檔位置 (例如:example.cs,此指令符號的第 12 行) 。 如果這個指令符號與原始程式檔沒有關聯,則會在原生) 傳回 null (S_FALSE 傳回碼。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
GetSteppingRanges(DkmSteppingRangeBoundary, Boolean) |
查詢符號提供者,以判斷基底偵錯監視器應該逐步執行以實作步驟的指示範圍。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 |
GetSteppingRanges(DkmWorkList, DkmSteppingRangeBoundary, Boolean, DkmCompletionRoutine<DkmGetSteppingRangesAsyncResult>) |
查詢符號提供者,以判斷基底偵錯監視器應該逐步執行以實作步驟的指示範圍。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 |
GetUserCodeSourcePositionCallback(DkmInspectionSession) |
傳回來源檔案位置 (例如:example.cs,此指令符號的第 12 行) 。 如果這個指令符號與原始程式代碼中沒有關聯,則會傳回 null (E_INSTRUCTION_NO_SOURCE 傳回碼) 。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 |
GetUserCodeSourcePositionCallback(DkmWorkList, DkmInspectionSession, DkmCompletionRoutine<DkmGetUserCodeSourcePositionCallbackAsyncResult>) |
傳回來源檔案位置 (例如:example.cs,此指令符號的第 12 行) 。 如果這個指令符號與原始程式代碼中沒有關聯,則會傳回 null (E_INSTRUCTION_NO_SOURCE 傳回碼) 。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 |
HasEmbeddedDocument() |
測試指定的符號是否有內嵌檔。 內嵌檔是原始程式檔 (例如:main.cs) 内嵌在符号档内 (,例如:example.pdb) 。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 引進。 |
HasLineInfo() |
查詢符號提供者,以判斷是否有行資訊。 偵錯監視器用來判斷位置是否可視為用戶程序代碼。 位置條件約束:對於一般符號,可以從任何元件呼叫。 針對動態符號,只能在伺服器端呼叫。 |
HasLineInfo(DkmWorkList, DkmCompletionRoutine<DkmHasLineInfoAsyncResult>) |
查詢符號提供者,以判斷是否有行資訊。 偵錯監視器用來判斷位置是否可視為用戶程序代碼。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:對於一般符號,可以從任何元件呼叫。 針對動態符號,只能在伺服器端呼叫。 |
IsHiddenCode(DkmWorkList, DkmInspectionSession, DkmInstructionAddress, DkmCompletionRoutine<DkmIsHiddenCodeAsyncResult>) |
如果這個指令符號位於隱藏的程式代碼中,則傳回 。 例如,在Managed程式碼中,行號0xfeefee將源行標示為隱藏。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |