DebuggableAttribute.DebuggingModes Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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 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.