DebuggableAttribute.DebuggingModes Enumerazione

Definizione

Specifica la modalità di debug per il compilatore JIT (Just-In-Time).

Questa enumerazione supporta una combinazione bit per bit dei rispettivi valori dei membri.

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
Ereditarietà
DebuggableAttribute.DebuggingModes
Attributi

Campi

Default 1

Indica al compilatore JIT di usare il comportamento predefinito, in cui sono incluse l'attivazione delle ottimizzazioni, la disattivazione del supporto di modifica e continuazione e l'utilizzo dei punti di sequenza dell'archivio dei simboli, se presente. A partire da .NET Framework versione 2.0, le informazioni di verifica JIT, che rappresentano l'offset MSIL (Microsoft Intermediate Language) del codice nativo all'interno di un metodo, vengono sempre generate.

DisableOptimizations 256

Disabilitare le ottimizzazioni eseguite dal compilatore per ridurre le dimensioni e aumentare la velocità e l'efficienza dell'output. Le ottimizzazioni comportano una riorganizzazione del codice nel file di output, che può rendere difficoltoso il debug. Durante il debug è generalmente opportuno disabilitare l'ottimizzazione. Nelle versioni 2.0 o successive, combinare questo valore con Default (Default | DisableOptimizations) per abilitare il rilevamento JIT e disabilitare le ottimizzazioni.

EnableEditAndContinue 4

Abilitare Modifica e continuazione. Modifica e continuazione consente di modificare il codice sorgente quando il programma è in modalità interruzione. La capacità di modificare e continuare dipende dal compilatore.

IgnoreSymbolStoreSequencePoints 2

Usare i punti di sequenza MSIL impliciti, non i punti di sequenza PDB (Program DataBase). Le informazioni sui simboli includono generalmente almeno un offset MSIL (Microsoft Intermediate Language) per ogni riga del codice sorgente. Quando il compilatore JIT (Just-In-Time) sta per compilare un metodo, richiede ai servizi relativi ai profili un elenco di offset MSIL da conservare. Tali offset MSIL sono denominati punti di sequenza.

None 0

A partire da .NET Framework versione 2.0, le informazioni di verifica JIT vengono sempre generate e questo flag ha lo stesso effetto di Default, eccetto il fatto che imposta la proprietà IsJITTrackingEnabled su false. Tuttavia, poiché la verifica JIT è sempre abilitata, il valore della proprietà viene ignorato nella versione 2.0 o successiva.

Si noti che, a differenza del flag DisableOptimizations, il flag None non può essere usato per disabilitare le ottimizzazioni JIT.

Commenti

L'enumerazione DebuggableAttribute.DebuggingModes specifica come il runtime deve tenere traccia delle informazioni importanti per il debugger durante la generazione di codice. Queste informazioni consentono al debugger di offrire un'esperienza di debug avanzata. A differenza di .NET Framework versione 1.1, le versioni 2.0 o successive non consentono di disattivare il rilevamento dal compilatore JIT (Just-In-Time). Il rilevamento JIT è sempre abilitato per i file debug. Nella versione 2.0 e versioni successive, i valori di enumerazione hanno l'effetto seguente.

Modalità di debug Risultato
nessuno Rilevamento su, ottimizzazioni JIT abilitate
Impostazione predefinita Rilevamento su, ottimizzazioni JIT abilitate
DisableOptimizations Rilevamento su, ottimizzazioni JIT abilitate
Impostazione predefinita | DisableOptimizations Rilevamento su, ottimizzazioni JIT disabilitate

I punti di sequenza vengono usati per indicare i percorsi nel codice MSIL (Microsoft Intermediate Language) che un utente del debugger prevede di poter fare riferimento in modo univoco, ad esempio per l'impostazione di un punto di interruzione. Il compilatore JIT garantisce che non compila MSIL in due punti di sequenza diversi in un'unica istruzione nativa. Per impostazione predefinita, il compilatore JIT esamina l'archivio simboli nel file PDB (Program Database) per un elenco di punti di sequenza aggiuntivi. Tuttavia, il caricamento del file PDB richiede che il file sia disponibile e abbia un impatto negativo sulle prestazioni. A partire dalla versione 2.0, i compilatori possono generare "punti di sequenza implicita" nel flusso di codice MSIL tramite l'uso delle istruzioni MSILnop" . Tali compilatori devono impostare il IgnoreSymbolStoreSequencePoints flag per notificare al common language runtime di non caricare il file PDB.

Nota

Questa enumerazione viene usata principalmente dagli sviluppatori del linguaggio. In genere non viene usato nello sviluppo di applicazioni. Gli ambienti di sviluppo usano DebuggableAttribute.DebuggingModes in base ai parametri del compilatore, ad esempio /debug e /optimize.

Si applica a