DebuggableAttribute.DebuggingModes 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定 Just-In-Time (JIT) 編譯器的偵錯模式。
此列舉支援其成員值的位元組合。
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
- 繼承
- 屬性
欄位
Default | 1 | 指示 Just-In-Time (JIT) 編譯器使用其預設行為,這些行為包括啟用最佳化設定、停用編輯後繼續支援,以及使用符號存放區的序列點 (如果有的話)。 從 .NET Framework 2.0 版開始,永遠會產生 JIT 追蹤資訊 (方法中 Microsoft 中間語言 (MSIL) 位移至機器碼位移)。 |
DisableOptimizations | 256 | 停用編譯器執行的最佳化,可讓您的輸出檔案變得更小、更快、更有效率。 最佳化是在輸出檔案中程式碼重新排列所產生的結果,它可能會造成偵錯困難。 一般來說,偵錯時應該停用最佳化。 在 2.0 (含) 以後版本中,這個值與 Default (Default | DisableOptimizations) 結合以啟用 JIT 追蹤並停用最佳化。 |
EnableEditAndContinue | 4 | 啟用 [編輯後繼續]。 [編輯後繼續] 可以讓您在程式處於中斷模式時,變更您的原始程式碼。 編輯後繼續的功能與編譯器有相依性。 |
IgnoreSymbolStoreSequencePoints | 2 | 使用隱含式 MSIL 序列點,不是程式資料庫 (PDB) 序列點。 符號資訊通常會為每個來源行包括至少一個 Microsoft Intermediate Language (MSIL) 位移。 Just-In-Time (JIT) 編譯器要編譯方法時,會為應該保留的 MSIL 位移清單要求逐步分析服務。 這些 MSIL 位移稱為「序列點」。 |
None | 0 | 從 .NET Framework 2.0 版開始,永遠會產生 JIT 追蹤資訊,而且這個旗標與 Default 的作用相同,除了它會設定 IsJITTrackingEnabled 屬性為 請注意,不同於 DisableOptimizations 旗標,None 旗標不能用來停用 JIT 最佳化。 |
備註
列舉 DebuggableAttribute.DebuggingModes 會指定運行時間如何在程式代碼產生期間追蹤調試程式重要資訊。 這項資訊可協助調試程式提供豐富的偵錯體驗。 不同於 .NET Framework 1.1 版,2.0 版或更新版本不允許您關閉 Just-In-Time (JIT) 編譯程序的追蹤。 JIT 追蹤一律會針對可偵錯的檔案啟用。 在 2.0 版和更新版本中,列舉值具有下列效果。
偵錯模式 | 結果 |
---|---|
None | 啟用 JIT 優化後追蹤 |
預設 | 啟用 JIT 優化後追蹤 |
DisableOptimizations | 啟用 JIT 優化後追蹤 |
預設值 |DisableOptimizations | 追蹤,已停用 JIT 優化 |
序列點可用來指出 Microsoft 中繼語言 (MSIL) 程式代碼中,調試程式使用者預期能夠唯一參考的位置,例如設定斷點。 JIT 編譯程式可確保它不會在兩個不同的序列點將 MSIL 編譯成單一原生指令。 根據預設,JIT 編譯程式會檢查程式資料庫中的符號存放區, (PDB) 檔案中是否有其他序列點的清單。 不過,載入 PDB 檔案需要檔案可供使用,並對效能造成負面影響。 從 2.0 版開始,編譯程式可以透過使用 MSIL “ 指令,在 MSIL 程式代碼資料流中發出「隱含序列點」nop"
。 這類編譯程式應該設定 IgnoreSymbolStoreSequencePoints
旗標,以通知 Common Language Runtime 不要載入 PDB 檔案。
注意
此列舉主要是由語言開發人員使用。 它通常不會用於應用程式開發。 開發環境會根據編譯程序參數使用DebuggableAttribute.DebuggingModes,例如 /debug 和 /optimize。