DebuggableAttribute.DebuggingModes 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定 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
- 繼承
- 屬性
欄位
| 名稱 | 值 | Description |
|---|---|---|
| None | 0 | 從 .NET Framework 2.0 版本開始,JIT 追蹤資訊會一直產生,這個旗標的效果與 Default 相同,只是它將 IsJITTrackingEnabled 屬性設為 請注意,與旗 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。