Eclipse - налагоджувач не зупиняється на точці розриву


96

Я намагаюся неприємно знімати JUnit. У вихідному коді я встановив точку розриву у двох місцях: 1) у рядку, де статичний член ініціалізується 2) перший рядок одного з тестових випадків.

Відладчик зупиняється в лінії ініціалізації статичного поля. Але це не зупиняється в тестовому випадку. Незалежно від того, де я встановив точку розриву в тестовому випадку, налагоджувач на цьому не зупиняється. Я точно знаю, що тестовий випадок виконаний, оскільки я можу побачити, що додані в журнал повідомлення журналу відображаються.

Будь-яка допомога буде вдячна.

Я використовую Eclipse Galileo та панель запуску JUnit4.


1
Чи ваш код, скомпільований з опцією -g, увімкнено для генерації інформації про налагодження у файлі .class? Це, звичайно, потрібно.
duffymo

Так, він компілюється з опцією -g.
Рой

Чи можете ви також додати інформацію про те, яку версію JUnit та JRE ви використовуєте? Я вважаю, що це корисно в цьому контексті.
Vineet Reynolds

JDK, що використовується, до речі, є більш важливим (є деякі переплутані JDK, які можуть спричинити це). Будь ласка, ігноруйте запит на версію JUnit.
Vineet Reynolds

Вибачте, я мав це включити. Оновлення JDK 1.6 14.
Рой

Відповіді:


39

Це може бути пов'язано з однією з вад у JDK 6, оновлення 14, як зазначено у примітках до випуску для JDK 6, оновлення 15 .

Якщо це справді виявляється проблемою, вам слід перейти до вищої версії JDK (однак це жодна гарантія, оскільки виправлені виправлення проти 6u16, 6u18 та 7b1 ). Найкраще поставити прапорець -XX: + UseParallelGC. Збільшення розміру мінімального та максимального розміру купи, щоб затримати перший GC, приносить тимчасове полегшення.

До речі, використовуйте цей звіт про помилки в Eclipse, щоб відстежувати, як вдаються інші.


1
Я перейшов на JDK 1.6 оновлення 16. Тепер він зупиняється на всіх встановлених мною точках розриву. Велике спасибі за вашу допомогу.
Рой

Ласкаво просимо. u16 здається випуском, де це було виправлено в достатній мірі, незважаючи на примітки до випуску u15.
Vineet Reynolds

Дякую @Vineet - я витягнув волосся над цим :-)
Джим Гаррісон

@VineetReynolds: Я бачив, як ваші цінні відповіді стосуються Jboss та Java ee 6. Чи можете ви допомогти мені вирішити цю проблему? stackoverflow.com/questions/28954323/…
штурм мозку

96

Виправити може бути настільки ж просто, як натиснути запустити / пропустити всі точки прориву. Працював у мене.


3
мені знадобилося три дні, щоб помітити, що я якось натиснув це
Генрі

1
Дякую ... напевно якось випадково натиснули на значок панелі інструментів :-P
kenyee

4
Дякую ... не знаю, коли це було натиснуто
njfife

1
Дуже дякую. Для інших користувачів у цій ситуації, якщо ви встановите точку зупинки, вона буде виглядати похилою.
saurabheights

Те саме сталося і зі мною. Я ніколи його не клацав ... !! Версія: Mars Release (4.5.0) Додавання ID: 20150621-1200
Beezer

52

Переконайтеся, що у меню Виконати> Налагодження конфігурацій вибрано «Зупинити в основному», якщо це стосується вашої ситуації.


1
Будь ласка, обов'язково прочитайте попередні відповіді перед публікацією. Проблема полягала в їх jvm-версії .. і була вирішена три роки тому. Краще не відроджувати старі теми, якщо ваша відповідь не сприяє чомусь вагомому, що не було висвітлено в попередніх відповідях.
Лі

6
Дякую. @ Відповідач, ваша відповідь вирішила мою проблему. Дивно, що "Зупинка в основному" була невдалою.
Ю. Шень

25
Схоже, що його відповідь справді сприяла чомусь
вагомому,

Зауважте, це варіант для програм Java, але не для додатків Android.
Номенон

21

Зазвичай, коли це трапляється зі мною (рідко, але це трапляється) означає, що виконуваний код відрізняється від коду в редакторі. Час від Eclipse час від часу траплятиметься, що вбудовані класи та код у редакторі не синхронізовані. Коли це трапляється, я отримую всілякі дивні налагоджувальні дії (налагодження порожніх рядків, пропуск рядків кодів тощо).

Перезапуск Eclipse, очищення всіх проектів і відновлення всього, як правило, прояснює ситуацію. У мене були також плагіни Maven (старіші версії ... не мали його деякий час зараз), які також мали тенденцію до цього.

В іншому випадку це може бути помилка, можливо, та, яку зазначив Vineet,

Сподіваюся, це допомагає


Так, те, що ви заявили, трапляється більше в IDE, які автоматично не перекомпілюють код. Oracle JDeveloper (з особистого досвіду) і в меншій мірі (Netbeans) були визнані небажаними.
Vineet Reynolds

