共用方式為


DkmInstructionSymbol 類別

定義

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) 。

適用於