Problem z powolnym debugowaniem w programie Visual Studio

87

W moim wystąpieniu Visual Studio, nawet jeśli napisałem tylko jedną linię zwrotu w aplikacji konsolowej C #, F5wykonanie właściwego kodu zajmie mi minutę po naciśnięciu (mam na myśli czas potrzebny do zatrzymania pojedynczej instrukcji powrotu po naciśnięcie F5- ustawiam punkt przerwania w instrukcji return w mainfunkcji). Co jest nie tak? Czy jest lista kontrolna?

Używam Visual Studio 2008 w wersji VSTS i debugowania w systemie Windows Server 2003 x64.

George2
źródło
2
Tylko dla pewności ... Ile pamięci masz do dyspozycji podczas próby uruchomienia kodu? VS to
świństwo
1
Jaki jest twój sprzęt? Program Visual Studio wymaga bardzo dużej ilości miejsca na dysku i procesora, więc posiadanie niedrogiej maszyny nie będzie wydajne.
William Holroyd
1
Po> 2-3 punkty przerwania warunkowe jest źle traktowane przez VS ...
Simon Buchan
Mam pamięć 4G i żaden inny proces nie działa w tym samym czasie. Właśnie kilka razy uruchomiłem ponownie komputer i ten sam objaw. Nie spotkałem się z takimi problemami tydzień wcześniej. Jakieś dalsze pomysły?
George 2
2
Wszystkie są wymienione w Debug-> Windows-> Breakpoints (Ctrl-Alt-B). Ale wiedziałbyś, gdybyś ...
Simon Buchan

Odpowiedzi:

150

Może być konieczne usunięcie wszystkich punktów przerwania --- pamiętaj, że musisz kliknąć przycisk „Usuń wszystkie punkty przerwania” (lub użyć Ctrl+ Shift+ F9), a nie tylko usuwać je jeden po drugim. Jeśli program Visual Studio zmienił ustawienia rozwiązania, to drugie nie zadziała. Być może będziesz musiał najpierw dodać punkt przerwania, aby to zadziałało (sprytne, co?).

Jeśli najgorsze stanie się najgorsze, może być konieczne usunięcie .suopliku i pozwolenie programowi Visual Studio na rozpoczęcie nowego od zera. Pamiętaj jednak, że utracisz swoje osobiste ustawienia konfiguracji rozwiązania (tylko w przypadku tego rozwiązania, a nie innych). Możesz jednak tymczasowo przenieść / zmienić nazwę pliku, dopóki nie ustalisz, czy jest to problem; w ten sposób zawsze możesz go cofnąć. Widziałem, jak niektóre zasoby internetowe zalecają usunięcie (przeniesienie / zmianę nazwy) również .ncbpliku.

zweiterlinde
źródło
2
Cześć, zweiterlinde. Uważam, że wąskie gardło powinno radzić sobie z siecią. Kiedy odłączam kabel sieciowy, wydajność jest bardzo dobra w debugowaniu. Czy masz jakieś pomysły, dlaczego? i jak dalej oceniać?
George2
usunięcie 14Mb pliku .suo zadziałało dla mnie :) jest teraz kiepskie 150Kb.
Wystąpił
+1. Wielkie dzięki, zadziałało). Mój VS 2010 potrzebował 2 minut na rozpoczęcie projektu na stacji roboczej. Huh. Co za błąd ...
Arsen Zahray
Usunąłem również plik .suo, ale zrobiłem to podczas działania programu Visual Studio. Po ponownym uruchomieniu programu Visual Studio ponownie bardzo szybko podłączyłem debuger i wygląda na to, że zachował większość moich ustawień.
utknął
+1 wielkie dzięki, naprawdę. Więc w moim przypadku usunięcie pliku suo było dla mnie idealne.
Dean Seo
26

Widziałem to już wcześniej. Spróbuj usunąć wszystkie punkty przerwania, a następnie ustaw te, które chcesz. Hit F5. Czy teraz jest szybszy?

Właśnie zauważyłem, że wspomniałeś o konfiguracji funkcji debugowania źródła .NET. Spróbuj to wyłączyć. Twoja łączność sieciowa z serwerem źródłowym firmy Microsoft może być powolna. Wyłącz także wszelkie połączenia z serwerem symboli w menu NarzędziaOpcjeDebugowanieSymbole .

