Projekt programu Visual Studio 2015 nie działa już w trybie debugowania


95

Oto, co otrzymuję nawet po uruchomieniu w konfiguracji debugowania:

Sposób, w jaki to pokazałem, polegał na włączeniu „Tylko mój kod” i ostrzeżeniu, jeśli podczas uruchamiania nie ma żadnego kodu użytkownika. To coś, co ostatnio przydarzyło się naszemu projektowi i nie jestem pewien, co zrobiliśmy, aby to spowodować. Ale nie udało mi się tego naprawić. Punkty przerwania nie odpalają, a szybki zegarek daje dziwne wyniki.

Próbowałem googlować, ale żadne ze standardowych rozwiązań typu „punkty przerwania nie zadziałają” nie zadziałało. Brakuje mi pomysłów.

Sprawdziłem menedżera konfiguracji i każdy projekt jest tam również ustawiony na debugowanie.

Tutaj wprowadź opis obrazu

Wyłączyłem opcję „Włącz optymalizacje” i nie pojawia się już okno dialogowe „debugujesz kompilację wydania”. Znowu działa i zatrzymuje się na punktach przerwania! Jednak okno danych wyjściowych wyświetla to podczas uruchamiania:

Nie załadowano symboli modułu „Navigo.exe”.

  1. Użyj konfiguracji kompilacji do debugowania lub wyłącz opcję debugowania „Włącz tylko mój kod”.
  2. Sprawdź ustawienia „Symbole” w opcjach debugowania.

Więc to rozwiązuje mój główny problem polegający na tym, że nie mogę już używać punktów przerwania i wyskakującego okienka. Co jest dziwne, ponieważ myślałem, że potrzebujesz symboli do załadowania, aby punkty przerwania działały. Jak więc mogą działać punkty przerwania, jeśli symbole nie są załadowane? Może to po prostu zła wiadomość?


Więc, w skrócie, miałeś jakiś problem, o którym nie wiemy. Zmieniłeś globalne ustawienia debuggera i masz teraz dwa problemy. Opisz wszystko tak, jak było i opisz swój pierwszy problem.
Hans Passant

@HansPassant to jest oryginalny problem. Wygląda na to, że zaczęło się to dziać po uaktualnieniu do VS2015. Cofnąłem wszystkie moje zmiany „czy to zadziała” przed opublikowaniem. Wydaje się, że pomogło usunięcie zaznaczenia opcji „Optymalizuj kod”. Więcej informacji można znaleźć w omawianej aktualizacji 2.
Sen

Czy możesz powiedzieć, jakie jest Twoje rozwiązanie? jakie są projekty, w jakich językach są, do czego są skierowane, jaki jest projekt startowy?
Lucian Wischik

Włącz ponownie Tylko mój kod. Próbujesz debugować zestawy, do których istnieją odniesienia, których nie masz kodu źródłowego?
Igor Quirino

Odpowiedzi:


95

Użyj Configuration Manager, aby sprawdzić, jakie są rzeczywiste ustawienia konfiguracji debugowania - jest to w menu BuildConfiguration Manager ... - w przypadku, gdy są ustawione do używania wersji :

Manager konfiguracji

Upewnij się również, że projekt poprawnie definiuje DEBUG i że opcja „Optymalizuj kod” nie jest zaznaczona:

Nieruchomości


2
Właśnie tam sprawdziłem i wszystkie są ustawione na debugowanie. Zaktualizowałem post o zrzut ekranu. Jakieś inne pomysły?
Sen

1
zredagował moje pytanie. Kod optymalizacji został sprawdzony, odznaczenie go chyba pomogło. Ale zobacz pytanie o szczegóły.
Sen

1
@Sen Wygląda na to, że ktoś źle skonfigurował ustawienia kompilacji do debugowania. Kompilacja debugowania ze zoptymalizowanym kodem nie ma żadnego sensu. Jeśli chodzi o problem z symbolami: może ktoś wyłączył te dla kompilacji debugowania? Kliknij przycisk „Zaawansowane” w ustawieniach kompilacji i sprawdź, czy „Informacje o debugowaniu” są ustawione na „pełne” w kompilacji do debugowania.
cremor

