Zwiększanie prawdopodobieństwa naprawy problemu z wydajnością

Narzędzie "Zgłoś problem" jest powszechnie używane przez użytkowników programu Visual Studio do zgłaszania szeregu problemów. Zespół programu Visual Studio zauważa trendy awarii i spowolnienia opinii użytkowników i rozwiązuje problemy wpływające na szeroką gamę użytkowników. Bardziej praktyczny jest konkretny bilet opinii, tym bardziej prawdopodobne, że zostanie zdiagnozowany i szybko rozwiązany przez zespół produktu. W tym dokumencie opisano najlepsze rozwiązania podczas raportowania problemów z awarią lub powolnością, aby zwiększyć ich możliwości działania.

Ogólne sprawdzone metody postępowania

Visual Studio to duża, złożona platforma, która obsługuje wiele języków, typów projektów, platform i nie tylko. Sposób jego działania to funkcja, z której składniki są instalowane i aktywne w sesji, zainstalowane rozszerzenia, ustawienia programu Visual Studio, konfiguracja maszyny, a na koniec kształt edytowanego kodu. Biorąc pod uwagę liczbę zmiennych, trudno stwierdzić, czy raport o problemie jednego użytkownika ma ten sam podstawowy problem co raport o problemie od innego użytkownika, mimo że widoczny objaw jest taki sam. Biorąc pod uwagę, że poniżej przedstawiono najlepsze rozwiązania, aby upewnić się, że konkretny raport problemu ma większe prawdopodobieństwo zdiagnozowania.

Podaj jak najośniejszy tytuł

Poszukaj unikatowych podpisów dla zgłaszanego problemu i uwzględnij jak najwięcej w tytule. Jeśli tytuł jest opisowy, jest mniej prawdopodobne, że użytkownicy z niepowiązanymi problemami (ale ten sam powierzchowny objaw) będą głosować lub komentować bilet, co utrudnia diagnozę problemu.

W razie wątpliwości zarejestruj nowy raport o problemach

Wiele problemów może nie mieć żadnego charakterystycznego podpisu lub kroków do odtworzenia. W takich przypadkach nowy raport jest lepszy niż wysłannika lub komentarz do innego raportu, który zgłasza podobny objaw zewnętrzny. W zależności od typu raportu dołącz dodatkowe pliki diagnostyczne do raportu zgodnie z opisem w dalszej części tego dokumentu.

Najlepsze rozwiązania dotyczące problemów

Poniżej opisano problemy, które trudno zdiagnozować bez dobrych plików diagnostycznych. Po zidentyfikowaniu przypadku, który najlepiej opisuje twój problem, wykonaj kroki opinii specyficzne dla tego przypadku.

Ulega awarii

Awaria występuje, gdy proces (Visual Studio) kończy się nieoczekiwanie.

Bezpośrednie powtarzalne awarie

Bezpośrednio odtwarzane awarie to przypadki, w których wszystkie następujące cechy:

  • Można zaobserwować, wykonując znany zestaw kroków

  • Można zaobserwować na wielu komputerach (jeśli są dostępne)

  • Można odtworzyć w przykładowym kodzie lub projekcie, który może być połączony lub dostarczony jako część opinii (jeśli kroki obejmują otwarcie projektu lub dokumentu)

