DebuggableAttribute.DebuggingModes Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt den Debugmodus für den Just-In-Time (JIT)-Compiler an.
Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.
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
- Vererbung
- Attribute
Felder
Default | 1 | Weist den Just-In-Time (JIT)-Compiler an, sein Standardverhalten zu verwenden. Dieses umfasst das Aktivieren von Optimierungen, das Deaktivieren des Bearbeiten- und Fortfahren-Supports und das Verwenden von Symbolspeichersequenzpunkten (sofern vorhanden). In .NET Framework Version 2.0 werden JIT-Tracking-Informationen (der MSIL-Offset (Microsoft Intermediate Language) zum Offset des systemeigenen Codes in einer Methode) immer generiert. |
DisableOptimizations | 256 | Deaktivieren Sie die vom Compiler durchgeführten Optimierungen, damit Ihre Ausgabedatei kleiner, schneller und effizienter wird. Optimierungen führen zu Neuanordnungen von Code in der Ausgabedatei, wodurch das Debuggen erschwert werden kann. In der Regel sollte die Optimierung beim Debuggen deaktiviert werden. Kombinieren Sie diesen Wert in den Versionen ab 2.0 mit Default (Default | DisableOptimizations), um JIT-Tracking zu aktivieren und Optimierungen zu deaktivieren. |
EnableEditAndContinue | 4 | Aktivieren Sie Bearbeiten und Fortfahren. Mit Bearbeiten und Fortfahren können Sie Änderungen am Quellcode vornehmen, während sich das Programm im Unterbrechungsmodus befindet. Die Möglichkeit des Bearbeitens und Fortfahrens ist vom Compiler abhängig. |
IgnoreSymbolStoreSequencePoints | 2 | Verwenden Sie die impliziten MSIL-Sequenzpunkte und nicht die Programmdatenbank-Sequenzpunkte (PDB). Die Symbolinformationen enthalten i. d. R. mindestens einen MSIL-Offset (Microsoft Intermediate Language) für jede Quellzeile. Bevor der JIT-Compiler (Just-In-Time) eine Methode kompiliert, fordert er von den Profilerstellungsdiensten eine Liste der zu speichernden MSIL-Offsets an. Diese MSIL-Offsets werden Sequenzpunkte genannt. |
None | 0 | Ab .NET Framework Version 2.0 werden stets JIT-Tracking-Informationen generiert. Dieses Flag hat denselben Effekt wie Default, jedoch mit der Ausnahme, dass die IsJITTrackingEnabled-Eigenschaft auf Beachten Sie, dass das None-Flag im Gegensatz zum DisableOptimizations-Flag nicht zum Deaktivieren von JIT-Optimierungen verwendet werden kann. |
Hinweise
Die DebuggableAttribute.DebuggingModes Enumeration gibt an, wie die Runtime informationen nachverfolgen soll, die für den Debugger während der Codegenerierung wichtig sind. Diese Informationen helfen dem Debugger, eine umfassende Debugumgebung bereitzustellen. Im Gegensatz zur .NET Framework Version 1.1 können Sie mit Version 2.0 oder höher die Nachverfolgung durch den JIT-Compiler (Just-in-Time) nicht deaktivieren. Die JIT-Nachverfolgung ist für debugfähige Dateien immer aktiviert. In Version 2.0 und höher wirken sich die Enumerationswerte wie folgt aus.
Debugmodus | Ergebnis |
---|---|
Keine | Nachverfolgen, JIT-Optimierungen aktiviert |
Standard | Nachverfolgen, JIT-Optimierungen aktiviert |
DisableOptimizations | Nachverfolgen, JIT-Optimierungen aktiviert |
Standard | DisableOptimizations | Nachverfolgen, JIT-Optimierungen deaktiviert |
Sequenzpunkte werden verwendet, um Positionen im MSIL-Code (Microsoft Intermediate Language) anzugeben, auf die ein Debuggerbenutzer voraussichtlich eindeutig verweisen kann, z. B. zum Festlegen eines Haltepunkts. Der JIT-Compiler stellt sicher, dass er die MSIL nicht an zwei verschiedenen Sequenzpunkten in eine einzelne native Anweisung kompiliert. Standardmäßig untersucht der JIT-Compiler den Symbolspeicher in der PDB-Datei (Program Database) auf eine Liste mit zusätzlichen Sequenzpunkten. Das Laden der PDB-Datei erfordert jedoch, dass die Datei verfügbar ist und sich negativ auf die Leistung auswirkt. Ab Version 2.0 können Compiler "implizite Sequenzpunkte" im MSIL-Codestream ausgeben, indem sie MSIL-Anweisungennop"
verwenden. Solche Compiler sollten das IgnoreSymbolStoreSequencePoints
Flag festlegen, um die Common Language Runtime zu benachrichtigen, dass die PDB-Datei nicht geladen wird.
Hinweis
Diese Enumeration wird in erster Linie von Sprachentwicklern verwendet. Es wird in der Regel nicht in der Anwendungsentwicklung verwendet. Entwicklungsumgebungen verwenden DebuggableAttribute.DebuggingModes basierend auf Compilerparametern wie /debug und /optimize.