Udostępnij przez


Debugowanie podróży w czasie — praca z plikami śledzenia

logo debugowania podróży czasowej z zegarem.

W tej sekcji opisano sposób pracy z plikami utworzonymi i używanymi przez debugowanie podróży w czasie.

Przegląd pliku śledzenia

Debugowanie podróży w czasie używa następujących plików do debugowania wykonywania kodu.

  • Plik śledzenia zawiera zapis wykonywania kodu i ma rozszerzenie .RUN.

  • Plik indeksu umożliwia szybki dostęp do informacji w pliku Trace i ma rozszerzenie .IDX.

  • Rejestrowanie błędów i innych danych wyjściowych nagrywania jest zapisywane w pliku dziennika debugera.

Śledzenie plików .RUN

Pliki .RUN można otwierać po ich zarejestrowaniu, używając Plik>Rozpocznij debugowanie>Otwórz plik śledzenia.

Zrzut ekranu przedstawiający opcje otwierania pliku z wyróżnioną opcją

Wszystkie pliki wyjściowe śledzenia są domyślnie przechowywane w folderze dokumentów użytkowników. Na przykład w przypadku użytkownika User1 pliki TTD będą przechowywane tutaj:

C:\Users\User1\Documents

Po rozpoczęciu rejestrowania można zmienić lokalizację plików śledzenia. Aby uzyskać więcej informacji, zobacz Debugowanie podróży w czasie — nagrywanie.

Ostatnio używana lista plików umożliwia szybki dostęp do wcześniej używanych plików konfiguracji docelowych. Wszystkie ostatnio używane pliki śledzenia lub pliki zrzutu są również wyświetlane.

Zrzut ekranu przedstawiający listę ostatnio otwieranych plików z pięcioma ostatnio używanymi plikami śladowymi .run.

Indeks plików .IDX

Plik indeksu .IDX dla skojarzonego pliku .RUN jest tworzony automatycznie podczas otwierania pliku śledzenia w WinDbg. Plik indeksu można utworzyć ręcznie za pomocą polecenia !index. Indeks umożliwia szybszy dostęp do informacji o śledzeniu.

Pliki IDX mogą być również duże, zazwyczaj dwa razy większe niż plik .RUN.

Ponowne utworzenie pliku .IDX

Możesz ponownie utworzyć plik .IDX z pliku .RUN, używając polecenia !index. Aby uzyskać więcej informacji, zobacz Debugowanie podróży czasowych — !indeks (podróż czasowa).

0:0:001> !index
Indexed 3/3 keyframes
Successfully created the index in 49ms.

Udostępnianie plików .RUN TTD

TTD jest tylko lokalny i nie działa zdalnie z innym komputerem.

Pliki śledzenia TTD można udostępniać innym osobom, kopiując plik .RUN. Może to być przydatne, aby współpracownik pomógł Ci ustalić problem. Nie muszą instalować aplikacji awaryjnej ani wykonywać innych powiązanych konfiguracji, aby spróbować odtworzyć problem. Mogą po prostu załadować plik śledzenia i debugować aplikację tak, jakby została zainstalowana na komputerze.

Maszyna, na której odtwarzasz ślad TTD, musi obsługiwać wszystkie instrukcje używane na maszynie rekordów — na przykład instrukcje AVX.

Możesz zmienić nazwę pliku, aby uwzględnić wszelkie dodatkowe informacje, takie jak data lub numer usterki.

Ten. Plik IDX nie musi być kopiowany, ponieważ można go ponownie utworzyć przy użyciu polecenia !index, jak opisano powyżej.

Wskazówka

Podczas współpracy z innymi osobami przekaż odpowiednie pozycje śledzenia związane z problemem. Współpracownicy mogą użyć polecenia !tt x:y, aby przejść do tego dokładnego punktu w czasie podczas wykonywania kodu. Zakresy pozycji czasu można uwzględnić w opisach usterek, aby śledzić, gdzie może wystąpić możliwy problem.

