Symbole ładowania programu Visual Studio

166

Pracuję już od jakiegoś czasu nad projektem ColdFusion i Visual Studio przynajmniej dla mnie zaczął zachowywać się dziwnie.

Zauważyłem, że kiedy zacząłem debugować, zbudował projekt, rozpoczął wdrażanie, a wdrażanie zakończyło się i zaczynał ładować symbole dla mojego projektu.

Ale był bardzo powolny i nie wiem, dlaczego zaczął robić ten krok. Co mogłem zrobić?

Czy ten etap ładowania symbolu jest konieczny? Jak mogę to wyłączyć?

W oknie dialogowym Narzędzia -> Opcje -> Debugowanie -> Symbole nie dodano lokalizacji pliku symboli (.pdb). Wskazałem pole poniżej w katalogu debugowania mojego projektu i zaznaczyłem pole wyboru „Przeszukuj powyższy katalog tylko wtedy, gdy symbole są…”. Jak ustawić to okno dialogowe, aby wyłączyć ładowanie symboli?

Sprawdziłem w oknie modułów, które symbole są załadowane, ale nic mi to nie mówi. Jaki jest problem?

wprowadź opis obrazu tutaj

arnoldino
źródło
3
Próbowałem każdej odpowiedzi w wątku bez powodzenia.
Johan Larsson,
3
Zwykle symbole powinny być przechowywane w pamięci podręcznej i ich ładowanie powinno zająć niewiele lub brak czasu. Jedynym momentem, w którym można zauważyć powolne ładowanie symboli, jest sytuacja, gdy symbole są ładowane z serwerów symboli firmy Microsoft, co jest bardzo powolne np. (Nie zawsze bardzo powolne, ale wolne brak tym mniej), więc dobrym sposobem na wypróbowanie i próbę rozwiązania tego problemu jest usunięcie pamięci podręcznej symboli, po prostu przejdź do Debug -> Opcje -> Debugowanie -> Symbole i kliknij pustą pamięć podręczną symboli, jeśli to nie działa może być zupełnie innym problemem, mam nadzieję, że przyniesie to korzyści komuś, widząc, że pytanie ma 3 lata (:
daniel

Odpowiedzi:

266

Debug -> Usuń wszystkie punkty przerwania ( http://darrinbishop.com/blog/2010/06/sharepoint-2010-hangs-after-visual-studio-2010-f5-debugging ) Następnie możesz ich użyć ponownie, ale zrób to pewnego razu. Spowoduje to również usunięcie pewnego rodzaju „nieprawidłowych” punktów przerwania, a następnie ładowanie symboli będzie ponownie szybkie. Goniłem za tym problemem przez kilka dni :(.

peterfoldi
źródło
4
Użytkownicy programu Visual Web Developer 2010 Express mogą nacisnąć klawisze CTRL + SHIFT + F9 i wyświetlić monit „Czy chcesz usunąć wszystkie punkty przerwania?” pojawi się. Potrzebujesz co najmniej jednego aktywnego punktu przerwania (nie jestem pewien, czy problematyczne punkty przerwania w tle się liczą, więc ustaw jeden). Dzięki! Teraz dużo szybciej ...
Cymen
Co za gwiazda! Dziękuję bardzo.
user489998
Rzeczywiście, to działa! Niesamowite! Czy ktoś już zgłosił ten oczywisty błąd firmie Microsoft?
real_yggdrasil
Twój początek, to doprowadza mnie do szału od wielu dni. Stukrotne dzięki!
markpcasey
Cóż, to było nieoczekiwane! Naprawdę zadziałało. Uratowałeś mi dzień, bardzo dziękuję!
tmatuschek
132

Innym powodem powolnego ładowania jest wyłączenie opcji „Włącz tylko mój kod” w opcjach debugowania. Aby to włączyć, przejdź do:

Tools -> Options -> Debugging -> General -> Enable Just My Code (Managed Only) 

Upewnij się, że jest to zaznaczone.

nietras
źródło
Opcja „Tylko mój kod” nie jest dostępna w oknie dialogowym Opcje w niektórych wersjach programu Visual Studio Express (chociaż jest w Visual C # 2010 Express), ale można ją zmienić w inny sposób: Jak wyłączyć opcję „Tylko mój kod 'w Visual Basic 2005 Express? .
Peter Mortensen
3
To jest ten, który naprawił to dla mnie ... a nie odpowiedź „Usuń wszystkie punkty przerwania”.
Mark Brittingham
To chyba najgorsza opcja w programie Visual Studio. O wiele lepiej jest po prostu wyłączyć ładowanie symboli, aby nadal można było zobaczyć zgłoszenia wyjątków i ramki stosu, w których po prostu brakuje symboli. (Tylko trochę trudny do odczytania numer zamiast nazwy). Oczywiście zazwyczaj pracuję nad kodem strony internetowej, więc pode mną jest mnóstwo usług IIS, które mogą zawieść. Zwykle wystarczy usunąć zaznaczenie Microsoft (i wszystkich zdalnych) serwerów symboli jako źródła danych.
ebyrob
Uratowałeś mi pół dnia ...! : D
Vaibhav Deshmukh
43

Skonfiguruj w Narzędzia, Opcje, Debugowanie, Symbole.

Możesz obejrzeć okno wyjściowe (widok, wyjście), aby zobaczyć, co zwykle robi. Jeśli jest naprawdę wolny, prawdopodobnie oznacza to, że trafia na serwer symboli, prawdopodobnie Microsoft, aby pobrać brakujące symbole. To wymaga trzech trafień HTTP dla każdego pliku, którego nie może znaleźć przy każdym uruchomieniu - czasami możesz to zobaczyć na pasku stanu na dole lub np. W Fiddllerze. Możesz zobaczyć, które moduły załadowały symbole w Debug, Windows, Moduły podczas debugowania.

Symbole oznaczają, że otrzymujesz przydatne informacje o śledzeniu stosu do zestawów innych firm i systemów. Zdecydowanie potrzebujesz ich do własnego kodu, ale myślę, że ładują się niezależnie. Najlepszym rozwiązaniem jest wyłączenie wszelkich nielokalnych źródeł symboli w tym menu, a jeśli ładujesz wiele symboli dla zestawów systemowych, do których nie musisz debugować, możesz tymczasowo wyłączyć ładowanie tych, aby przyspieszyć rozpoczęcie debugowania - ale często warto je załadować.

Rup
źródło
3
W oknie dialogowym Narzędzia -> Opcje -> Debugowanie -> Symbole nie dodano lokalizacji pliku symboli (.pdb). Wskazałem pole poniżej w katalogu debugowania mojego projektu i zaznaczyłem pole wyboru „Przeszukuj powyższy katalog tylko wtedy, gdy symbole są…”. Nie wiem, jak ustawić to okno dialogowe, aby wyłączyć ładowanie symboli.
arnoldino
1
Hmm, wtedy nie wiem. Musisz załadować symbole dla własnego kodu, aby go debugować, więc nie sądzę, abyś chciał go całkowicie wyłączyć. Myślę, że wtedy spojrzałbym na okno modułów, aby zobaczyć, które symbole zostały załadowane, dowiedzieć się, które z nich są potrzebne, a następnie może usunąć .pdbs z pamięci podręcznej symboli dla tych, których nie chcesz?
Rup
1
Zaznacz opcję „użyj serwera symboli firmy Microsoft”, uruchom kod raz, a następnie wszystkie symbole znajdują się w pamięci podręcznej. Możesz teraz odznaczyć to pole, aby zwiększyć prędkość.
john ktejik
1
Wyłączenie serwera symboli firmy Microsoft w menu Narzędzia -> Opcje -> Debugowanie -> Symbole rozwiązało ten problem. Zanim czekałem 30 sekund na rozpoczęcie debugowania. Teraz to tylko sekunda.
Mike Chamberlain
41

Właśnie miałem ten problem.

Naprawiłem to, przechodząc do:

Narzędzia -> Opcje -> Debugowanie -> Symbole

Następnie odznacz wszystkie nielokalne źródła dla lokalizacji plików symboli (.pdb)

np. serwery symboli firmy Microsoft i msdl.microsoft.com/download/symbols

JohnMcC
źródło
23

Miałem podobny problem. W moim przypadku ustawiłem _NT_SYMBOL_PATH do pobierania z serwerów Microsoft do użytku w WinDbg i wygląda na to, że po ustawieniu Visual Studio użyje tego bez możliwości zignorowania. Usunięcie tej zmiennej środowiskowej rozwiązało mój problem.

jcarle
źródło
To również rozwiązało problem dla mnie (wydaje mi się, że mała liczba głosów pozytywnych wynika z małej liczby osób, które ustawiły tę zmienną ...) Dzięki!
Aasmund Eldhuset
To samo tutaj. Pomyślałem, że mogę po prostu odznaczyć to z symboli, ale nie, zmienna env musi zostać usunięta / zmieniona.
codekaizen
16

Możesz wypróbować następującą odpowiedź na bardzo wolne debugowanie / ładowanie programu Visual Studio :

  1. Przejdź do Narzędzia -> Opcje -> Debugowanie -> Ogólne

  2. ZAZNACZ znacznik wyboru obok „Włącz tylko mój kod”.

  3. Przejdź do Narzędzia -> Opcje -> Debugowanie -> Symbole

  4. Kliknij przycisk „...” i utwórz / wybierz nowy folder gdzieś na swoim komputerze lokalnym do przechowywania symboli w pamięci podręcznej. Nazwałem moje „Buforowanie symboli” i umieściłem je w Documents -> Visual Studio 2012.

  5. Kliknij „Załaduj wszystkie symbole” i poczekaj, aż symbole zostaną pobrane z serwerów Microsoft, co może chwilę potrwać. Należy pamiętać, że przycisk Załaduj wszystkie symbole jest dostępny tylko podczas debugowania.

  6. ODZNACZ pole wyboru obok „Serwery symboli firmy Microsoft”, aby uniemożliwić programowi Visual Studio zdalne wysyłanie zapytań do serwerów Microsoft.

  7. Kliknij OK".

Spróbuj także usunąć wszystkie punkty przerwania (Debuguj> Usuń wszystkie punkty przerwania),

Zobacz też : Visual Studio 2015 RC1 zawiesza się w trybie debugowania podczas ładowania symboli

H'H
źródło
6

Wydaje mi się, że jest to związane z punktami przerwania, jak wskazano w zaakceptowanej odpowiedzi. Jednak znalazłem dwa obejścia, które nie wymagały usunięcia wszystkich punktów przerwania:

  • Ponowne uruchomienie programu Visual Studio wydawało się tymczasowo go naprawić.
  • Kliknięcie przycisku „X” w celu zamknięcia programu Visual Studio podczas debugowania powoduje wyświetlenie komunikatu „Czy chcesz zatrzymać debugowanie?” wyskakujące okno wiadomości; gdy okno komunikatu jest włączone, symbole ładują się ze zwykłą prędkością. Po załadowaniu wszystkich symboli możesz kliknąć „Nie”, aby anulować zamknięcie.
Cameron
źródło
3
dziękuję za to szalone obejście (z komunikatem „czy chcesz zatrzymać debugowanie”). Najpierw wypróbowałem inne odpowiedzi, ale jak na razie pomaga tylko czerwony „X” i sztuczka „Czy chcesz…”. dziękuję,
traciłem
2
@que: Heh, nie ma za co! Odkryłem to przez przypadek. Wygląda na to, że VS ma oddzielną pętlę komunikatów, do której wchodzi w tym modalnym oknie dialogowym, więc gdy jest powolny bez powodu, czasami pojawia się okno dialogowe :-)
Cameron,
6

Właśnie napotkałem ten problem. Usuwanie punktów przerwania nie działało, a przynajmniej nie tylko samo w sobie. Po niepowodzeniu poszedłem Narzędzia> Opcje> Debugowanie> Symbole i „Opróżnij pamięć podręczną symboli”

a następnie wyczyścił roztwór i odbudował.

Wydaje się, że teraz działa poprawnie. Więc jeśli wypróbujesz wszystkie inne wymienione rzeczy i nadal nie ma to znaczenia, te dodatkowe informacje mogą pomóc ...

SteveL
źródło
2

W moim przypadku program Visual Studio szukał plików PDB innych firm w ścieżkach, które na moim komputerze odnosiły się do napędu optycznego. Bez dysku w zasobniku awaria zajęła około ~ 30 systemu Windows, co z kolei spowolniło program Visual Studio podczas próby załadowania plików PDB z tej lokalizacji. Więcej szczegółów jest dostępnych w mojej pełnej odpowiedzi tutaj: https://stackoverflow.com/a/17457581/85196

Mikrofon
źródło
2

Miałem ten sam problem i nawet po wyłączeniu ładowania symbolu ładowanie modułu w Visual Studio było strasznie wolne.

Rozwiązaniem było wyłączenie oprogramowania antywirusowego (w moim przypadku NOD32) lub jeszcze lepiej, dodanie do niego wyjątków tak, aby ignorowało ścieżki, z których twój proces ładuje zestawy (w moim przypadku jest to folder GAC i tymczasowa ASP .NET Files).

dwukwiatowy
źródło
2

Moje 2 centy,

Miałem podobny problem podczas próby uzyskania raportu diagnostycznego (Visual Studio 2013) w trybie wydania x64 (próbkowanie procesora) i podczas ładowania symboli potrzebnych plików dll nie można było załadować symboli dla mojego pliku wykonywalnego.

Nie zmieniłem niczego w menu Symbole, zamiast tego dokonałem pewnych zmian na stronach właściwości wątku mojego pliku wykonywalnego w Eksploratorze rozwiązań, a mianowicie

Właściwości konfiguracji / Ogólne / Włącz zarządzaną kompilację przyrostową na TAK

Właściwości konfiguracyjne / debugowanie / scalanie środowiska na NIE

Właściwości konfiguracji / C / C ++ / Włącz przeglądanie informacji na TAK (/ FR)

Właściwości konfiguracji / Linker / Włącz przyrostowe łączenie na TAK (/ INCREMENTAL)

EDYCJA: Ten ostatni załatwia sprawę

....

Właściwości konfiguracji / konsolidator / debugowanie / generowanie informacji debugowania na tak (/ DEBUG)

....

Potem zadziałało i poprawnie załadował symbole. Jestem pewien, że co najmniej jeden z powyższych elementów załatwił sprawę dla mnie (chociaż nie wiem dokładnie, który) i chcę tylko dać znać innym i spróbować.

pokój

user3374479
źródło
1

Spróbuj kliknąć prawym przyciskiem myszy jeden z punktów przerwania, a następnie wybierz „Lokalizacja”. Następnie zaznacz pole wyboru „Zezwalaj na kod źródłowy różni się od wersji oryginalnej”

Jeremiah Anthony
źródło
1

Opcje przyspieszania symbolu debugowania programu Visual Studio 2017, zakładając, że nie oszalałeś już na temat dostosowywania opcji:

  1. W Tools -> Options -> Debugging -> Symbols
    a. Włącz opcję „Microsoft Symbol Server”
    b. Kliknij „Opróżnij pamięć podręczną symboli”
    . C. Ustaw pamięć podręczną symboli na łatwe do znalezienia miejsce, na przykład C:\dbg_symbolslub%USERPROFILE%\dbg_symbols
  2. Po ponownym uruchomieniu debugowania pozwól mu załadować wszystkie symbole raz, od początku do końca, lub tak dużo, jak to jest rozsądnie możliwe.

1A i 2 to najważniejsze kroki. 1B i 1C to po prostu pomocne zmiany, które pomogą ci śledzić twoje symbole.

Gdy aplikacja co najmniej raz załaduje wszystkie symbole, a debugowanie nie zakończyło się przedwcześnie, symbole te powinny zostać szybko załadowane przy następnym uruchomieniu debugowania.

Zauważyłem, że jeśli anuluję przebieg debugowania, muszę ponownie załadować te symbole, ponieważ domyślam się, że są one „czyszczone”, jeśli są nowo wprowadzone i nagle anulowane. Rozumiem podstawowe uzasadnienie tego rodzaju przepływu, ale w tym przypadku wydaje się on słabo przemyślany.

kayleeFrye_onDeck
źródło
0

Usunięcie zaznaczenia „Włącz debugowanie JavaScript dla ASP.NET (Chrome i IE)” w menu Narzędzia-> Opcje-> Debugowanie-> Ogólne rozwiązało mój przypadek z niedostępnością do uruchomienia debugera VS2017 z wstępnie ustawionymi punktami przerwania.

Angel_D
źródło
0

Jedyną rzeczą, która działała dla mnie, była zmiana typu kodu.

W oknie Dołącz do procesu zmieniłem opcję Dołącz do: na Automatycznie określ typ kodu do debugowania , a następnie zostały trafione moje punkty przerwania.

Wcześniej miałem wybrany tylko kod natywny .

apohl
źródło
0

Miałem podobny problem, w którym Visual Studio ciągle ładowało symbol i utknęło.

Okazuje się, że dodałem kilka "argumentów wiersza poleceń" w opcjach debugowania, a jeden z parametrów jest nieprawidłowy (mam przekazać jakieś wartości). wprowadź opis obrazu tutaj

Po usunięciu dodatkowego parametru znowu zaczyna działać.

Hainan.Z
źródło