Zbieranie danych IntelliTrace poza programem Visual Studio za pomocą modułu Standalone Collector
Do debugowania aplikacji w fazie produkcyjnej albo w innych środowiskach, użyj modułu zbierającego IntelliTrace, aby zapisać dane diagnostyczne w pliku logu IntelliTrace (plik .iTrace).W ten sposób możesz rejestrować, co się dzieje w Twojej aplikacji, bez konieczności instalowania programu Visual Studio lub zmiany środowiska Twojej aplikacji.Kiedy skończysz zbieranie danych, po prostu usuń moduł zbierający, aby go odinstalować.
Obejrzyj działanie IntelliTrace: Zbieranie i analizowanie wytwarzanych danych IntelliTrace do debugowania (wideo Channel 9)
Wymagania
.NET Framework 3.5, 4, lub 4.5
Visual Studio Ultimate na komputerze deweloperskim lub innym komputerze, aby otworzyć pliki .iTrace
[!UWAGA]
Upewnij się, że zapisano symbole plików (.pdb).Aby debugować IntelliTrace i przejść przez kod, musisz mieć pasujące pliki źródłowe i pliki z symbolami.Zobacz Wyszukiwanie plików symboli (.pdb) oraz plików źródłowych i binarnych.
CZĘSTO ZADAWANE PYTANIA
Które aplikacje działają z modułem zbierającym?
Jak zacząć?
Jak uzyskać większość danych bez spowalniania mojej aplikacji?
Gdzie indziej można uzyskać dane IntelliTrace?
Które aplikacje działają z modułem zbierającym?
Aplikacje ASP.NET sieci Web hostowane przez Internet Information Services (IIS) w wersji 7.0, 7.5 i 8.0
Aplikacje programu SharePoint 2010
Zarządzane aplikacje pulpitu (pliki exe)
Jak zacząć?
Zainstaluj moduł zbierający
Set up permissions for the collector directory.
Zainstaluj aplety IntelliTrace PowerShell do zbierania danych dla aplikacji sieci Web lub aplikacji SharePoint.
Skonfiguruj uprawnienia dla katalogu plików .iTrace
Gromadzenie danych z aplikacji sieci Web lub aplikacji programu SharePoint:
-lub-
Zbieraj dane z zarządzanej aplikacji
Otwórz plik .iTrace w Visual Studio Ultimate
Zainstaluj moduł zbierający
Na serwerze swojej aplikacji utwórz folder modułu zbierającego, na przykład: C:\IntelliTraceCollector
Pobierz kolektora w witrynie Microsoft Download Center lub z folderu instalacyjnego programu Visual Studio:
Centrum pobierania firmy Microsoft:
Na serwerze swojej aplikacji przejdź do IntelliTrace Collector dla programu Visual Studio.
Obok IntelliTraceCollector.exe należy wybrać polecenie Pobierz.
Zapisz IntelliTraceCollector.exe w katalogu modułu zbierającego, na przykład: C:\IntelliTraceCollector
Uruchom IntelliTraceCollector.exe.Wyodrębnia plik IntelliTraceCollection.cab.
- lub -
Folder instalacyjny Visual Studio:
[!UWAGA]
Aby uzyskać moduł zbierający, który obsługuje zdarzenia diagnostyczne dla aplikacji SharePoint 2010, pobierz IntelliTrace Collector for Visual Studio lub upewnij się, że masz zainstalowany program Visual Studio 2012.1.
Skopiuj IntelliTraceCollection.cab z następującego folderu:
..\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0
Umieścić IntelliTraceCollection.cab w katalogu modułu zbierającego, na przykład: C:\IntelliTraceCollector
Rozwiń IntelliTraceCollection.cab:
Na serwerze swojej aplikacji otwórz okno wiersza polecenia z uprawnieniami administratora.
Przejdź do katalogu kolektora, na przykład: C:\IntelliTraceCollector
Użyj polecenia expand, wstawiając na końcu kropkę (.), aby rozwinąć IntelliTraceCollection.cab:
rozwiń /f:* IntelliTraceCollection.cab .
[!UWAGA]
Kropka (.) zachowuje podfoldery, które zawierają zlokalizowane plany kolekcji.
Skonfiguruj uprawnienia do uruchamiania katalogu zbierającego
Na serwerze swojej aplikacji otwórz okno wiersza polecenia z uprawnieniami administratora.
Użyj polecenia systemu Windows icacls, aby nadać administratorowi serwera pełne uprawnienia dostępu do katalogu modułu zbierającego.Na przykład:
icacls "C:\IntelliTraceCollector" / grant "<Domain\AdministratorID>": F
Aby gromadzić dane dotyczące aplikacji sieci Web lub aplikacji programu SharePoint:
Udziel osobom, które będą obsługiwały środowisko IntelliTrace PowerShell pełnych uprawnień do katalogu modułów zbierających.
Na przykład:
icacls "C:\IntelliTraceCollector" / grant "<Domain\UserID>": F
Przyznaj puli aplikacji dla aplikacji sieciowej lub aplikacji SharePoint uprawnienia odczytu i wykonania do katalogu modułu zbierającego.
Na przykład:
Dla aplikacji sieci Web w Domyślnej puli aplikacji puli aplikacji:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX
Dla aplikacji programu SharePoint w programie SharePoint - 80 pula aplikacji:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX
Zainstaluj aplety IntelliTrace PowerShell do zbierania danych dla aplikacji sieci Web lub aplikacji SharePoint.
Na serwerze swojej aplikacji upewnij się, że moduł PowerShell jest włączony.W większości wersji systemu Windows Server można dodać tę funkcję przy użyciu narzędzia administracyjnego Menedżer serwera.
Zainstaluj aplety poleceń programu IntelliTrace PowerShell.
Otwórz okno polecenia środowiska PowerShell jako administrator.
Wybierz Start, Wszystkie programy, Akcesoria, Windows PowerShell.
Wybierz jeden z następujących kroków:
W przypadku 64-bitowych systemów operacyjnych, należy otworzyć menu podręczne dla środowiska Windows PowerShell.Wybierz Uruchom jako administrator.
W przypadku 32-bitowych systemów operacyjnych, należy otworzyć menu podręczne dla środowiska Windows PowerShell (x86).Wybierz Uruchom jako administrator.
W oknie wiersza polecenia środowiska PowerShell, użyj polecenia Moduł import, aby importować Microsoft.VisualStudio.IntelliTrace.PowerShell.dll.
Na przykład:
Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"
Skonfiguruj uprawnienia dla katalogu plików .iTrace
Na serwerze swojej aplikacji utwórz katalog plików .iTrace, na przykład: C:\IntelliTraceLogFiles
[!UWAGA]
-
Aby nie spowalniać pracy swojej aplikacji, wybierz lokalizację na lokalnym dysku o dużej wydajności, który nie jest bardzo obciążony.
-
Pliki .iTrace IntelliTrace i pliki modułów zbierających można umieścić w tym samym miejscu.Jednakże, jeśli masz aplikację sieci Web lub aplikację programu SharePoint, upewnij się, że to miejsce jest poza katalogiem, który obsługuje aplikację.
Uwaga dotycząca zabezpieczeń Ogranicz lokalizację katalogu pliku .iTrace tylko do tożsamości koniecznych do pracy z modułem zbierającym.Plik .iTrace może zawierać informacje poufne, w tym dane użytkowników, bazy danych, inne lokalizacje źródłowe i parametry połączenia ponieważ IntelliTrace może rejestrować wszelkie dane, które są parametrami metody lub wartościami zwrotnymi.
Upewnij się, że ci, którzy mogą otwierać pliki .iTrace mają uprawnienia do danych poufnych.Zachowaj ostrożność podczas udostępniania plików .iTrace.Jeśli inne osoby muszą mieć dostęp, skopiuj pliki do bezpiecznej lokalizacji udostępnionej.
-
Dla aplikacji sieci Web lub aplikacji programu SharePoint należy nadać jej puli aplikacji pełne uprawnienia do katalogu plików .iTrace.Możesz użyć polecenia icacls systemu Windows lub Eksploratora Windows (lub Eksploratora plików).
Na przykład:
Aby skonfigurować uprawnienia za pomocą polecenia icacls systemu Windows:
Dla aplikacji sieci Web w Domyślnej puli aplikacji puli aplikacji:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F
Dla aplikacji programu SharePoint w programie SharePoint - 80 pula aplikacji:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F
-lub-
Aby skonfigurować uprawnienia za pomocą Eksploratora Windows (lub Eksploratora plików):
Otwórz Właściwości dla katalogu plików .iTrace.
W zakładce Zabezpieczenia wybierz polecenia Edycja, Dodaj.
Upewnij się, że wbudowane zabezpieczenia główne pojawią się w ramceWybierz ten typ obiektu.Jeżeli nie ma go tam, wybierz Typy obiektów, aby to dodać.
Upewnij się, że komputer lokalny pojawi się w polu Z tej lokalizacji.Jeżeli nie ma go tam, wybierz Lokalizacje, aby to zmienić.
W Wprowadź nazwy obiektów do wybrania pola, dodaj pulę aplikacji dla aplikacji sieci Web lub aplikacji programu SharePoint.
Wybierz polecenie Sprawdź nazwy aby rozwinąć nazwę.Wybierz przycisk OK.
Upewnij się, że pula aplikacji ma Pełną kontrolę.
Gromadzenie danych z aplikacji sieci Web lub aplikacji programu SharePoint:
Aby rozpocząć zbieranie danych, otwórz okno polecenia środowiska PowerShell jako administrator, a następnie uruchom to polecenie:
Start-IntelliTraceCollection"<ApplicationPool>"<PathToCollectionPlan><FullPathToITraceFileDirectory>
Ważne Po uruchomieniu tego polecenia, wpisz Y, aby potwierdzić, że chcesz rozpocząć zbieranie danych.
Na przykład, aby zbierać dane z aplikacji programu SharePoint w SharePoint - 80 puli aplikacji:
Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"
ApplicationPool
Nazwa puli aplikacji, w której działa Twoja aplikacja
ŚcieżkaDoPlanuKolekcji
Ścieżka do planu kolekcji, plik .xml, który konfiguruje ustawienia dla modułu zbierającego.
Możesz określić plan, który jest przypisany do modułu zbierającego.Następujące plany działają w przypadku aplikacji sieci Web i aplikacji programu SharePoint:
collection_plan.ASP.NET.default.xml
Zbiera tylko zdarzenia IntelliTrace i zdarzenia programu SharePoint, łącznie z wyjątkami, wywołaniami bazy danych i żądaniami serwera sieci Web.
collection_plan.ASP.NET.trace.xml
Wywołania funkcji gromadzenia i wszystkie dane w planie kolekcji .ASP.NET.default.xml.Ten plan jest dobry, żeby przeprowadzić szczegółową analizę, ale może spowolnić działanie Twojej aplikacji bardziej niż collection_plan.ASP.NET.default.xml.
Aby nie spowalniać pracy swojej aplikacji, dostosuj te plany lub utwórz własny plan.Ze względów bezpieczeństwa należy umieścić plany kolekcji niestandardowej w tym samym bezpiecznym miejscu, co pliki modułów zbierających IntelliTrace.Zobacz Tworzenie i dostosowywanie planów kolekcji IntelliTrace i Jak uzyskać większość danych bez spowalniania aplikacji?
UwagaDomyślnie maksymalny rozmiar pliku .iTrace wynosi 100 MB.Gdy rozmiar pliku .iTrace osiągnie ten limit, skreślane są moduły zbierające, aby zrobić miejsce na nowsze wpisy .Aby zmienić ten limit, edytuj atrybut planu kolekcji MaximumLogFileSize.Gdzie można znaleźć zlokalizowane wersje tych planów kolekcji?
Zlokalizowane plany możesz znaleźć w podfolderach modułu zbierającego.
Pełna ścieżka do katalogu pliku iTrace
Pełna ścieżka do katalogu pliku .iTrace.
Uwaga dotycząca zabezpieczeńZapewniają pełną ścieżkę, a nie ścieżkę względną.Moduł zbierający dołącza się do puli aplikacji i rozpoczyna zbieranie danych.
Czy można otworzyć plik .iTrace w tej chwili? Nie, plik jest zablokowany podczas zbierania danych.
Odtworzenia problemu.
Aby zrobić migawkę bieżącego pliku dziennika .iTrace, użyj następującej składni:
Checkpoint-IntelliTraceCollection"<ApplicationPool>"
Aby sprawdzić stan procesu kolekcji, użyj następującej składni:
Pobierz status kolekcji IntelliTrace
Aby zatrzymać zbieranie danych, użyj następującej składni:
Zatrzymaj zbieranie danych przez IntelliTrace"<Pula aplikacji>"
Ważne Po uruchomieniu tego polecenia, wpisz Y, aby potwierdzić, że chcesz zatrzymać zbieranie danych.W przeciwnym razie moduł zbierający będzie nadal zbierać dane, plik iTrace pozostanie zablokowany lub plik ten nie będzie zawierać żadnych użytecznych danych.
Otwórz plik .iTrace w Visual Studio Ultimate
Zbieraj dane z zarządzanej aplikacji
Aby uruchomić aplikację i w tym samym czasie zbierać dane, użyć następującej składni:
<FullPathToIntelliTraceCollectorExecutable>\IntellitraceSC.exe uruchomić /cp:<PathToCollectionPlan>/f:<FullPathToITraceFileDirectoryAndFileName><PathToAppExecutableFileAndFileName>
Na przykład, aby gromadzić dane z aplikacji o nazwie MojaApl:
C:\IntelliTraceCollector\IntelliTraceSC.exe uruchomi /cp:"C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" / f:"C:\IntelliTraceLogFiles\MyApp.itrace" "C:\MyApp\MyApp.exe"
Pełna ścieżka wykonawczego katalogu modułu zbierającego
Pełna ścieżka dostępu do pliku wykonywalnego modułu zbierającego IntelliTraceSC.exe
ŚcieżkaDoPlanuKolekcji
Ścieżka do planu kolekcji, plik .xml, który konfiguruje ustawienia dla modułu zbierającego.
Możesz określić plan, który jest przypisany do modułu zbierającego.Następujące plany działają w przypadku aplikacji zarządzanych:
collection_plan.ASP.NET.default.xml
Zbiera tylko zdarzenia IntelliTrace, łącznie z wyjątkami, wywołaniami bazy danych i żądaniami serwera sieci Web.
collection_plan.ASP.NET.trace.xml
Wywołania funkcji gromadzenia i wszystkie dane w planie kolekcji .ASP.NET.default.xml.Ten plan jest dobry, żeby przeprowadzić szczegółową analizę, ale może spowolnić działanie Twojej aplikacji bardziej niż collection_plan.ASP.NET.default.xml.
Aby nie spowalniać pracy swojej aplikacji, dostosuj te plany lub utwórz własny plan.Ze względów bezpieczeństwa należy umieścić plany kolekcji niestandardowej w tym samym bezpiecznym miejscu, co pliki modułów zbierających IntelliTrace.Zobacz Tworzenie i dostosowywanie planów kolekcji IntelliTrace i Jak uzyskać większość danych bez spowalniania aplikacji?
UwagaDomyślnie maksymalny rozmiar pliku .iTrace wynosi 100 MB.Gdy rozmiar pliku .iTrace osiągnie ten limit, skreślane są moduły zbierające, aby zrobić miejsce na nowsze wpisy .Aby zmienić ten limit, edytuj atrybut planu kolekcji MaximumLogFileSize.Gdzie można znaleźć zlokalizowane wersje tych planów kolekcji?
Zlokalizowane plany możesz znaleźć w podfolderach modułu zbierającego.
Pełna ścieżka do katalogu pliku iTrace i nazwa pliku
Pełna ścieżka dostępu do katalogu plików .iTrace i nazwa pliku .iTrace z rozszerzeniem .itrace.
Uwaga dotycząca zabezpieczeńZapewniają pełną ścieżkę, a nie ścieżkę względną.PathToAppExecutableFileAndFileName
Ścieżka dojścia i nazwa pliku Twojej aplikacji zarządzanej
Zatrzymaj zbieranie danych podczas zamknięcie aplikacji.
Otwórz plik .iTrace w Visual Studio Ultimate
Otwórz plik .iTrace w Visual Studio Ultimate
Przenieś lub skopiuj plik .iTrace do komputera za pomocą programu Visual Studio Ultimate.
Kliknij dwukrotnie plik .iTrace, poza Visual Studio, lub otworzyć plik z programie Visual Studio.
Visual Studio wyświetla stronę Krótki opis IntelliTrace.W większości sekcji, możesz przejrzeć zdarzenia lub inne elementy, wybierz element i rozpocznij debugowanie z IntelliTrace w punkcie, w którym miało miejsce jakieś zdarzenie.Zobacz Debugowanie aplikacji poprzez pliki dziennika IntelliTrace (.iTrace).
[!UWAGA]
Aby debugować IntelliTrace i przejść przez kod, musisz mieć pasujące pliki źródłowe i pliki z symbolami.Upewnij się, że pliki symbol znajdują się w ścieżce symbol Visual Studio.W przeciwnym razie program Visual Studio nie może rozpoznać lokalizacji źródłowych i wyświetla komunikat „Nie można odnaleźć symboli”. Zobacz Wyszukiwanie plików symboli (.pdb) oraz plików źródłowych i binarnych.
Jak uzyskać większość danych bez spowalniania aplikacji?
IntelliTrace może gromadzić wiele danych, więc jego wpływ na wydajność aplikacji zależy od rodzaju danych, które są gromadzone przez IntelliTrace, i rodzaju kodu, który analizuje.Zobacz Optymalizacja planów kolekcji IntelliTrace na serwerach produkcyjnych.
Oto kilka sposobów na zdobycie większości danych bez spowalniania aplikacji:
Tylko wtedy, gdy istnieje podejrzenie, że istnieje problem lub można odtworzyć ten problem, uruchom kolekcję IntelliTrace.
Rozpocznij kolekcję, odtwórz problem, a następnie zatrzymaj kolekcję.Otwórz plik .iTrace w Visual Studio Ultimate i zbadaj dane.Zobacz Otwórz plik .iTrace w Visual Studio Ultimate.
W przypadku aplikacji sieci Web i aplikacji SharePoint moduł gromadzący zapisuje dane dla każdej aplikacji sieci Web, która udostępnia określoną pulę aplikacji.Może to zmniejszyć wydajność każdej aplikacji, która korzysta z tej samej puli aplikacji, nawet jeśli możesz określić tylko moduły dla pojedynczej aplikacji planu kolekcji.
Aby kolekcja danych nie zwalniała innych aplikacji, hostuj każdą aplikację we własnej puli aplikacji.
Przeanalizuj zdarzenia w planie kolekcji, dla którego IntelliTrace zbiera dane.Edytuj plan kolekcji, aby wyłączyć zdarzenia, które nie są odpowiednie ani interesujące.
Aby wyłączyć zdarzenie, ustaw atrybut enabled dla elementu <DiagnosticEventSpecification>, aby false:
<DiagnosticEventSpecification enabled="false">
Jeśli atrybut enabled nie istnieje, zdarzenie jest włączone.
Jak zwiększa to wydajność?
Możesz ograniczyć czas uruchamiania, wyłączając zdarzenia, które nie są odpowiednie dla aplikacji.Wyłącz na przykład zdarzenia Windows Workflow dla aplikacji, które nie używają systemu Windows Workflow.
Możesz poprawić wydajność uruchamiania i wykonywania, wyłączając zdarzenia rejestru dla aplikacji, które mają dostęp do rejestru, ale nie wyświetlają problemów z ustawieniami rejestru.
Przeanalizuj moduły w planie kolekcji, dla którego IntelliTrace zbiera dane.Edytuj plan kolekcji, aby zawrzeć jedynie interesujące Cię moduły:
Otwórz plan kolekcji.Znajdź element <ModuleList>.
W <ModuleList> ustaw atrybut isExclusionList do false.
Użyj elementu <Name>, aby określić każdy moduł poprzez nazwę pliku lub wartość ciągu, aby uwzględnić dowolny moduł, którego nazwa zawiera dany ciąg lub klucz publiczny.
Aby zebrać dane jedynie z głównego modułu sieci Web aplikacji sieci Web Fabrikam Fiber, utwórz następującą listę:
<ModuleList isExclusionList="false"> <Name>FabrikamFiber.Web.dll</Name> </ModuleList>
Aby zebrać dane z każdego modułu, którego nazwa zawiera „Fabrikam”, utwórz następującą listę:
<ModuleList isExclusionList="false"> <Name>Fabrikam</Name> </ModuleList>
Aby zebrać dane z modułów, określając tokeny klucza publicznego, utwórz następującą listę:
<ModuleList isExclusionList="false"> <Name>PublicKeyToken:B77A5C561934E089</Name> <Name>PublicKeyToken:B03F5F7F11D50A3A</Name> <Name>PublicKeyToken:31BF3856AD364E35</Name> <Name>PublicKeyToken:89845DCD8080CC91</Name> <Name>PublicKeyToken:71E9BCE111E9429C</Name> </ModuleList>
Jak zwiększa to wydajność?
Zmniejsza to ilość informacji wywołania metody oraz innych danych instrumentacji, które są zbierane przez IntelliTrace, gdy aplikacja jest uruchomiona i w trakcie pracy.Dane te umożliwiają:
Przejść przez kod po zebraniu danych.
Sprawdzić wartości przekazane do wywołań funkcji i zwracane przez nie.
Dlaczego nie wykluczyć modułów?
Plany kolekcji domyślnie wykluczają moduły przez ustawienie atrybutu isExclusionList do true.Wyłączenie modułów może jednak nadal prowadzić do zbierania danych z modułów, które nie spełniają kryteriów listy i które mogą nie być interesujące, takie jak moduły strony trzeciej lub typu open-source.
Czy są jakieś dane, które nie są zbierane przez IntelliTrace?
Tak, aby zmniejszyć szkodliwy wpływ na wydajność, IntelliTrace ogranicza zbieranie danych do wartości typów danych pierwotnych przekazywanych do metod i zwracanych przez nie oraz do wartości typów danych pierwotnych w polach obiektów najwyższego poziomu przekazywanych do metod oraz zwracanych przez nie.
Załóżmy na przykład, że Twój podpis metody AlterEmployee akceptuje liczbę całkowitą id i Employee obiekt oldemployee:
public Employee AlterEmployee(int id, Employee oldemployee)
Typ Employee ma następujące atrybuty: Id, Name i HomeAddress.Istnieje relacja skojarzenia między Employee i typem Address.
Moduł zbierający zapisuje wartości dla id, Employee.Id, Employee.Name i obiekt zwrócony Employee z metody AlterEmployee.Moduł zbierający nie zapisuje jednak informacji o obiekcie Address innym niż posiadającym wartość zerową lub nie.Moduł zbierający nie zapisuje również danych na temat zmiennych lokalnych w metodzie AlterEmployee, chyba że inne metody używają tych zmiennych lokalnych jako parametrów, które w danym momencie są zapisywane jako parametry metody.
Gdzie indziej można uzyskać dane IntelliTrace?
W sesji debugowania IntelliTrace w Visual Studio Ultimate zobacz Rejestrowanie wykonywania kodu za pomocą narzędzia IntelliTrace na potrzeby debugowania w programie Visual Studio.
W sesji testowej w Menedżerze testów firmy Microsoft zobacz Jak: zbieranie danych IntelliTrace problemy, trudne debugowania.
Gdzie można uzyskać więcej informacji?
Debugowanie aplikacji poprzez pliki dziennika IntelliTrace (.iTrace)
Debugowanie aplikacji poprzez rejestrowanie wykonywania kodu za pomocą narzędzia IntelliTrace
Blogi
Zdalne korzystanie z samodzielnego modułu zbierającego IntelliTrace
Tworzenie i dostosowywanie planów kolekcji IntelliTrace
Optymalizacja kolekcji IntelliTrace na serwerach produkcyjnych
Blog dla użytkowników TFS i ALM programu Visual Studio
Fora
Debuger programu Visual Studio
Filmy wideo
Wideo Channel 9: zbieranie i analizowanie danych IntelliTrace