Udostępnij za pośrednictwem


DebuggableAttribute.DebuggingModes Wyliczenie

Definicja

Określa tryb debugowania dla kompilatora just in time (JIT).

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

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
Dziedziczenie
DebuggableAttribute.DebuggingModes
Atrybuty

Pola

Default 1

Instruuje kompilator just in time (JIT), aby używał domyślnego zachowania, w tym włączania optymalizacji, wyłączania obsługi funkcji Edytuj i Kontynuuj oraz używania punktów sekwencji przechowywania symboli, jeśli są obecne. Począwszy od .NET Framework w wersji 2.0, informacje o śledzeniu JIT, przesunięcie języka microsoft pośredniego (MSIL) na przesunięcie kodu natywnego w metodzie jest zawsze generowane.

DisableOptimizations 256

Wyłącz optymalizacje wykonywane przez kompilator, aby plik wyjściowy był mniejszy, szybszy i bardziej wydajny. Optymalizacje powodują ponowne rozmieszczenie kodu w pliku wyjściowym, co może utrudnić debugowanie. Zazwyczaj optymalizacja powinna być wyłączona podczas debugowania. W wersjach 2.0 lub nowszych połącz tę wartość z wartością Domyślną (wartość domyślna | DisableOptimizations) w celu włączenia śledzenia JIT i wyłączenia optymalizacji.

EnableEditAndContinue 4

Włącz edycję i kontynuuj. Edytowanie i kontynuowanie umożliwia wprowadzanie zmian w kodzie źródłowym, gdy program jest w trybie przerwania. Możliwość edytowania i kontynuowania jest zależna od kompilatora.

IgnoreSymbolStoreSequencePoints 2

Użyj niejawnych punktów sekwencji MSIL, a nie punktów sekwencji bazy danych programu (PDB). Informacje symboliczne zwykle zawierają co najmniej jedno przesunięcie języka pośredniego (MSIL) firmy Microsoft dla każdego wiersza źródłowego. Gdy kompilator just in time (JIT) ma skompilować metodę, zwraca się do usług profilowania o listę przesunięć MSIL, które powinny zostać zachowane. Te przesunięcia MSIL są nazywane punktami sekwencji.

None 0

Począwszy od .NET Framework wersji 2.0, informacje o śledzeniu JIT są zawsze generowane, a ta flaga ma taki sam efekt jak Default, z wyjątkiem tego, że ustawia IsJITTrackingEnabled właściwość na false. Jednak ponieważ śledzenie JIT jest zawsze włączone, wartość właściwości jest ignorowana w wersji 2.0 lub nowszej.

Należy pamiętać, None że w przeciwieństwie do DisableOptimizations flagi nie można użyć flagi do wyłączania optymalizacji JIT.

Uwagi

Wyliczenie DebuggableAttribute.DebuggingModes określa sposób śledzenia informacji ważnych dla debugera podczas generowania kodu. Te informacje pomagają debugerowi zapewnić bogate środowisko debugowania. W przeciwieństwie do .NET Framework w wersji 1.1, wersje 2.0 lub nowsze nie umożliwiają wyłączania śledzenia przez kompilator just in time (JIT). Śledzenie JIT jest zawsze włączone dla plików możliwych do debugowania. W wersji 2.0 lub nowszej wartości wyliczenia mają następujący efekt.

Tryb debugowania Wynik
Brak Śledzenie włączone optymalizacji JIT
Default Śledzenie włączone optymalizacji JIT
DisableOptimizations Śledzenie włączone optymalizacji JIT
Wartość domyślna | DisableOptimizations Śledzenie, optymalizacja JIT jest wyłączona

Punkty sekwencji służą do wskazywania lokalizacji w kodzie języka pośredniego firmy Microsoft (MSIL), do którego oczekuje się, że użytkownik debugera będzie mógł odwoływać się do unikatowo, na przykład do ustawiania punktu przerwania. Kompilator JIT zapewnia, że nie kompiluje MSIL w dwóch różnych punktach sekwencji w jednej instrukcji natywnej. Domyślnie kompilator JIT sprawdza magazyn symboli w pliku bazy danych programu (PDB) dla listy dodatkowych punktów sekwencji. Jednak ładowanie pliku PDB wymaga, aby plik był dostępny i ma negatywny wpływ na wydajność. Począwszy od wersji 2.0, kompilatory mogą emitować "niejawne punkty sekwencji" w strumieniu kodu MSIL za pomocą instrukcji MSIL.nop" Takie kompilatory powinny ustawić flagę IgnoreSymbolStoreSequencePoints , aby powiadomić środowisko uruchomieniowe języka wspólnego, aby nie załadować pliku PDB.

Uwaga

Ta wyliczenie jest używana głównie przez deweloperów języków. Zwykle nie jest on używany w tworzeniu aplikacji. Środowiska programistyczne są używane DebuggableAttribute.DebuggingModes na podstawie parametrów kompilatora, takich jak /debug i /optimize.

Dotyczy