Spróbuj również wyłączyć opcję „Włącz ocenę właściwości i inne niejawne wywołania funkcji” w menu NarzędziaOpcjeDebugowanieOgólne .

ostry
źródło
1
W moim oknie punktów przerwania jest tylko jeden w instrukcji return mojej funkcji Main. Jakieś inne listy kontrolne?
George2
1
Dodano więcej rzeczy do wypróbowania. Mam nadzieję, że to pomoże.
ostry
Usunąłem jedyny punkt przerwania w instrukcji return mojej funkcji Main, ale nadal bardzo wolno uruchamia aplikację i zatrzymuje się, zajmuje około 1 minuty. Jakieś dalsze pomysły?
George2
Oto kolejny pomysł na wyizolowanie problemu. Spróbuj odłączyć kabel sieciowy, zrestartuj Visual Studio i naciśnij F5 na swoim projekcie. Czy to coś zmienia?
ostry
1
Spróbuj to wyłączyć, twoja łączność sieciowa z serwerem źródłowym firmy Microsoft może być powolna. Wyłącz także wszelką łączność z serwerem symboli w Narzędzia> Opcje> Debugowanie> Symbole - To zadziałało dla mnie
Yousuf Azad
19

Lub usuń plik .suo, który znajduje się obok pliku rozwiązania (.sln). To rozwiązało problem, który miałem z sesjami debugowania, których rozpoczęcie i zatrzymanie trwało długo.

Szczery
źródło
+1 za uratowanie mojego zdrowia psychicznego (i zaoszczędzenie mi ponownej instalacji VS2010). Dzięki!
Chuck Dee
To jest również
przywoływane
Potwierdzenie dotyczy również starszych wersji 2003.NET i 2005. Jedna aplikacja miała kilka punktów przerwania i działała poprawnie. Dodano kilka dodatkowych punktów przerwania ... 100% wykorzystania procesora i straszne migotanie w VS podczas debugowania. Zamknięty VS, usunięty .suo, ponownie otwarty i debugowanie jest ponownie szybkie.
AlainD
Jest to rozwiązanie, które znajdę zawsze działa, gdy robi się zbyt wolno VS pod względem debugowania
Graviton
Lub zmień nazwę pliku .suo przed usunięciem, aby można było powrócić do poprzedniego stanu.
Peter Mortensen
12

Miałem ten problem. Po wypróbowaniu wszystkich wymienionych porad i usunięciu wszystkich rozszerzeń Visual Studio, w końcu zorientowaliśmy się, że w jakiś sposób włączono IntelliTrace. Wyłączenie tego naprawiło wszystko.

Instrukcje: włączanie i wyłączanie funkcji IntelliTrace

Kevin DiTraglia
źródło
Rozwiązuje też problem jeśli masz projekt wykorzystujący SharpDX - u mnie zadziałał i teraz wydajność grafiki wraca do normy.
komorra
W szczególnym przypadku używania SharpDX i Debug-Build miałem ten sam efekt, ale było to tylko włączone debugowanie DX. Jeśli nie jest to potrzebne, wyszukaj „DeviceCreationFlags.Debug” i wyłącz je
thewhiteambit
W VS2015 odznaczyłem „Włącz Intellitrace” i kliknąłem OK. Później odkryłem, że musisz zmienić „Intellitrace and call information” na „Intelllitrace events only”; jeśli nie, „Włącz Intellitrace” POZOSTAJE SPRAWDZONE!
smirkingman
Rozwiązałem problemy! (nie wierz w komentarz MS: „Ten temat dotyczy tylko programu Visual Studio 2010 Ultimate”). Mam darmową edycję 2017 i znacznie przyspiesza debugowanie!
marsh-wiggle
IntelliTrace w VS 2017 i nowszych jest funkcją tylko dla przedsiębiorstw, więc nie rozwiązało to mojego problemu (ponieważ miałem tylko wersję VS 2017 Pro).
FoxDeploy
6

