Udostępnij za pośrednictwem


Optymalizacja i debugowanie JIT

Podczas debugowania aplikacji zarządzanych, program Visual Studio pomija optymalizację kodu just in time (JIT) domyślnie.Pomijanie optymalizacji JIT oznacza, że debugujesz kod niezoptymalizowany.Kod działa nieco wolniej, ponieważ nie jest zoptymalizowany, ale masz dużo większe doświadczenie w debugowaniu.Debugowanie zoptymalizowanego kodu jest trudniejsze i zalecane tylko wtedy, gdy występuje błąd, który pojawia się w zoptymalizowanym kod, lecz nie może być odtworzony w wersji niezoptymalizowanej.

Optymalizacja JIT jest kontrolowana w Visual Studio przez pomijanie załadowania optymalizacji JIT w module opcji.Można znaleźć tę opcję na stronie General w węźle Debugging okienka dialogowego Options .

Jeśli wyczyścisz opcję Pomijaj optymalizację JIT podczas ładowania modułu, można debugować zoptymalizowany kod JIT, ale może być ograniczona możliwość debugowania, ponieważ zoptymalizowany kod nie pasuje do kodu źródłowego.W rezultacie okna debugera, takie jak Elementy lokalne i Autos mogą nie wyświetlać tylu informacji, ile by wyświetlały, gdybyś debugował kod niezoptymalizowany.

Inna ważna różnica dotyczy debugowania przy użyciu Tylko mój kod.Jeśli debugujesz z funkcją Tylko mój kod, debuger uważa zoptymalizowany kod za niebędący kodem użytkownika, który nie powinien być wyświetlany podczas debugowania.W związku z tym jeśli debugujesz zoptymalizowany kod JIT, prawdopodobnie chcesz wyłączyć Tylko mój kod.Aby uzyskać więcej informacji, zobacz Ogranicz przechodzenie krok po kroku do funkcji Tylko mój kod.

Należy pamiętać, że opcja Pomija optymalizację JIT w obciążeniu modułu powoduje pominięcie optymalizacji kodu podczas załadowania modułu.Jeśli dołączysz do procesu, który jest już uruchomiony, może zawierać kod, który jest już załadowany, skompilowany przez funkcję JIT i zoptymalizowany.Opcja Pomijanie optymalizacji JIT przy ładowaniu modułu nie ma wpływu na taki kod, chociaż ma wpływ na moduły, które są ładowane po dołączeniu.Ponadto opcja Pomijaj optymalizację JIT podczas ładowania modułu nie wpływa na moduły, takie jak WinForms.dll, które są tworzone za pomocą narzędzia NGEN.

Zobacz też

Koncepcje

Rozpoczynanie, przerywanie, wykonywanie krokowe, przechodzenie przez kod i zatrzymywanie debugowania w programie Visual Studio

Proces zarządzanego wykonania

Inne zasoby

Debugowanie zarządzanego kodu

Dołączanie do uruchomionego procesu za pomocą debugera programu Visual Studio