Jak znaleźć i naprawić błędy w komercyjnym oprogramowaniu w systemie Windows

według Wikipedii ” błąd oprogramowania to błąd, wada, awaria lub usterka w programie komputerowym lub systemie, która powoduje, że wywołuje nieprawidłowy lub nieoczekiwany wynik lub zachowuje się w niezamierzony sposób, ostatecznie zawiesza aplikację. Proces naprawiania błędów jest określany jako „debugowanie” i często używa formalnych technik lub narzędzi do identyfikowania błędów .”

przez większość czasu błędy mogą być powielane w środowisku programistycznym i naprawiane przed wysłaniem wersji do produkcji. Ale czasami błędy zależą od konkretnego środowiska lub profilu użytkownika—na przykład używanie znaków specjalnych w nazwie folderu – co utrudnia zrozumienie przyczyny błędu. Najgorsze błędy wymagają wsparcia użytkownika, aby skonfigurować sesję udostępniania ekranu, aby obserwować, jak użytkownik odtwarza błąd.

w Dashlane zespół Windows używa kilku narzędzi do wyszukiwania i odtwarzania błędów:

  • dzienniki techniczne wykrywające problemy i pomagające je naprawić, czasami wymagające kilku iteracji i interakcji z użytkownikiem doświadczającym problemu
  • Microsoft Process Monitor i Process Explorer, dwa bezpłatne narzędzia wskazujące złe instalacje lub uszkodzone środowisko

ostatnio firma Microsoft wprowadziła nową wersję innego narzędzia programistycznego, WinDbg. Ta aplikacja została przeniesiona do aplikacji UWP, jest swobodnie dostępna w Sklepie Microsoft Store i posiada bardzo ładną i użyteczną funkcję: TTD, czyli debugowanie podróży w czasie. Pomyśl o czasie, w którym musiałeś naprawić bardzo trudny do odtworzenia błąd, który występował tylko na jednej konkretnej maszynie. Możesz też pomyśleć o czasie spędzonym na instalowaniu środowiska programistycznego na tym komputerze. A potem pomyśl o tym, ile razy trzeba było uruchomić aplikację w trybie debugowania, aby odtworzyć błąd, a następnie przegapiłeś uszkodzoną linię przez przypadkowe trafienie F5 zamiast F11. TTD zamienia to w bułkę z masłem, ponieważ wystarczy tylko raz nagrać błąd, aby umożliwić powtarzanie go w kółko, zarówno do przodu, jak i do tyłu.

debugowanie podróży w czasie za pomocą WinDbg

TTD jest odwróconym rozwiązaniem debugowania. Składa się z 3 kroków:

  1. Nagraj aplikację lub proces na komputerze, który może odtworzyć błąd. Użyj WinDbg z prawami administratora i uruchom plik wykonywalny lub dołącz do już uruchomionego, aby nagrać jego ślad. Rezultatem jest plik (.run extension) zawierający wszystkie informacje potrzebne do odtworzenia błędu. Z tego powodu w Dashlane możemy go używać tylko do debugowania błędów, które zdarzają się przed zalogowaniem, aby nie zbierać poufnych informacji użytkowników.
  2. powtórz nagrany ślad do przodu i do tyłu tyle razy, ile to konieczne, aby zrozumieć problem. Po załadowaniu WinDbg tworzy indeks śladu, który zapewnia pełne i szybkie wyszukiwanie pamięci. Nagrany plik można załadować na dowolnej maszynie; Zwykle otwieramy na maszynie deweloperskiej, gdzie możemy załadować kod źródłowy i symbole PDB. W ten sposób możemy odtworzyć ślad podczas uruchamiania kodu w naszym IDE z rekordami procesu i pamięci z zarejestrowanej maszyny. (Upewnij się, że kod źródłowy i symbole są zgodne z zarejestrowaną wersją procesu.)
  3. Analizuj, dodając punkty przerwania, uruchamiaj zapytania w celu zidentyfikowania typowych problemów z kodem i uzyskaj pełny dostęp do pamięci i mieszkańców, aby zrozumieć, co się dzieje.

przykład

Załóżmy, że napisałeś i zbudowałeś prostą aplikację konsolową.

void GuiltyFunction(int a, int b, int c)
{
int x = a + b + c;
int y = 0;
y = x / b;
}
int main()
{
int a = 10;
int b = 0;
int c = 3;
GuiltyFunction(a, b, c);
return 0;
}

Załóżmy, że zbudowana aplikacja (TestTTD.exe) oraz plik symbolu (TestTTD.pdb) są w C:\TestTTD\bin, a kod źródłowy jest w C:\TestTTD\src.

rekord

  1. Otwórz WinDbg z podwyższonymi prawami.
  2. na karcie Plik wybierz Uruchom plik wykonywalny (zaawansowany). W polu wykonywalny wpisz C:\TestTTD\TestTTD.exe. Sprawdź proces nagrywania za pomocą debugowania podróży w czasie, Ustaw Katalog wyjściowy na zapisywalną i istniejącą ścieżkę, a następnie kliknij OK.
  3. gdy aplikacja ulega awarii, WinDbg zapisuje plik śledzenia (.Uruchom rozszerzenie) i rejestruje lokalizację podczas ładowania.
  4. Zatrzymaj debugger i Otwórz lokalizację pliku śledzenia.

  1. Otwórz WinDbg.
  2. na karcie Plik wybierz Ustawienia z lewego paska bocznego. Wybierz Ustawienia debugowania, dodaj C:\TestTTD\src do pola ścieżka źródłowa i C:\TestTTD\bin do pola ścieżka symbolu. Kliknij OK, aby zapisać zmiany.
  3. na karcie Plik wybierz Otwórz plik śledzenia i przejdź do pliku śledzenia utworzonego w kroku rekord.

Analizuj

  1. po załadowaniu zarejestrowanego pliku śledzenia w WinDbg Dodaj punkt przerwania, aby zatrzymać i przeanalizować stan aplikacji. Załaduj plik skryptu z zakładki Źródło, a następnie kliknij po lewej stronie wiersza żądanego punktu przerwania. Naciśnij F5, aby uruchomić do punktu przerwania.
  2. Teraz naciśnij F10, aby przejść, jak w sesji debugowania Visual Studio. Kliknij krok do tyłu, aby uruchomić do tyłu.

wnioski

podczas debugowania kodu produkcyjnego i trudno powtarzalnych błędów, WinDbg i jego debugowanie w czasie są doskonałym narzędziem dla programistów, które mogą pomóc zaoszczędzić czas i zasoby, rejestrując wadliwą aplikację tylko na dotkniętym środowisku i dając możliwość odtwarzania go w dowolnym miejscu. Aby uzyskać więcej informacji, odwiedź blog firmy Microsoft lub obejrzyj ich demo na stronie MSDN Channel 9.

Leave a Reply

Twój adres e-mail nie zostanie opublikowany.