1
Хороша порада. Не сказано досить. Іноді ми переосмислюємо проблему, і це просто система не синхронізована. Такі як перезавантаження комп'ютера для неполадок зйомки простих проблем.
Xonatron

Дякую, це була проблема в моєму випадку. Це звучить по-дурному, але простий чистий і F5 після збірки зробив свою справу.
jfajunior

20

Можливо, ви випадково пропустили всі точки розриву на панелі інструментів Eclipse. Щоб виправити це, перейдіть до Eclipse -> Run -> Пропустити всі точки зупинки.


1
Arggh, для цього теж є ярлик, я, швидше за все, випадково не перевірив пункт меню, але, швидше за все, натиснув Ctrl + Alt + B. Все одно дякую.
Патру

3

Проект -> Чистий, здавалося, працює для мене на JRE 8


2

Для того, щоб налагоджувач працював з віддаленим, файли java .class повинні бути дотримані разом з інформацією про налагодження. Якщо опцію " -g: none " було передано компілятору, тоді файл класу не матиме необхідної інформації, а отже, налагоджувач не зможе зрівняти точки зупинки у вихідному коді з цим класом у віддаленому. Тим часом, якщо jar / файли класу були прихованими , вони також не матимуть ніякої інформації про налагодження. Відповідно до ваших відповідей, швидше за все, це не ваш випадок, але ця інформація може бути корисною для інших, хто стикається з тією ж проблемою.


2

У моєму випадку проблема полягала в тому, що я не відкривав подання налагодження в перспективі налагодження, тому:

1 - Обов’язково відкрийте перспективу налагодження:

налагоджувач eclipse не працює 1

2 - Переконайтеся, що у вас відкрито режим налагодження:

налагоджувач eclipse не працює 2



1

Для JDK7 запустіть-> Конфігурації налагодження, встановіть прапорець «Зберігати JUnit після тестового запуску під час налагодження».


1

Сталося зі мною одного разу, коли я зняв прапорець "Запустити> Створити автоматично" і забув повторно перевірити його.


1

Обов’язково задекларуйте пакунок у верхній частині. У моєму груві коді це зупиняється на точках зупинки:

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

Це не зупиняється на точках зупинки:

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

Після багатьох зусиль це вирішує мою проблему. Дякуємо +1
Федеріко П'яцца

0

Щоб видалити точки зупинку :

  1. Налагодьте свій клас як тест на успішність
  2. Коли ваш налагоджувач зупиняється, натисніть на вкладку "точки прориву" поруч із "змінними" та "виразами"
  3. Угорі праворуч на вкладці точки зупинку натисніть кнопку з двома «X»
  4. Зупиніть тест, замініть точку зупинки та запустіть налагоджувач знову

0

Також перевірте, чи працюють точки зупинки на інших рядках, це може бути помилка у відладчику. У мене була проблема з налагоджувачем Eclipse, коли введення точки зупинки в логічне призначення, код якого знаходився в наступному рядку, не спрацювало, я повідомив про це тут , але помістив у попередній чи наступний рядок.


0

Якщо нічого не працює -

  1. Видаліть цю конфігурацію віддаленої / локальної налагодження та створіть нову.
  2. Додайте джерело в налаштуваннях налагодження.

0

Інша можлива проблема полягає в тому, що порт налагодження може бути заблокований брандмауером. Наприклад, я використовував mule anypoint studio (v 5.4.3). Порт налагоджувача за замовчуванням - 6666. Коли потік виконується, він не зупиняється на точці зупинки. коли я змінив порт на інший (наприклад, 8099), він працював нормально.


0

Перейдіть Right click->Debug Configurationі перевірте, чи не створено забагато екземплярів налагодження. Мою проблему було вирішено, коли я видалив декілька екземплярів налагодження з конфігурації та щойно розпочав налагодження.


0

Якщо ви на Eclipse,

Клацніть правою кнопкою миші на папці проекту в розділі "Провідник пакетів".

Перейти до джерела -> Очистити та вибрати свій проект.

Це очистить будь-який безлад, і ваша точка зупинки повинна запрацювати зараз.



0

У моєму випадку у мене було кілька проектів в одній робочій області. Файл java, який я намагався налагодити, був присутній у більше ніж одному проекті з тим же пакетом.

Мені не потрібен був інший проект, тому просто закрив не пов’язані проекти (або видаліть файл із не пов’язаного проекту).


0

Ще один коментар щодо відповіді Vineet Reynolds.

Я дізнався, що я повинен був встановити -XX:+UseParallelGCвeclipse.ini

Я налаштовую аргументи віртуальної машини (vm) наступним чином

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

що вирішило проблему.


-2

Ось що для мене працює:

Мені довелося вказати адресу локального сервера в конфігурації сервера PHP так:

введіть тут опис зображення

Примітка : ця адреса - це та, яку я налаштовую у своєму файлі .conf Apache .

Примітка : єдиною точкою зупинки, яка працювала, була "Перерва на першому рядку", після цього точки зупинки не працювали.

Примітка : перевірте свої властивості xdebug у вашому файлі php.ini та видаліть усі, які, на вашу думку, не потрібні.


1
Я не бачу, як це відповідає на питання (про налагодження JUnit та Java)
Newtopian
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.