Czy masz ustawionych dużo punktów przerwania? To może naprawdę spowolnić czas uruchamiania. Za każdym razem, gdy nowy moduł jest ładowany do przestrzeni adresowej procesu, wszystkie muszą zostać sprawdzone, aby zobaczyć, czy są prawidłowe.

1800 INFORMACJE
źródło
Mam tylko jeden punkt przerwania w moim kodzie trybu użytkownika. Ale przypomniałem sobie tydzień przed użyciem funkcji debugowania źródła w programie Visual Studio, aby ustawić punkt przerwania w wewnętrznym kodzie .Net. Jakiś sposób, aby sprawdzić wszystkie punkty przerwania, w tym ustawione przeze mnie wewnętrzne.
George2
Brak, ale wciąż powolny, jakieś dalsze pomysły?
George2
nie bardzo, wygląda na to, że twój sprzęt powinien być w porządku, a wszystkie inne elementy, które próbowałem, zostały odznaczone przez innych komentatorów. W tym momencie prawdopodobnie spróbuję ponownie zainstalować Visual Studio - może coś jest nie tak z instalacją
1800 INFORMACJA
Przeinstalowałem do innego katalogu, ale nadal mam ten sam symptom. Jakieś dalsze pomysły?
George2
6

Przejdź do menu NarzędziaOpcjeDebuggerSymbole i sprawdź, czy masz ustawione symbole publiczne lub ścieżki sieciowe UNC . Sprawdź także menu Narzędzia * → OpcjeDebugerOgólne, aby zobaczyć, czy masz ustawiony serwer źródłowy.

Wszystko to może mieć wpływ na debugowanie w przypadku niskiej szybkości sieci lub niedostępnych serwerów. 5-minutowy czas oczekiwania to przekroczenie limitu czasu sieci.

Jeśli nic w opcjach nie jest ustawione, sprawdź, czy masz ustawioną zmienną środowiskową _NT_SYMBOL_PATH.

Steve Steiner
źródło
Dziękuję, to było to dla mnie. Czasami ładowałem 1 lub 2 pliki symboli w oknie Moduły, wskazując symbole z naszych kompilacji za pośrednictwem ścieżek UNC lub rzadziej wskazując maszyny wirtualne, które już nie istnieją. Nie zdawałem sobie sprawy, że zapisał wszystkie te ścieżki w ustawieniach debugera / symboli.
brian
6

Mój kolega miał bardzo wolno odpowiadający program Visual Studio i wykonanie kroku podczas debugowania zajęło dosłownie kilka minut.

Główną przyczyną okazał się program antywirusowy (Threatfire), który zwariował podczas działania programu Visual Studio. Zabicie tego procesu natychmiast naprawiło wszystko.

mafu
źródło
Miałem okropne doświadczenie w debugowaniu sieci, dopóki nie wyłączyłem antywirusa ESET. Po naciśnięciu F5 mój czas odpowiedzi wzrósł z 2-3 minut do 2-3 sekund.
James Hulse,
1
Wstrzymanie ThreatFire na jakiś czas też mi bardzo pomogło - dzięki! (Tymczasowe wyłączenie Avast! Trochę pomogło, ale nie tak bardzo.)
Jon Coombs
Malwarebytes był przyczyną mojego problemu. Zamknięcie go naprawiło powolność.
Ben Rubin
Używam też Malwarebytes ... Po zamknięciu programu debugowanie VisualStudio jest znacznie szybsze. Debugowanie trwało 15 sekund wcześniej, teraz trwa 2 sekundy) .. Dzięki!
BlueDev
5

W moim przypadku zmiana symbolu debugowania „Automatycznie ładuj symbol dla” z opcji „Wszystkie moduły” na „Tylko określone moduły” rozwiązała problem. Możesz zmienić tę opcję w menu NarzędziaOpcjeDebugowanieSymbole .

cahit beyaz
źródło
3

Inna przyczyna plus ... Jak znaleźć problem