6
Odznaczenie kodu Optimize załatwiło sprawę. Nie wiem, jak to się sprawdzało na początku, ale kiedy to było wyłączone, wszystko wydawało się znowu działać. Wszystkie inne ustawienia debugowania były poprawne, to był jedyny błąd. Nie otrzymuję też komunikatu „Symbole nie zostały załadowane”.
Sen

94

Przydarzyło mi się to również w kilku projektach. Sprawdziłem ustawienia kompilacji, zgodnie z sugestią stuartd . Jednak opcja „Optymalizuj kod” nie została włączona w moich ustawieniach kompilacji. Więc włączyłem to i zapisałem projekt. Następnie odznaczyłem to i ponownie zapisałem. Problem rozwiązany.

Jest jakiś błąd, który powoduje, że --optimize+flaga jest przekazywana do debugera. Włączenie go, a następnie wyłączenie jest łatwym obejściem, dopóki błąd nie zostanie naprawiony.


1
Widziałem to wcześniej w IntelliJ IDE, ale nigdy wcześniej w Visual Studio. Co dziwne, to też zadziałało.
ZaneDarken

1
Aktualizacja 2017: nadal widzimy ten problem w Visual Studio 2015 Update 3. Zaakceptowana odpowiedź nie rozwiązała problemu; ta odpowiedź tak.
Lews Therin,

1
Ta odpowiedź również naprawiła moje środowisko debugowania. Dzięki !
bob.mazzo

1
Łał! Miałem dokładnie ten problem i to też zadziałało. VS 2015 U3. Niewiarygodne ...
AbeyMarquez

1
Społeczność VS2017, nadal z tym problemem. dzięki za to rozwiązanie
William Borgo

20

Zaczęło się to dziać po zastosowaniu Aktualizacji 1. Istniejące projekty zaczęły to pokazywać i mogę to powtórzyć za pomocą zupełnie nowego projektu. Cała konfiguracja jest ustawiona na DEBUG, a Optymalizacja nie jest zaznaczona.

Kicker polega na tym, że uruchomienie projektu po raz pierwszy (lub po wyczyszczeniu) działa dobrze, bez żadnego komunikatu. Zatrzymanie, a następnie ponowne uruchomienie projektu (uwaga - projekt nie jest odbudowywany ) spowoduje wyświetlenie okna dialogowego.

Jedynym rozwiązaniem jest wyłączenie opcji Just My Code - co wydaje się hackem, tak jak miało to miejsce w poprzedniej aktualizacji 1 bez żadnych problemów.


6
Mimo wszystko pomoc techniczna firmy Microsoft odtworzyła problem i prowadzi dochodzenie. Jak tylko usłyszę, odpowiem / odpowiem.
John T

2
Ta sama sytuacja i symptomy pojawiły się po aktualizacji VS2015 Update 1. Uruchomienie czyszczenia przed każdą sesją debugowania może być użyte jako obejście, ponieważ za pierwszym razem rzeczywiście działa poprawnie. Sama przebudowa nie wystarczy, wymagane jest czyszczenie.
AronVanAmmers

