DebuggableAttribute.DebuggingModes 列舉

定義

指定 Just-In-Time 編譯程式的偵錯模式。

此列舉支援其成員值的位元組合。

public: enum class DebuggableAttribute::DebuggingModes
[System.Flags]
public enum DebuggableAttribute.DebuggingModes
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum DebuggableAttribute.DebuggingModes
[<System.Flags>]
type DebuggableAttribute.DebuggingModes = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DebuggableAttribute.DebuggingModes = 
Public Enum DebuggableAttribute.DebuggingModes
繼承
DebuggableAttribute.DebuggingModes
屬性

欄位

名稱 Description
None 0

從 .NET Framework 2.0 版本開始,JIT 追蹤資訊會一直產生,這個旗標的效果與 Default 相同,只是它將 IsJITTrackingEnabled 屬性設為 false。 然而,由於 JIT 追蹤始終啟用,在 2.0 版本或更新版本中,屬性值會被忽略。

請注意,與旗 DisableOptimizations 標不同,旗 None 標無法用來停用 JIT 優化。

Default 1

指示即時(JIT)編譯器使用其預設行為,包括啟用優化、停用編輯與繼續支援,以及若有符號儲存序列點。 從 .NET Framework 2.0 版本開始,JIT 追蹤資訊(Microsoft intermediate language,MSIL)偏移量與方法內原生程式碼偏移量,總是會產生。

IgnoreSymbolStoreSequencePoints 2

使用隱含的 MSIL 序列點,而非程式資料庫(PDB)序列點。 符號資訊通常包含每行至少一個 Microsoft 中間語言(MSIL)偏移量。 當即時(JIT)編譯器準備編譯方法時,會向分析服務索取一份應該保留的 MSIL 偏移量清單。 這些 MSIL 偏移稱為序列點。

EnableEditAndContinue 4

啟用編輯並繼續。 編輯並繼續功能讓你在程式處於中斷狀態時,也能修改原始碼。 編輯與繼續的能力取決於編譯器。

DisableOptimizations 256

關閉編譯器執行的優化,讓輸出檔案更小、更快、更有效率。 優化會導致輸出檔的程式碼重新排列,這會使除錯變得困難。 通常除錯時應該關閉優化功能。 在 2.0 或更新版本中,將此值與 Default(Default |DisableOptimizations)來啟用 JIT 追蹤並關閉優化。

備註

DebuggableAttribute.DebuggingModes列舉定義執行時如何追蹤除錯器在程式碼產生過程中重要的資訊。 這些資訊幫助除錯器提供豐富的除錯體驗。 與 .NET Framework 1.1 版本不同,2.0 或更新版本不允許關閉即時(JIT)編譯器的追蹤功能。 對於可除錯的檔案,JIT 追蹤始終啟用。 在 2.0 版本及之後版本中,列舉值有以下效果。

除錯模式 Result
沒有 追蹤開啟,啟用 JIT 優化
預設值 追蹤開啟,啟用 JIT 優化
DisableOptimizations 追蹤開啟,啟用 JIT 優化
預設 |DisableOptimizations 追蹤開啟,JIT 優化已停用

序列點用來指示 Microsoft 中介語言(MSIL)程式碼中除錯器使用者期望能唯一參照的位置,例如設定斷點。 JIT 編譯器確保不會將兩個不同序列點的 MSIL 編譯成單一原生指令。 預設情況下,JIT 編譯器會檢查程式資料庫(PDB)檔案中的符號儲存庫,尋找額外的序列點清單。 然而,載入 PDB 檔案需要該檔案必須可用,且會對效能產生負面影響。 從 2.0 版本開始,編譯器可以透過 MSIL 「nop" 指令」在 MSIL 程式碼流中發出「隱含序列點」。 此類編譯器應設定 IgnoreSymbolStoreSequencePoints 旗標,通知通用語言執行時不要載入 PDB 檔案。

Note

這種列舉方式主要被語言開發者使用。 它通常不被應用於應用程式開發中。 開發環境基於編譯器參數如 /debug/optimize 進行使用DebuggableAttribute.DebuggingModes

適用於