Dla mnie była to opcja ShowOtherThreadIpMarkers . Wartość 1 sprawia, że ​​program Visual Studio (2010) jest nieznośnie wolny (3-5 sekund na każdy krok debugowania. Wartość 0 oznacza, że ​​znowu działa szybko.

Co to za opcja? Nie mam pojęcia. Nie mogłem go znaleźć za pośrednictwem interfejsu użytkownika programu Visual Studio. Odznacziłem wszystkie możliwe opcje debugowania i nic nie działało.

Więc poszedłem do Import / Export Settings i załadowałem moje stare ustawienia, które wcześniej zapisałem, cofając się w czasie, aż Visual Studio znów było szybkie, a następnie porównałem pliki vssettings ... itd., Itd.

Chciałbym zauważyć, że jeśli załadujesz ustawienia, gdy jesteś w trybie debugowania zatrzymanym w punkcie przerwania, zaczną obowiązywać natychmiast. Nie musisz zatrzymywać debugera i restartować.

marcelloptr
źródło
+1 Dzięki, to też był mój problem z aplikacją internetową C # w VS2015. Wyłączyłem opcję „Pokaż wątki w źródle” na pasku narzędzi podczas debugowania i problem zniknął. Jeśli opcja nie jest dostępna na pasku narzędzi, można ją znaleźć, klikając prawym przyciskiem dowolny wątek w oknie Wątki.
Groo,
2

Z bloga ScottGu, do którego linkował Travis: „Jeszcze jeden problem z wydajnością, o którym ostatnio słyszałem, to problem, na który kilka osób zgłosiło napotkanie z dodatkiem paska narzędzi Google Toolbar. Z jakiegoś powodu może to czasami powodować duże opóźnienia podczas dołączania grafiki Studio debugger do przeglądarki. Jeśli widzisz duże opóźnienia podczas ładowania aplikacji internetowej i masz zainstalowany pasek narzędzi Google Toolbar (lub inne paski narzędzi), możesz spróbować je odinstalować, aby sprawdzić, czy to jest przyczyną problemu ”.

Cat Zimmermann
źródło
Czy masz zainstalowany pasek narzędzi Google Toolbar? Nawet powiedzenie nie jest pomocne dla przyszłych czytelników tego pytania.
Cat Zimmermann
Otworzyłem IE i nie wyświetla się żaden pasek narzędzi, czy to oznacza, że ​​nie mam zainstalowanego paska narzędzi i nie wpłynie to na program Visual Studio? :-)
George2
2
Łał. Myślałem, że to nie ma sensu, ale ja po prostu odinstalować i moja maszyna powróciła do trybu użytkowej
orellabac
1
Kolejną obwinianą wtyczką jest LastPass. Czy jest to tylko problem z IE, czy może wtyczka w dowolnej przeglądarce ma wpływ na rzeczy?
Denise Skidmore
1
@DeniseSkidmore Jesteś niesamowity, chciałbym móc zagłosować więcej niż raz. Wszystkie te inne rozwiązania i nic nie pomogło ... potem przeczytałem twój komentarz, wyłączyłem dodatek LastPass IE i nagle znowu jest szybko. Potwierdziłem, że to jest problem, włączając ponownie dodatek i spowalniał. DZIĘKUJĘ CI!!!!
Lews Therin
2

Uruchamianie pod debugerem było dla mnie około 10 razy wolniejsze niż uruchamianie bez debugowania.

Po wypróbowaniu każdego sugerowanego tutaj rozwiązania przeszedłem przez wszystkie ustawienia debugera i włączyłem / wyłączyłem, aby sprawdzić, czy to coś zmieni.

U mnie okazało się, że wyłączenie optymalizacji Suppress JIT przy ładowaniu modułu w ustawieniach debugowania znacznie poprawiło sytuację.

Ben Hughes
źródło
1

Upewnij się, że nie masz żadnych przestarzałych mapowań sieciowych na serwery, które już nie istnieją (przekroczenie limitu czasu sieci zabije). Lub użyj czegoś takiego jak Process Monitor, aby sprawdzić, czy sieć (lub inny błąd pliku) wydaje się blokować przez długi czas.