W przypadku tych problemów wykonaj kroki opisane w temacie "Jak zgłosić problem" i pamiętaj, aby uwzględnić następujące kwestie:

  • Kroki odtworzenia problemu

  • Autonomiczny projekt odtworzenia zgodnie z powyższym opisem. Jeśli autonomiczne odtworzenie nie jest możliwe, dołącz:

    • Język otwartych projektów (C#, C++itp.)

    • Rodzaj projektu (aplikacja konsolowa, ASP.NET itp.)

Uwaga

Najbardziej cenna opinia: W tym przypadku najbardziej cenną opinią jest zestaw kroków do odtworzenia problemu wraz z przykładowym kodem źródłowym.

Nieznane awarie

Jeśli nie masz pewności, co powoduje awarie lub wydają się losowe, możesz przechwycić zrzuty lokalnie za każdym razem, gdy program Visual Studio ulegnie awarii i dołącz je do oddzielnych elementów opinii. Aby zapisać zrzuty lokalnie w przypadku awarii programu Visual Studio, uruchom następujące polecenia w oknie polecenia administratora:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

Dostosuj odpowiednio liczbę zrzutów i folder zrzutu. Więcej informacji na temat tych ustawień można znaleźć tutaj.

Uwaga

Zrzuty przechwycone przy użyciu Menedżera zadań mogą być z niewłaściwej bitowości, co sprawia, że są one mniej użyteczne. Procedura opisana powyżej jest preferowanym sposobem przechwytywania zrzutu sterty. Jeśli chcesz użyć Menedżera zadań, zamknij ten, który jest aktualnie uruchomiony, uruchom menedżera zadań 32-bitowych (%windir%\syswow64\taskmgr.exe) i zbierz zrzut sterty stamtąd.

Uwaga

Każdy plik zrzutu utworzony przez tę metodę będzie mieć rozmiar do 4 GB. Upewnij się, że ustawiono wartość DumpFolder na lokalizację z odpowiednim miejscem na dysku lub odpowiednio dostosuj wartość DumpCount.

Za każdym razem, gdy program Visual Studio ulegnie awarii, zostanie utworzony plik zrzutu devenv.exe.[ number].dmp pliku w skonfigurowanej lokalizacji.

Następnie użyj polecenia "Zgłoś problem" programu Visual Studio. Funkcji. Umożliwi to dołączenie odpowiedniego zrzutu.

  1. Znajdź plik zrzutu dla zgłaszanych awarii (poszukaj pliku z poprawnym czasem tworzenia)

  2. Jeśli to możliwe, spakuj plik (*.zip), aby zmniejszyć jego rozmiar przed przesłaniem opinii

  3. Wykonaj kroki opisane w temacie "Jak zgłosić problem" i dołącz zrzut stert do nowego elementu opinii.

Uwaga

Najbardziej cenna opinia: W tym przypadku najbardziej cenną opinią jest zrzut sterty przechwycony w momencie awarii.

Brak odpowiedzi

Program VS przestaje odpowiadać przez dłuższy czas.

Bezpośrednio powtarzalna nieodpowiadczność

Jak opisano w odpowiedniej sekcji dotyczącej awarii, w przypadku problemów, które można łatwo odtworzyć, widoczne na wielu maszynach i można je zademonstrować w małym przykładzie, najbardziej cenne raporty opinii to te, które obejmują kroki odtworzenia problemu i zawierają przykładowy kod źródłowy, który demonstruje problem.

Nieznana brak odpowiedzi

Jeśli brak odpowiedzi manifestuje się w nieprzewidywalny sposób, w następnym wystąpieniu uruchom nowe wystąpienie programu Visual Studio i zgłoś problem z tego wystąpienia. Na ekranie "Rekord" pamiętaj, aby wybrać sesję programu Visual Studio, która nie odpowiada. (Aby uzyskać więcej informacji na temat rejestrowania akcji, które możemy wykonać w celu odtworzenia problemu, zobacz Krok 8 na stronie Jak zgłosić stronę problemu ).

Jeśli wystąpienie programu Visual Studio, które nie odpowiada, zostało uruchomione w trybie Administracja istratora, drugie wystąpienie również musi zostać uruchomione w trybie Administracja istratora.

Uwaga

Najcenniejsza opinia: W tym przypadku najbardziej cenną opinią jest zrzut sterty przechwycony w momencie braku odpowiedzi.

Problemy z powolnym działaniem i wysokim użyciem procesora CPU

To, co sprawia, że spowolnienie lub wysokie użycie procesora CPU jest najbardziej praktycznym problemem, jest przechwycony ślad wydajności, podczas gdy powolne działanie lub wysokie zdarzenie procesora CPU jest w toku.

Uwaga

Jeśli to możliwe, izoluj każdy scenariusz w osobnym, określonym raporcie opinii. Jeśli na przykład wpisywanie i nawigacja są powolne, wykonaj poniższe kroki raz na problem. Pomaga to zespołowi produktu odizolować przyczynę określonych problemów.

Aby uzyskać najlepsze wyniki przechwytywania wydajności, wykonaj następujące kroki:

  1. Jeśli jeszcze nie uruchomiono, otwórz kopię programu Visual Studio, w której odtworzysz problem

    • Mieć wszystko skonfigurowane do odtworzenia problemu. Jeśli na przykład potrzebny jest konkretny projekt do załadowania z otwartym określonym plikiem, przed kontynuowaniem upewnij się, że oba te kroki zostały ukończone.

    • Jeśli nie zgłaszasz problemu specyficznego dla ładowania rozwiązania, spróbuj poczekać od 5 do 10 minut (lub więcej, w zależności od rozmiaru rozwiązania) po otwarciu rozwiązania przed zarejestrowaniem śledzenia wydajności. Proces ładowania rozwiązania generuje dużą ilość danych, więc oczekiwanie na kilka minut pomaga nam skupić się na konkretnym zgłaszanym problemie.

  2. Uruchom drugą kopię programu Visual Studio bez otwartego rozwiązania

  3. W nowej kopii programu Visual Studio otwórz narzędzie Zgłoś problem

  4. Wykonaj kroki opisane w temacie Jak zgłosić problem , dopóki nie osiągniesz kroku "Podaj ślad i zrzut stert (opcjonalnie)".

  5. Wybierz opcję zarejestrowania pierwszej kopii programu Visual Studio (problemu z wydajnością) i rozpoczęcia nagrywania.

    • Zostanie wyświetlona aplikacja Rejestrator kroków i rozpocznie nagrywanie.

    • Podczas nagrywania wykonaj problematyczną akcję w pierwszej kopii programu Visual Studio. Trudno nam rozwiązać określone problemy z wydajnością, jeśli nie pojawiają się w czasie zarejestrowanym.

    • Jeśli akcja jest krótsza niż 30 sekund i można ją łatwo powtórzyć, powtórz akcję, aby jeszcze bardziej zademonstrować problem.

    • W większości przypadków ślad 60 sekund wystarczy, aby zademonstrować problemy, zwłaszcza jeśli problematyczne działanie trwało (lub zostało powtórzone) przez ponad 30 sekund. Czas trwania można dostosować w razie potrzeby, aby przechwycić zachowanie, które chcesz naprawić.

  6. Kliknij pozycję "Zatrzymaj rekord" w rejestratorze kroków natychmiast po zakończeniu powolnej operacji lub dużego zdarzenia procesora CPU, które chcesz zgłosić. Przetworzenie śledzenia wydajności może potrwać kilka minut.

  7. Po zakończeniu opinia będzie zawierać kilka załączników. Dołącz wszelkie dodatkowe pliki, które mogą pomóc w odtworzeniu problemu (przykładowy projekt, zrzuty ekranu, filmy wideo itp.).

  8. Prześlij opinię.

Podczas rejestrowania śledzenia wydajności, jeśli zgłaszana operacja lub wysokie użycie procesora CPU zbliża się do końca, natychmiast zatrzymaj nagrywanie. Jeśli zbierane są zbyt wiele informacji, najstarsze informacje zostaną zastąpione. Jeśli śledzenie nie zostanie wkrótce zatrzymane (w ciągu kilku sekund) po interesującej operacji, przydatne dane śledzenia zostaną zastąpione.

Nie dołączaj bezpośrednio śladów wydajności do istniejących elementów opinii w witrynie społeczności deweloperów. Żądanie/podanie dodatkowych informacji jest obsługiwanym przepływem pracy we wbudowanym narzędziu Zgłoś problem w programie Visual Studio. Jeśli śledzenie wydajności jest wymagane w celu rozwiązania poprzedniego elementu opinii, ustawimy stan elementu opinii na wartość "Potrzebujesz więcej informacji", na co można odpowiedzieć w taki sam sposób, jak w przypadku zgłaszania nowego problemu. Aby uzyskać szczegółową instrukcję, zapoznaj się z sekcją "Potrzebujesz dodatkowych informacji" w dokumencie dotyczącym narzędzia problemu.

Uwaga

Najbardziej cenna opinia: W przypadku niemal wszystkich problemów z powolnym/wysokim użyciem procesora CPU najbardziej cenna opinia to ogólny opis tego, co próbujesz zrobić, wraz ze śladem wydajności (*.etl.zip), który przechwytuje zachowanie w tym czasie.

Zaawansowane ślady wydajności

Możliwości zbierania śladów w narzędziu Report-a-problem są wystarczające w przypadku większości scenariuszy. Jednak czasami potrzebna jest większa kontrola nad zbieraniem śladów (na przykład ślad z większym rozmiarem buforu), w tym przypadku narzędzie PerfView jest doskonałym narzędziem do użycia. Kroki ręcznego rejestrowania śledzenia wydajności przy użyciu narzędzia PerfView można znaleźć na stronie Rejestrowanie śladów wydajności za pomocą narzędzia PerfView .

Problemy z brakami procesów

Uwaga

Począwszy od programu Visual Studio 2019 w wersji 16.3, dzienniki poza procesem są automatycznie dołączane do opinii przesłanych przy użyciu narzędzia Zgłoś problem. Jeśli jednak problem jest bezpośrednio powtarzalny, wykonanie poniższych kroków może jeszcze pomóc w dodaniu dodatkowych informacji, aby lepiej zdiagnozować problem.

Istnieje wiele procesów satelitarnych, które są uruchamiane równolegle do programu Visual Studio i udostępniają różne funkcje spoza głównego procesu programu Visual Studio. Jeśli wystąpi błąd w jednym z tych procesów satelickich, zwykle jest widoczny po stronie programu Visual Studio jako "StreamJsonRpc.RemoteInvocationException" lub "StreamJsonRpc". Połączenie ionLostException".

Co sprawia, że te typy problemów najbardziej umożliwiają podejmowanie działań, to udostępnienie dodatkowych dzienników, które można zebrać, wykonując następujące kroki:

  1. Jeśli jest to problem bezpośrednio powtarzalny, zacznij od usunięcia folderu %temp%/servicehub/logs . Jeśli nie możesz odtworzyć tego problemu, zachowaj ten folder nienaruszony i zignoruj następujące punktory:

    • Ustaw globalną zmienną środowiskową ServiceHubTraceLevel na wszystkie
    • Odtwórz problem.
  2. Pobierz narzędzie microsoft Visual Studio i .NET Framework Log Collection Tool tutaj.

  3. Uruchom narzędzie. Spowoduje to wyjście pliku zip do pliku %temp%/vslogs.zip. Dołącz ten plik do opinii.