2
Firma Microsoft informuje, że jest to znany problem (pierwotnie trafił do zespołu ds. Debugera, ale ustalono, że był to problem z kompilacją, a teraz jest w rękach zespołu ds. Systemu projektu. Istnieją inne otwarte błędy w tym problemie, oceniono jako priorytet 1, więc powinno być na dobrej drodze do następnej aktualizacji. Chociaż zgodnie z oczekiwaniami nie można składać żadnych obietnic, kiedy zostanie wydana (ani co faktycznie jest w aktualizacji). Tak więc. Jest znane i jest w trakcie opracowywania Przynajmniej wyłączenie opcji „Włącz tylko mój kod” w opcjach ogólnych debugowania wydaje się być na razie obejściem.
John T

Czy jest link do tego problemu, abyśmy mogli śledzić jego postępy?
SkyrawrCode


13

Jeśli żadne z wymienionych rozwiązań nie pomogło, sprawdź plik AssemblyInfo.cs projektu pod kątem jawnej aplikacji DebuggableAttribute. Wygląda na to, że przesłania opcje debugowania / wydania kompilatora.

Miałem tę linię w pliku w moim przypadku (starszy projekt, nie mam pojęcia, jak się tam dostał). Usunięcie go rozwiązało problem:

[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

2
Dzięki za to. Pracuję nad projektem, w którym mój klient stracił oryginalny kod źródłowy, więc musiałem wygenerować go za pomocą dekompilatora. Domyślam się tylko, że dekompilator umieścił tę linię.
jebar8

Tak, to może być powód również w moim przypadku. Dzięki za udostępnienie.
Dmitry Rotay


9

Napotkałem również ten problem. Rozwiązaniem, które działało, było po prostu wyczyszczenie ( Build > Clean Solution) i odbudowanie ( Build > Rebuild Solution) moich projektów.


Czy możesz rozwinąć? Np. Jak to zrobić (polecenia menu do wywołania itp.)?
Peter Mortensen

5

Żadna z poprzednich odpowiedzi nie działała dla mnie. Ponowne uruchomienie usług IIS rozwiązało problem.


3

Dodam tylko dodatkową notatkę do odpowiedzi Stuartda :

Pamiętaj, aby sprawdzić wszystkie projekty zależne dla tych samych ustawień kompilacji. Ten sam komunikat zostanie wyświetlony, jeśli projekt główny ma odpowiednie ustawienia, ale projekty zależne nie. Z perspektywy czasu ma to oczywiście sens, ale nie była to pierwsza rzecz, jaka przyszła mi do głowy.


3

W moim przypadku problem polegał na tym, że adres URL projektu IIS na karcie sieci Web właściwości projektu ASP.NET został ustawiony na nieprawidłowy adres URL.

Wskazał na http: // localhost, którego używałem z inną kopią projektu. Adres rozwiązania, które otworzyłem, został faktycznie skonfigurowany w moich lokalnych usługach IIS jako http: // localhost: 90 .

Zmiana na właściwy adres rozwiązała problem.

Tutaj wprowadź opis obrazu


2

Wypróbowałem prawie wszystko z tej listy, ale w końcu naprawiłem to, otwierając właściwości rozwiązania i przełączając się z „Wiele projektów startowych” na „Pojedynczy projekt startowy” iz powrotem.

  1. Kliknij rozwiązanie prawym przyciskiem myszy i wybierz „Właściwości”
  2. W sekcji „Wspólne właściwości” zmień wybór „Wiele projektów startowych” na „Pojedynczy projekt startowy”
  3. Kliknij OK
  4. Uruchom debugowanie
  5. Zakończ debugowanie i powtórz kroki 1–3, ale przełącz się z powrotem na „Wiele projektów startowych”
  6. Uruchom ponownie debugowanie z wieloma projektami

2

Miałem ten sam problem ... Nieważne co zrobiłem - nic nie działało.

Problemem był nowy, pusty projekt. Skończyło się na usunięciu projektu i dodaniu nowego projektu - nowy projekt musiał mieć inną nazwę ; jeśli użyłem tej samej nazwy, błąd po prostu pojawił się ponownie - nawet po ponownym uruchomieniu, wyczyszczeniu i odbudowaniu ... To musi być błąd w Visual Studio 2015.


2

Dla mnie była to referencja NuGet z prywatnego serwera NuGet. Nie wiem, jak to zostało skompilowane, ale zmiana odniesienia do referencji projektu pomogła mi rozwiązać problem.


1

Otworzyłem projekt Visual Studio 2012 Pro w Visual Studio 2015 Express i miałem ten sam problem.

Sprawdziłem właściwości mojego rozwiązania → Właściwości konfiguracyjne i odkryłem, że projekt został ustawiony na Release & x86.

Zmieniłem go z powrotem na debugowanie i dowolny procesor , a monit zniknął.


1

W moim przypadku opracowywałem wtyczkę VSTO dla Outlooka i Outlook przypadkowo ładował wersję Release pliku DLL, który niedawno zainstalowałem podczas testowania mojego instalatora.

Wygląda na to, że program Visual Studio próbował użyć tej biblioteki DLL zamiast tej, której oczekiwałem debugowania. Naprawienie tego, który plik DLL jest ładowany przez Outlooka, rozwiązało ten problem.


0

Kopiowanie mojej drugiej odpowiedzi stąd .

Jak wspomniał @romanoza, Microsoft zaktualizował raport o błędzie o następujące informacje:

Odznacz ustawienie Debuguj -> Opcje -> Wstrzymaj optymalizację JIT przy ładowaniu modułu (tylko zarządzane)

To jest obejście. Później mówią:

Zalecamy pozostawienie go niezaznaczonego, ponieważ odznaczenie go poprawi zarówno wydajność, jak i zachowanie tylko mojego kodu w określonych scenariuszach.

Na koniec podziękowanie:

Jest to błąd polegający na tym, że nie działa przy włączonym tym ustawieniu i pracujemy nad rozwiązaniem tej sytuacji, na wypadek gdyby niektórzy klienci nadal chcieli debugować przy włączonym tym ustawieniu.




0

Kroki rozwiązania:

  • Przejdź do ustawień kompilacji właściwości projektu powodującego naruszenie stronie .

  • Przewiń w prawo do „Zaawansowane ...” .

  • Upewnij się, że „Informacje debugowania:” nie jest  ustawione na „brak” .

    Zalecam skorzystanie z pełnej opcji.


Pamiętaj, aby zrobić to dla wszystkich zestawów, które chcesz debugować.
Igor Quirino

0

Po wyświetleniu linku Patryka jako komentarza do pytania , ktoś zauważył obejście polegające na zatrzymaniu witryny w IIS Express . Udało mi się zapobiec temu samemu problemowi, robiąc to po zatrzymaniu debugera w programie Visual Studio.

Jednak przyglądałem się temu bardziej i uważam, że może to być również związane z ustawieniem „Edytuj i kontynuuj” dla debugera. Kiedy wyłączyłem to w menu NarzędziaOpcje ... programu Visual Studio, nie miałem już problemu. Ale wtedy uniemożliwiłoby ci to korzystanie z opcji Edytuj i kontynuuj , więc nie jestem pewien, czy to jest tego warte.

Menu NarzędziaOpcjeDebugerEdytuj i kontynuuj (przewiń do dołu listy Ogólne) → usuń zaznaczenie opcji Edytuj i kontynuuj .

Doświadczyłem tego również nagle po zainstalowaniu aktualizacji 1, ale mogło tak być, że od razu miałem to ustawienie ... Nie jestem jednak pewien.


0

W przypadku, gdy chcesz kontynuować bez dalszych opóźnień, wybierz ostatnią opcję z wyskakującego okienka i wszystko będzie działać tak samo jak poprzednio.

Tutaj wprowadź opis obrazu


Obrazy JPEG nie są najlepszym wyborem do zrzutów ekranu. Czy możesz go zastąpić (ostrą) wersją PNG (lub nawet GIF)?
Peter Mortensen

0

To był dziwny alert.

Odbudowanie rozwiązania niekoniecznie spowoduje wyczyszczenie wszystkich plików DLL (zwłaszcza skopiowanych z projektów zależnych).

Jednak odbudowanie projektu zależności spowodowało, że ten alert zniknął.

Zmierzyłem się z tym w Visual Studio 2015 Update 3.


0

Moje rozwiązanie różniło się nieco od wszystkich innych i jest nieco wyjątkowe.

Pracuję z witryną, która zawiera mieszankę kodu zarządzanego i klasycznego ASP , odwołując się do tego samego zestawu. Program Visual Studio skarżył się, że zarządzany plik DLL jest kompilacją wydania.

Problem był nieprzechwyconym wyjątkiem w moim zestawie, ale został wyrzucony przez stronę ASP Classic przez interop. Program Visual Studio nie był w stanie obsłużyć debugowania tego i wyświetlił komunikat o błędzie. Ten sam wyjątek zgłoszony z kodu zarządzanego spowodowałby uruchomienie debugera zgodnie z oczekiwaniami.

Naprawienie problemu w konstruktorze mojego zestawu zarządzanego naprawiło wszystko.

Teraz, kiedy spoglądam wstecz na szerszą perspektywę, wszystko ma sens, ale wtedy komunikat o błędzie poprowadził mnie bardzo głęboką ścieżką i próbowałem wszystkiego w odpowiedzi, dopóki nie otrzymałem odpowiedzi „Ah-ha!”. za chwilę.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.