Błąd — plik dziennika

Rejestrowanie błędów i innych danych wyjściowych nagrywania jest zapisywane w pliku dziennika debugera. Aby wyświetlić plik dziennika, wybierz pozycję Wyświetl>dzienniki.

W tym przykładzie pokazano tekst dziennika błędów podczas próby uruchomienia i zarejestrowania pliku wykonywalnego o nazwie Foo.exe, który nie znajduje się w katalogu C:\Windows.

2017-09-21:17:18:10:320 : Information : DbgXUI.dll : TTD: Output: 
Microsoft (R) TTD 1.01.02
Release: 10.0.16366.1000
Copyright (C) Microsoft Corporation. All rights reserved.
Launching C:\Windows\Foo.exe
2017-09-21:17:18:10:320 : Error : DbgXUI.dll : TTD: Errors: 
Error: Trace of C:\Windows\Foo.exe PID:0 did not complete successfully: status:27
Error: Could not open 'Foo.exe'; file not found.
Error: Corrupted trace dumped to C:\Users\User1\Documents\Foo01.run.err.

Rozmiar pliku śledzenia

Pliki śledzenia TTD mogą być naprawdę duże i ważne jest, aby mieć wystarczającą ilość wolnego miejsca na dysku. Jeśli zarejestrujesz aplikację lub proces nawet przez kilka minut, plik śledzenia może osiągnąć rozmiar kilku gigabajtów. Rozmiar pliku śledzenia zależy od wielu czynników opisanych poniżej.

TTD nie określa maksymalnego rozmiaru plików śledzenia, aby umożliwić obsługę złożonych i długotrwałych scenariuszy. Szybkie ponowne utworzenie problemu spowoduje, że rozmiar pliku śledzenia będzie możliwie najmniejszy.

Czynniki wpływające na rozmiar pliku śledzenia

Nie można podać dokładnego oszacowania rozmiaru pliku śledzenia, ale istnieje kilka zasad ogólnych, które ułatwiają zrozumienie rozmiarów plików TTD.

Następujące czynniki mogą mieć wpływ na rozmiar pliku śledzenia:

  • Liczba instrukcji kodu wykonywanych we wszystkich wątkach podczas rejestrowania uruchomionej aplikacji lub procesu
  • Czas rejestrowania aplikacji lub procesu (tylko w przypadku, gdy ma to wpływ na liczbę zarejestrowanych instrukcji kodu)
  • Rozmiar danych pamięci używanych przez aplikację lub proces

Liczba wykonanych i zarejestrowanych instrukcji jest największym czynnikiem wpływającym na rozmiar pliku śledzenia. Śledzenie zwykle wymaga od 1 bitu do 1 bajtu na wykonaną instrukcję. Ślad może znajdować się w dolnym końcu tego zakresu, gdy zarejestrowany program wykonuje mniejszą liczbę odrębnych funkcji i działa na mniejszym zestawie danych. Ślad może znajdować się na wyższym końcu tego zakresu, gdy zarejestrowany program wykonuje większą liczbę odrębnych funkcji lub działa na większym zestawie danych.

Reguła ogólna dotycząca rozmiaru pliku śledzenia

Plik śledzenia rośnie około 5 MB do 50 MB na sekundę podczas rejestrowania aktywnej aplikacji lub procesu, w zależności od czynników rozmiaru pliku śledzenia zidentyfikowanych powyżej.

Plik śledzenia nie będzie rosnąć, gdy zarejestrowana aplikacja lub proces jest bezczynny (na przykład podczas oczekiwania na dane wejściowe).

Obecnie nie ma maksymalnego limitu rozmiaru pliku dla plików śledzenia. WinDbg może odtwarzać pliki śledzenia, które mogą mieć setki gigabajtów.

Rozmiar pliku indeksu