Michael Burr
źródło
Process Monitor to fajne narzędzie! :-) Ale która opcja w Process Monitor może być użyta do sprawdzenia „czy sieć (lub inny błąd pliku) wydaje się blokować przez długi czas”?
George2
Szukałbym takich rzeczy, jak błędy podczas próby otwarcia pliku lub czasu trwania operacji (nie zapomnij, że istnieją elementy danych, których możesz nie widzieć, takie jak `` Czas trwania '', które możesz wybrać w Opcjach / Wybierz kolumny ...) . Korzystaj z filtrów i wyróżnień na swoją korzyść.
Michael Burr
Cześć Michael Burr, w Process Monitor masz na myśli monitorowanie samego procesu VSTS lub monitorowanie wszystkich procesów na maszynie?
George2
Zdecydowanie zacznę od samego VSTS (devenv.exe) lub zostaniesz zalany informacjami, które prawie na pewno nie są przydatne.
Michael Burr
1
Będziesz chciał użyć „Process Monitor”, a nie „Process Explorer”. Zobacz technet.microsoft.com/en-us/sysinternals/bb896645.aspx . Te 2 narzędzia mają różne funkcje. Procmon będzie śledzić operacje na plikach i rejestrze. Procexp to przydatne narzędzie, ale nie zapewnia tego typu śledzenia.
Michael Burr
1

Czy używasz serwera symboli do pobierania symboli dla plików DLL systemu Windows?

Jeśli tak, wyłącz to, ponieważ może to zająć trochę czasu, ale nie spodziewałbym się, że spowoduje to duże opóźnienia w podstawowej aplikacji konsolowej.

Menu NarzędziaOpcjeDebugowanieSymbole .

Michael Prewecki
źródło
Zawartość jest pusta w Narzędzia> Opcje> Debugowanie> Symbole. Jakieś dalsze pomysły?
George2
1

Wiem, że to stary temat, ale na co warto ...

Zauważyłem, że jeśli mam otwarte oddzielne okno przeglądarki Internet Explorer przez długi czas, rozpoczęcie debugowania może zająć nawet minutę. Zamknij wszystkie okna przeglądarki Internet Explorer, a debugowanie rozpocznie się natychmiast.

Robbie
źródło
1

W moim przypadku Google Toolbar spowalniał moje debugowanie.

gplus_notifications_gadget.html po prostu kontynuował i przeciążał debugger. Chciałem zachować Google Toolbar, ponieważ używam go regularnie, więc po prostu wyłączyłem przycisk powiadomień G + (mały przycisk obok przycisku profilu). Teraz jest szczęśliwy.

wcloister
źródło
1

Miałem ten sam problem w Visual Studio 2010, z potwornie powolnym wprowadzaniem kodu (od 3 do 10 sekund). Jednak żadna z powyższych modyfikacji ustawień nie zadziałała.

W końcu znalazłem ostateczne rozwiązanie, które działałoby we wszystkich powyższych problemach z postami: zresetuj wszystkie ustawienia, jak opisano tutaj (zasadniczo menu NarzędziaUstawienia importu i eksportu , Zresetuj wszystkie ustawienia , z zapisaniem istniejących ustawień do pliku (w celu przywrócenia )).

Możesz najpierw zapisać określoną część ustawień. Na przykład najpierw zapisałem motyw kolorów (podobny do solaryzacji), a następnie przywróciłem go po zresetowaniu globalnym.

Spikegee
źródło
1

Dla mnie ustawieniem, które zabiło wydajność (Windows 8 zawiesił się nawet z wyjątkiem ruchu myszy), było odznaczenie „Przerwij wszystkie procesy, gdy jeden proces się zepsuje” w menu OpcjeDebugowanieOgólne .

Niels
źródło
1

Jeszcze tylko jedna przyczyna powolnego debugowania programu Visual Studio ...

Dawno temu mogłem FusionLogzobaczyć, co powoduje problem z wiązaniem zestawu.

Upewnij się, że wyłączyłeś go po użyciu. Czemu? Ponieważ zapisuje wiele danych logowania na dysk, gdy jest włączony.

To jest FusionLogklucz w rejestrze systemu Windows ( regedit.exe):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

Zmień wartości ForceLog, LogImmersivei LogResourseBindingsz 1 (włączone) na 0 (wyłączone).

Leniel Maccaferri
źródło
To właśnie się ze mną działo. Możesz także wyłączyć Fusion Log za pomocą jego gui: hanselman.com/blog/ ...
Denise Skidmore,
Możesz sprawdzić, czy to jest twój problem, po uruchomieniu Process Monitor zobaczysz wszystkie dostępy do pliku Fusion Log.
Denise Skidmore
0

