DebuggableAttribute.DebuggingModes Wyliczenie

Definicja

Określa tryb debugowania 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

Nazwa Wartość Opis
None 0

Począwszy od .NET Framework w wersji 2.0, informacje śledzenia JIT są zawsze generowane, a ta flaga ma taki sam efekt jak Default, z tą różnicą, że ustawia właściwość IsJITTrackingEnabled na false. Jednak ze względu na to, że śledzenie JIT jest zawsze włączone, wartość właściwości jest ignorowana w wersji 2.0 lub nowszej.

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

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 magazynu symboli, jeśli istnieje. Począwszy od .NET Framework w wersji 2.0, informacje śledzenia JIT, przesunięcie Microsoft języka pośredniego (MSIL) na przesunięcie kodu natywnego w metodzie, jest zawsze generowane.

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 Microsoft języka pośredniego (MSIL) dla każdego wiersza źródłowego. Gdy kompilator just in time (JIT) ma skompilować metodę, pyta usługi profilowania o listę przesunięć MSIL, które powinny zostać zachowane. Te przesunięcia MSIL są nazywane punktami sekwencji.

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.

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ślna (wartość domyślna | DisableOptimizations), aby włączyć śledzenie JIT i wyłączyć optymalizacje.

Uwagi

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

Tryb debugowania Wynik
Żadne Śledzenie, włączono optymalizacje JIT
Domyślnie Śledzenie, włączono optymalizacje JIT
DisableOptimizations Śledzenie, włączono optymalizacje JIT
Wartość domyślna | DisableOptimizations Śledzenie, optymalizacje JIT są wyłączone

Punkty sekwencji są używane do wskazywania lokalizacji w kodzie języka pośredniego Microsoft (MSIL), którego oczekuje użytkownik debugera, aby mógł odwoływać się do unikatowego punktu przerwania, na przykład do ustawiania punktu przerwania. Kompilator JIT gwarantuje, że nie kompiluje biblioteki 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), aby uzyskać listę dodatkowych punktów sekwencji. Jednak zał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.

Note

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

Dotyczy