Plik indeksu jest tworzony automatycznie przez usługę WinDbg po pierwszym otwarciu śladu. Zawiera informacje, które ułatwiają debugerowi restart śledzenia i efektywniejsze zapytywanie o pamięć. Jego rozmiar zazwyczaj waha się od 1 do 2 razy większy od rozmiaru pliku śledzenia. Czynniki wpływające na jego rozmiar są podobne do tych, które wpływają na rozmiar pliku śledzenia.

Najpierw rozmiar pliku indeksu skaluje się w stosunku do długości śladu. Ślad zawierający większą liczbę zarejestrowanych instrukcji zwykle będzie miał większy indeks.

Po drugie, rozmiar indeksu jest skalowany w stosunku do zakresu dostępu do pamięci. Jeśli program zarejestrowany często uzyskuje dostęp do dużej liczby odrębnych lokalizacji pamięci, indeks będzie zazwyczaj większy niż w przypadku, gdy program, który został zarejestrowany, uzyskiwał dostęp do mniejszej liczby odrębnych lokalizacji pamięci lub jeśli dostęp do lokalizacji pamięci był rzadziej używany.

Ponieważ te czynniki są podobne do czynników wpływających na rozmiar pliku śledzenia, rozmiar pliku indeksu zwykle skaluje się w stosunku do rozmiaru pliku indeksu (w związku z tym szacujemy, że zazwyczaj wynosi od 1x do 2x rozmiar pliku śledzenia).

Co zrobić, jeśli zabraknie miejsca na dysku?

Pliki śledzenia i indeksu TTD są zapisywane na dysku. Obecnie nie istnieje ograniczenie maksymalnego rozmiaru pliku dla pliku śledzenia lub indeksu. Rozmiar pliku śledzenia rośnie do momentu zatrzymania rejestrowania lub przekroczenia ilości dostępnego miejsca na dysku.

Podczas nagrywania: Funkcja TTD zapisze ostatnią stronę w pliku śledzenia, a następnie skutecznie zaczeka na ponowne zapisanie. WinDbg nadal wyświetla okno dialogowe Nagrywanie, ale nie wyświetla komunikatu o błędzie/ostrzeżeniu podczas braku miejsca na dysku podczas nagrywania.

Brak miejsca na dysku podczas nagrywania powoduje, że plik śledzenia jest z niedokończonym zapisem wykonania kodu. Niekompletny plik śledzenia można otworzyć w systemie WinDbg, ale może nie zawierać rzeczywistego problemu, jeśli błąd wystąpi po wyczerpaniu miejsca na dysku podczas zapisywania pliku śledzenia.

Obejście: Otwórz Eksploratora plików i sprawdź, czy wolne miejsce na dysku jest zbliżone do zera. Alternatywnie obserwuj ślad (. Plik RUN) w Eksploratorze plików (domyślnie w folderze Dokumenty) i jeśli nie regularnie rośnie rozmiar, nagrywanie może czekać. Wybierz przycisk Zatrzymaj i Debuguj w usłudze WinDbg, zwolnij miejsce lub zapisz go na innym dysku i rozpocznij nagrywanie ponownie.

Podczas indeksowania: Debuger może utworzyć nieprawidłowy plik indeksu, co powoduje nieprzewidywalne zachowanie debugera lub host aparatu debugera może ulec awarii.

Obejście: Zamknij debuger i usuń dowolny plik indeksu (idx), który może istnieć dla śledzenia. Zwolnij wystarczającą ilość miejsca na dysku lub przenieś plik śledzenia na inny dysk o wystarczającym wolnym miejscu. Otwórz ponownie ślad w debugerze i uruchom polecenie !index, aby utworzyć nowy, poprawny indeks. Indeksowanie nie modyfikuje oryginalnego pliku śledzenia (.run), więc żadne dane nie zostaną utracone.

Zobacz też

Debugowanie podróży w czasie — omówienie