Próbuję rozwalić JUnita. W kodzie źródłowym ustawiłem punkt przerwania w dwóch miejscach: 1) w wierszu, w którym inicjowany jest element statyczny, 2) w pierwszym wierszu jednego z przypadków testowych.
Debuger zatrzymuje się w wierszu inicjalizacji pola statycznego. Ale to nie koniec w przypadku testowym. Bez względu na to, gdzie ustawię punkt przerwania w przypadku testowym, debugger nie poprzestanie na tym. Wiem na pewno, że przypadek testowy jest wykonywany, ponieważ widzę, że dodane przeze mnie komunikaty dziennika pojawiają się w dzienniku.
Każda pomoc byłaby bardzo mile widziana.
Używam programu uruchamiającego Eclipse Galileo i JUnit4.
Odpowiedzi:
Może to być związane z jednym z błędów w JDK 6 Update 14, jak wskazano w informacjach o wydaniu dla JDK 6 Update 15 .
Jeśli rzeczywiście okaże się, że jest to problem, należy przejść na wyższą wersję JDK (nie jest to jednak żadna gwarancja, ponieważ zostały wydane poprawki dla 6u16, 6u18 i 7b1 ). Najlepszym rozwiązaniem jest użycie flagi -XX: + UseParallelGC. Zwiększenie rozmiaru minimalnego i maksymalnego rozmiaru sterty, aby opóźnić pierwszy GC, przyniesie chwilową ulgę.
Nawiasem mówiąc, użyj tego raportu o błędzie w Eclipse, aby śledzić, jak radzą sobie inni.
źródło
Naprawienie może być tak proste, jak kliknięcie przycisku Uruchom / pomiń wszystkie punkty przerwania. Pracował dla mnie.
źródło
Upewnij się, że w obszarze Uruchom> Konfiguracje debugowania wybrano opcję „Zatrzymaj w głównym”, jeśli ma to zastosowanie w danej sytuacji.
źródło
Zwykle, gdy mi się to zdarza (rzadko, ale tak jest) oznacza, że wykonywany kod jest inny niż kod w edytorze. Od czasu do czasu Eclipse może się zdarzyć, że zbudowane klasy i kod w edytorze nie będą zsynchronizowane. Kiedy tak się dzieje, otrzymuję dziwne zachowanie debugera (debugowanie pustych linii, pomijanie linii kodów itp.).
Ponowne uruchomienie Eclipse, wyczyszczenie wszystkich projektów i odbudowanie wszystkiego zwykle rozwiązuje problem. Miałem też wtyczki do Mavena (starsze wersje ... od jakiegoś czasu ich nie miałem), które też to robią.
W przeciwnym razie może to być błąd, może ten, który stwierdził Vineet,
Mam nadzieję że to pomoże
źródło
Mogłeś przypadkowo pominąć wszystkie punkty przerwania na pasku narzędzi Eclipse. Aby to naprawić, przejdź do Eclipse -> Run -> Skip All Breakpoints.
źródło
Projekt -> Clean wydawał się działać dla mnie w JRE 8
źródło
W celu debugowania pracy ze zdalnym, pliki java .class muszą być zgodne z informacjami debugującymi. Jeśli opcja „ -g: none ” została przekazana do kompilatora, plik klasy nie będzie zawierał niezbędnych informacji i dlatego debugger nie będzie w stanie dopasować punktów przerwania w kodzie źródłowym do tej klasy w trybie zdalnym. W międzyczasie, jeśli pliki jars / class zostały zaciemnione , wówczas również nie będą zawierały żadnych informacji debugowania. Zgodnie z Twoimi odpowiedziami najprawdopodobniej nie jest to Twój przypadek, ale te informacje mogą być przydatne dla innych osób, które mają ten sam problem.
źródło
W moim przypadku problem polegał na tym, że nie miałem otwartego widoku debugowania w perspektywie debugowania, więc:
1 - Upewnij się, że masz otwartą perspektywę debugowania:
2 - Upewnij się, że masz otwarty widok debugowania:
źródło
Usuń wszystkie punkty przerwania i dodaj je ponownie.
źródło
W przypadku JDK7, uruchom-> Debug Configurations, zaznacz „Keep JUnit running after a test run when debugging”.
źródło
Zdarzyło mi się to raz, kiedy odznaczyłem opcję „Uruchom> Buduj automatycznie” i zapomniałem ponownie to sprawdzić.
źródło
Upewnij się, że deklarujesz pakiet u góry. W moim świetnym kodzie kończy się to na punktach przerwania:
To nie kończy się na punktach przerwania:
źródło
Aby usunąć punkty przerwania :
źródło
Sprawdź również, czy punkty przerwania w innych liniach DZIAŁAJĄ, może to być błąd w debugerze. Miałem problem z debugerem Eclipse polegający na tym, że umieszczenie punktu przerwania w przypisaniu logicznym, którego kod znajdował się w następnej linii, nie działało. Zgłosiłem to tutaj , ale umieszczenie go w poprzedniej lub następnej linii tak.
źródło
Jeśli nic nie działa
źródło
Innym możliwym problemem jest to, że port debugera może być blokowany przez zaporę. Na przykład używałem mule anypoint studio (wersja 5.4.3). Domyślnym portem debuggera jest 6666. Przepływ jest wykonywany, ale nie zatrzyma się w punkcie przerwania. kiedy zmieniłem port na inny (np. 8099) to działało dobrze.
źródło
Przejdź do
Right click->Debug Configuration
i sprawdź, czy utworzono zbyt wiele instancji debugowania. Mój problem został rozwiązany, gdy usunąłem wiele wystąpień debugowania z konfiguracji i świeżo rozpoczęto debugowanie.źródło
Jeśli korzystasz z Eclipse,
Kliknij prawym przyciskiem myszy folder projektu w obszarze „Eksplorator pakietów”.
Idź do źródła -> Oczyść i wybierz swój projekt.
Spowoduje to uporządkowanie bałaganu, a punkt przerwania powinien teraz działać.
źródło
Stworzenie nowego obszaru roboczego zadziałało dla mnie.
źródło
W moim przypadku miałem wiele projektów w tym samym obszarze roboczym. Plik java, który próbowałem debugować, był obecny w więcej niż jednym projekcie z tym samym pakietem.
Nie potrzebowałem drugiego projektu, więc po prostu zamknąłem niepowiązane projekty (lub usuń plik z niepowiązanego projektu).
źródło
Dodatkowy komentarz dotyczący odpowiedzi Vineet Reynolds.
I okazało się, że muszę ustawić
-XX:+UseParallelGC
weclipse.ini
Konfiguruję argumenty maszyny wirtualnej (vm) w następujący sposób
to rozwiązało problem.
źródło
To działa dla mnie:
Musiałem umieścić mój adres lokalnego serwera w konfiguracji serwera PHP w następujący sposób:
Uwaga : ten adres jest tym, który konfiguruję w moim pliku .conf Apache .
Uwaga : jedynym działającym punktem przerwania był „Przerwa w pierwszym wierszu”, po czym punkty przerwania nie działały.
Uwaga : sprawdź właściwości xdebug w pliku php.ini i usuń wszystkie, które Twoim zdaniem nie są wymagane.
źródło