Debugowanie aplikacji poprzez rejestrowanie wykonywania kodu za pomocą narzędzia IntelliTrace
Aby spędzić mniej czasu na debugowaniu aplikacji, zapisz i śledź historię jej wykonywania za pomocą IntelliTrace w programie Visual Studio Ultimate.Dzięki temu możesz szybciej znaleźć błędy bez ustawiania wielu punktów przerwania, ponieważ IntelliTrace umożliwia:
Zapisywać określone zdarzenia, które miały miejsce w aplikacji.
W ten sposób możesz sprawdzić kod pokrewny, dane, które pojawiają się w oknie Lokalne w czasie zdarzenia debugowania i informacje o wywołaniach funkcji, jeśli zdecydujesz się je zebrać.
Ogranicz ponowne uruchamianie aplikacji do odtworzenia błędów lub wydarzeń.
Debuguj błędy, które są trudne do odtworzenia lub zdarzyły się poza programem Visual Studio, na przykład w środowiskach produkcyjnych lub innych.
Ten przykład pokazuje, jak zapisywanie zdarzeń pomoże Ci znaleźć błąd w kodzie:
Obejrzyj działanie IntelliTrace: Zbieranie i analizowanie danych IntelliTrace do debugowania (wideo Channel 9)
Co chcesz zrobić?
Debuguj aplikację za pomocą IntelliTrace w programie Visual Studio:
|
|
Zbieraj dane IntelliTrace podczas sesji testowej w Menedżerze testów |
|
Zbieraj dane IntelliTrace z aplikacji uruchamianych poza programem Visual Studio |
|
Uruchom debugowanie z pliku dziennika IntelliTrace (.iTrace file). |
CZĘSTO ZADAWANE PYTANIA
Jakie aplikacje można debugować za pomocą IntelliTrace?
Dlaczego debugować za pomocą IntelliTrace?
Jakie dane są zbierane przez IntelliTrace?
Czy IntelliTrace spowolni moją aplikację?
Jakie aplikacje można debugować za pomocą IntelliTrace?
Obsługiwane |
|
Ograniczona obsługa |
|
Nieobsługiwane |
|
[!UWAGA]
Jeśli chcesz debugować proces, który jest już uruchomiony, nie można użyć IntelliTrace.IntelliTrace należy uruchomić podczas uruchamiania procesu.
Dlaczego debugować za pomocą IntelliTrace?
Standardowe debugowanie lub na żywo pokazuje tylko bieżący stan aplikacji z ograniczoną ilością danych na temat przeszłych zdarzeń.Musisz albo wywnioskować te zdarzenia na podstawie bieżącego stanu aplikacji lub musisz odtworzyć te zdarzenia, ponownie uruchamiając aplikację.
IntelliTrace rozszerza standardowe debugowanie poprzez zapisywanie określonych zdarzeń i danych w konkretnym czasie.Dzięki temu można zobaczyć, co wydarzyło się w aplikacji bez ponownego jej uruchamiania, zwłaszcza jeśli znajdujesz się już dalej niż tam, gdzie występował błąd.IntelliTrace jest domyślnie włączany podczas standardowego debugowania i zbiera dane automatycznie i w sposób niewidoczny.W ten sposób można łatwo przełączać się między standardowym debugowaniem i debugowaniem IntelliTrace, aby wyświetlić zapisane informacje.Zobacz Rejestrowanie wykonywania kodu za pomocą narzędzia IntelliTrace na potrzeby debugowania w programie Visual Studio i Jakie dane są zbierane przez IntelliTrace?
IntelliTrace może również debugować błędy, które są trudne do odtworzenia lub mają miejsce poza programem Visual Studio.Możesz zbierać dane IntelliTrace i zapisać je do pliku dziennika IntelliTrace (plik .iTrace).Plik .iTrace zawiera szczegóły dotyczące wyjątków, wątków, żądań sieci Web, danych testowych, modułów i innych informacji o systemie.Możesz otworzyć ten plik w Visual Studio Ultimate, wybrać element, a potem rozpocząć debugowanie za pomocą IntelliTrace.Dzięki temu możesz przejść do dowolnego zdarzenia w pliku i zobaczyć szczegółowe informacje na temat aplikacji w danym momencie.
Możesz zapisać dane IntelliTrace z następujących źródeł:
Sesja IntelliTrace w Visual Studio Ultimate
Sesja testowa w Menedżerze testów firmy Microsoft
Aplikacje działające poza programem Visual Studio, na przykład w środowisku produkcyjnym i innych środowiskach
Visual Studio 2012.1: Aplikacje monitorowane przez System Center 2012 Service Pack 1 (SP1) - Operations Manager zawierający IntelliTrace Profiling Management Pack.Zob. Sposoby konfigurowania integracji za pomocą IntelliTrace w programie System Center 2012.
Zobacz Debugowanie aplikacji poprzez pliki dziennika IntelliTrace (.iTrace).
Oto kilka przykładów, jak IntelliTrace może pomóc w debugowaniu:
Twoja aplikacja ma uszkodzony plik danych, ale nie wiesz, gdzie miało miejsce to zdarzenie.
Nie mając IntelliTrace, musisz szukać kodu, aby znaleźć możliwy dostęp do pliku, ustalić punkty przerwania w tym dostępie i ponownie uruchomić aplikację, aby znaleźć miejsce wystąpienia problemu.Mając IntelliTrace, możesz zobaczyć wszystkie zebrane zdarzenia dostępu do plików i szczegółowe informacje o aplikacji podczas każdorazowego wystąpienia zdarzenia.
Ma miejsce wyjątek.
Bez IntelliTrace pojawia się komunikat o wyjątku, ale nie masz wielu informacji o zdarzeniach, które doprowadziły do wyjątku.Możesz analizować stos wywołań, aby zobaczyć łańcuch wywołań, który doprowadził do wyjątku, ale nie widać sekwencji zdarzeń, które wystąpiły podczas tych wywołań.Z IntelliTrace można sprawdzić zdarzenia, które stały się przed wystąpieniem wyjątku.
Twoja aplikacja przestaje działać na komputerze testowym, ale pomyślnie działa na komputerze deweloperskim.
Możesz zbierać dane IntelliTrace z Microsoft Test Manager, zapisać dane w pliku .iTrace i dołączyć ten plik do elementu pracy programu Team Foundation Server, aby przeprowadzić późniejszą analizę.Zobacz Włączając dane diagnostyczne śledzenia z błędów, które są Difficult, aby odtworzyć i Debugowanie aplikacji poprzez pliki dziennika IntelliTrace (.iTrace).
Błąd lub awaria ma miejsce w aplikacji, która działa poza Visual Studio.
W przypadku aplikacji opartych na systemie Windows Azure przed opublikowaniem aplikacji możesz skonfigurować zbieranie danych IntelliTrace.Podczas wykonywania aplikacji IntelliTrace zapisuje dane w pliku .iTrace.Zobacz Debugowanie usługi Published Cloud Service za pomocą IntelliTrace i Visual Studio.
W przypadku zarządzanych aplikacji pulpitu (.exe) i aplikacji sieci Web ASP.NET obsługiwanych przez usługi IIS 7.0, 7.5 i 8.0 , oraz aplikacji SharePoint 2010, możesz używać autonomicznego modułu zbierającego, aby zapisać dane IntelliTrace w pliku .iTrace.
Jest to przydatne, gdy chcesz diagnozować problemy w trakcie działania aplikacji i gdy nie chcesz zmienić konfiguracji systemu, takiej jak środowisko produkcyjne.Możesz zainstalować moduł zbierający bez zmiany konfiguracji systemu.Kiedy skończysz zbieranie danych, po prostu usuń moduł zbierający, aby go odinstalować.Zobacz Zbieranie danych IntelliTrace poza programem Visual Studio za pomocą modułu Standalone Collector.
Jakie dane są zbierane przez IntelliTrace?
Zbieranie informacji o zdarzeniach
Domyślnie IntelliTrace zapisuje tylko Zdarzenia IntelliTrace.Są to zdarzenia debugera, wyjątki, zdarzenia .NET Framework i inne zdarzenia systemowe, które mogą być pomocne w debugowaniu.Możesz wybrać typy zdarzeń IntelliTrace, które mają być zbierane, za wyjątkiem zdarzeń debugera i wyjątków, które są zawsze zbierane.Zobacz Konfigurowanie zbierania danych IntelliTrace na potrzeby debugowania w programie Visual Studio.
Zdarzenia debugera
IntelliTrace zawsze zapisuje zdarzenia zachodzące w debugerze Visual Studio.Uruchamianie aplikacji jest na przykład zdarzeniem debugera.Inne zdarzenia debugera są zdarzeniami zatrzymującymi, które powodują przerwanie wykonywania aplikacji.Program osiąga na przykład punkt przerwania, osiąga punkt śledzenia lub wykonuje polecenie Etap.
Aby podnieść wydajność, IntelliTrace nie zapisuje każdej możliwej wartości dla zdarzenia debugera.Zamiast tego zapisuje te wartości:
Wartości w oknie Lokalne.Niech okno Lokalne pozostanie otwarte, aby zobaczyć te wartości.
Wartości w oknie Automatyczne tylko wtedy, gdy okno Automatyczne jest otwarte
Wartości w DataTips, które są wyświetlane podczas przesuwania wskaźnika myszy na górze zmiennej w oknie źródłowym, aby zobaczyć jego wartość.IntelliTrace nie zbiera wartości w unieruchomionych DataTips.
Wyjątki
IntelliTrace zapisuje typ wyjątku i komunikat dla tego rodzaju wyjątków:
Obsługiwane wyjątki, gdy wyjątek jest generowany i przechwycony
Nieobsługiwane wyjątki
Zdarzenia .NET Framework
IntelliTrace domyślnie zapisuje najbardziej typowe zdarzenia .NET Framework.Na przykład:
W przypadku zdarzenia dostępu do plików IntelliTrace zbiera nazwę pliku.
W przypadku zdarzenia sprawdzania pola wyboru stan pola wyboru i tekst są zbierane za pomocą IntelliTrace.
Visual Studio 2012.1: Zdarzenia aplikacji w programie SharePoint 2010
Dla aplikacji SharePoint 2010, działających poza Visual Studio, można nagrywać i zapisać określone zdarzenia programu SharePoint przy użyciu samodzielnego modułu zbierającego w pliku .iTrace programu Visual Studio 2012.1.
Po otwarciu pliku .iTrace, możesz wprowadzić identyfikator korelacji programu SharePoint, aby znaleźć odpowiadające mu żądanie sieci Web, zobaczyć zarejestrowane zdarzenia i uruchomić debugowanie z określonego zdarzenia.Jeśli plik zawiera nieobsłużone wyjątki, można wybrać identyfikator korelacji, aby uruchomić debugowanie wyjątku.Możesz rejestrować zdarzenia profilu użytkownika i podzbiór zdarzeń ujednoliconego systemu rejestrowania (ULS).
Zobacz:
Zbieranie informacji o wywołaniu funkcji
Aby zebrać informacje wywołań dla funkcji, możesz skonfigurować IntelliTrace.Informacja ta pozwala wyświetlić historię stosu wywołań i pozwala na poruszanie się w wywołaniach kodu w dowolnym kierunku.W przypadku każdego wywołania funkcji IntelliTrace zapisuje następujące dane:
Nazwa funkcji
Wartości typów danych pierwotnych, przekazywane jako parametry w punktach wejścia do funkcji i zwracane w punktach wyjścia z funkcji
Wartości właściwości automatycznych, gdy są one odczytywane lub zmieniane
Wskaźniki do pierwszego poziomu obiektów podrzędnych, ale nie ich wartości inne, niż gdyby wynosiły null lub inną
[!UWAGA]
IntelliTrace zbiera tylko 256 pierwszych obiektów w tablicach i pierwszych 256 znaków dla ciągów.
Zobacz Konfigurowanie zbierania danych IntelliTrace na potrzeby debugowania w programie Visual Studio.
Zbieranie informacji o modułach
Aby kontrolować, ile informacji na temat wywołania gromadzi IntelliTrace, określ tylko te moduły, która Cię interesują.Może to pomóc poprawić wydajność Twojej aplikacji podczas procesu zbierania.Zobacz Konfigurowanie zbierania danych IntelliTrace na potrzeby debugowania w programie Visual Studio.
Czy IntelliTrace spowolni moją aplikację?
IntelliTrace domyślnie zbiera dane tylko dla wybranych zdarzeń IntelliTrace.To może spowolnić działanie aplikacji lub nie, w zależności od struktury i organizacji twojego kodu.Jeśli na przykład IntelliTrace często zapisuje zdarzenie, może to spowolnić aplikację, ale może być to również monit dotyczący rozważenia refaktoryzacji aplikacji.
Gromadzenie informacji wywołanych może znacząco spowolnić Twoją aplikację.Może to również zwiększyć rozmiar wszystkich plików dziennika IntelliTrace (.iTrace), które zapisujesz na dysku.Aby zminimalizować te skutki, zbierz informacji wywołań tylko dla interesujących Cię modułów.Aby zmienić maksymalny rozmiar plików .iTrace, przejdź do Narzędzia, Opcje, IntelliTrace, Zaawansowane.Zobacz Konfigurowanie zbierania danych IntelliTrace na potrzeby debugowania w programie Visual Studio.
Gdzie można uzyskać więcej informacji?
Konfigurowanie zbierania danych IntelliTrace na potrzeby debugowania w programie Visual Studio
Włączając dane diagnostyczne śledzenia z błędów, które są Difficult, aby odtworzyć
Zbieranie danych IntelliTrace poza programem Visual Studio za pomocą modułu Standalone Collector
Debugowanie aplikacji poprzez pliki dziennika IntelliTrace (.iTrace)
Blogi
ALM w programie Visual Studio + Team Foundation Server
Fora
Debuger programu Visual Studio
Wskazówki
Badanie ciągłego dostarczania za pomocą Visual Studio 2012 — Rozdział 6: przybornik testowania