Ja też miałem ten problem, ale w moim przypadku nie miało to nic wspólnego z punktami przerwania. To były skróty do kodu, które dodałem w oknie zadań:

http://www.customsoftwareframeworks.com/blog/longwaittimetoinsertoraddalineoftextbuginvisualstudio--tasklistwindow--onlywhenaddingandremovelines

Jestem pewien, że są inne sposoby, aby zobaczyć taki problem, ale jest gdzieś błąd, który spowodował ten problem ... usunięcie wszystkich moich opcji naprawiłoby to, ale tego nie chciałem zrobić. Więc zdebugowałem to i napisałem o tym na swoim blogu ... Twój problem brzmi jak mój.

shawn
źródło
Link jest uszkodzony: „Zasób, którego szukasz, został usunięty, zmienił jego nazwę lub jest tymczasowo niedostępny”.
Peter Mortensen
0

Coś, co zadziałało, to upewnienie się, że nie ma warunkowych punktów przerwania. Poza tym udało mi się naprawić powolne debugowanie, po prostu ponownie uruchamiając Visual Studio i otwierając tylko jedno wystąpienie Visual Studio na raz.

jjxtra
źródło
0

Miałem podobny problem i żadne inne wskazówki nie pomogły. Zrestartowałem komputer bez skutku. Usunąłem wszystkie punkty przerwania, skasowałem plik .suo, sprawdziłem, czy symbole nie są ładowane ze źródeł zewnętrznych, i sprawdziłem, czy w niedostępnej aplikacji nie ma ścieżek.

Potem pomyślałem, żeby wyczyścić roztwór. Zauważyłem w oknie wyjściowym, że C # IntelliSense zgłosił problem podczas czyszczenia:

Wystąpił problem podczas odczytywania metadanych z „{B0C3592F-F0D1-4B79-BE20-3AD610B07C23}” („System nie może znaleźć określonego pliku.”). Technologia IntelliSense może nie działać poprawnie, dopóki rozwiązanie nie zostanie ponownie załadowane.

W takim przypadku, gdy faktycznie odkryjesz komunikat o błędzie, informuje on dokładnie, jak go rozwiązać. (Dobra robota w przypadku tekstu błędu, słaba praca w wykrywalności!) Zwolniłem projekty rozwiązania, a następnie załadowałem je ponownie. Udało mi się wtedy pomyślnie uruchomić czyste rozwiązanie . Zadziałało, debugger też.

Mike L.
źródło
0

Zamknięcie okna „Autos” poprawiło debugowanie w programie Visual Studio 2008 dla dużego, natywnego rozwiązania C ++.

Ukrywanie tego nie zadziała. To musi być zamknięte.

javs
źródło
0

Doświadczyłem tego samego spowolnienia i odłączenia się od sieci rozwiązało problem, jak stwierdzono w innych komentarzach i odpowiedziach (ale oczywiście nie jest to idealne rozwiązanie).

W moim przypadku ta jedna prosta zmiana naprawiła moje rozwiązanie: We właściwościach projektu na karcie debugowania wyłączyłem opcję „Włącz proces hostingu programu Visual Studio” (używam programu Visual Studio 2010).

połączyć się
źródło
-9

Uzyskaj więcej pamięci i szybszy HD. Więcej szczegółów tutaj .

tsimon
źródło
1
Nie sądzę, żeby to był problem H / W, ponieważ mój sprzęt to pamięć 4G + 2 procesory (2,33G), czy to wystarczy? BTW: nie cierpiałem na to tydzień wcześniej, więc myślę, że powinny to być problemy z konfiguracją?
George2
2
+1 Pomocna rada, nie mogę uwierzyć, że ludzie głosują na to odrzucenie. Chociaż usunięcie pliku .suo pomaga 10 razy więcej.
Andomar,
1
OP nie powiedział nawet, jakie są ich specyfikacje. Gdybyś mi doradzał, radziłbyś mi uzyskać więcej niż 32 Gb Ram i szybciej niż mój już szybki tranzystor.
Valamas,