2009-09-03 14 views
73

Я пытаюсь решить проблему JUnit. В исходном коде я установил точку останова в двух местах: 1) в строке, где статический член инициализирован; 2) первая строка одного из тестовых случаев.Eclipse - отладчик не останавливается в точке останова

Отладчик останавливается в строке инициализации статического поля. Но в тестовом случае это не останавливается. Независимо от того, где я устанавливаю точку прерывания в тестовом примере, отладчик не останавливается на этом. Я точно знаю, что тестовый пример выполнен, так как я вижу, что сообщения журнала, которые я добавил, появляются в журнале.

Любая помощь будет принята с благодарностью.

Я использую Eclipse Galileo и JUnit4 Launcher.

+0

Можете ли вы также добавить информацию о том, какую версию JUnit и JRE вы используете? Я считаю, что это полезно в этом контексте. –

+0

Используемый JDK более важен (кстати, некоторые JDK-вызовы могут вызвать это). Пожалуйста, проигнорируйте запрос в версии JUnit. –

+0

Извините, что я должен был включить это. Обновление JDK 1.6 14. – Roy

ответ

37

Это может быть связано с одной из ошибок в JDK 6 Update 14, as indicated in the release notes for JDK 6 update 15.

Если это действительно проблема, вы должны перейти к более высокой версии JDK (это не гарантия, хотя, с fixes have been released against 6u16, 6u18 and 7b1). Лучше всего использовать флаг -XX: + UseParallelGC. Увеличение размера минимального и максимального размера кучи, чтобы задержать первый GC, принести временный рельеф.

К слову, используйте this bug report in Eclipse, чтобы отслеживать, как работают другие.

+1

Я обновился до обновления JDK 1.6 16. Теперь он останавливается на всех пунктах разрыва, которые я установил. Большое спасибо за вашу помощь. – Roy

+0

Добро пожаловать.u16, похоже, является выпуском, где это было исправлено в достаточной степени, несмотря на примечания к выпуску u15. –

+0

Спасибо @Vineet - я вытягивал свои волосы за этот :-) –

18

Обычно, когда это происходит со мной (редко, но это так), означает, что исполняемый код отличается от кода в редакторе. Время от времени Eclipse будет происходить из-за синхронизации построенных классов и кода в редакторе. Когда это происходит, я получаю все виды странного поведения отладчика (отладка пустых строк, пропуская строки кодов и т. Д.).

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

В противном случае это может быть ошибкой, может быть, один Vineet заявил,

Надеется, что это помогает

+0

Да, вы сказали, что больше в IDE, которые автоматически не перекомпилируют код. Oracle JDeveloper (из личного опыта) и в меньшей степени (Netbeans) были найдены желающими. –

+1

Хороший совет. Не сказано достаточно. Иногда мы задумываемся над проблемой, и это просто система из синхронизации. Например, при перезагрузке компьютера для устранения простых проблем. – Xonatron

72

Fix может быть простым нажатием запустить/пропустить все контрольные точки. Работал для меня.

+1

Мне потребовалось три дня, чтобы заметить, что я как-то нажал на это – henry

+1

Спасибо ... Должен был щелкнуть значок этой панели инструментов случайно: -P – kenyee

+1

это сэкономило мое время, спасибо – umesh

50

Убедитесь, что в разделе «Выполнить»> «Конфигурации отладки» выбрано «Стоп в главном», если применимо к вашей ситуации.

+1

Перед публикацией обязательно прочтите предыдущие ответы. Проблема была в их версии jvm .. и была решена три года назад. Лучше не оживлять старые темы, если ваш ответ не вносит существенный вклад, который еще не был рассмотрен в предыдущих ответах. – Leigh

+5

Спасибо. @ Ответ на ваш ответ решил мою проблему. Странно, что «Остановить в главном» не удалось. –

+21

Похоже, что его ответ внес что-то существенное, чего еще не было в предыдущих ответах :) – scubbo

1

Для JDK7, run-> Debug Configurations, установите флажок «Сохранять 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 
... 
+0

После многого, это решит мою проблему. Спасибо +1 –

0

To remove the breakpoints:

  1. Debug свой класс как тест JUnit
  2. Когда ваш отладчик останавливается, перейдите на вкладку «точки останова» рядом с «переменными» и «выражениями»
  3. В правом верхнем углу вкладки точки останова, нажмите на кнопку с
  4. Stop два «X» тест, замените контрольную точку и снова запустить отладчик
+0

Отладчик не останавливается в точке останова. – user2120239

0

Один дополнительный комментарий относительно Vineet Reynolds ответа.

я узнал, что я должен был установить -XX: + UseParallelGC в eclipse.ini

установки I аргументы ут, как следовать

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

, что решить эту проблему.

0

Если ничего работы-

  1. Удалить этот Remote/Конфигурация локальной отладки, и создать новый.
  2. Добавить источник в конфигурациях отладки.
-2

Это то, что работает для меня:

я должен был поставить свой локальный адрес сервера в конфигурации PHP сервер так:

enter image description here

Примечание: этот адрес , это тот, который я настраиваю в своем файле Apache .conf.

Примечание: единственная точка останова, которая работала, была «Перерыв на первой линии», после чего точки останова не работали.

Примечание: проверьте Xdebug свойства в вашем php.ini файл и удалите все вы думаете, не требуется.

+1

Я не вижу, как это отвечает на вопрос (об отладке JUnit и Java) – Newtopian

3

Project -> Clean, казалось, работал для меня на на JRE 8

0

Также проверьте, если контрольные точки на других линиях работают, это может быть ошибка в отладчике. У меня возникла проблема с отладчиком Eclipse, где установка точки останова на логическое задание, код которого находился на следующей строке, не работал I reported this here, но это было сделано на предыдущей или следующей строке.

0

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

0

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

0

Если вы на Eclipse,

правой кнопкой мыши на папку проекта в разделе "Package Explorer".

Перейти к источнику -> Очистить и выбрать проект.

Это очистит любой беспорядок, и ваша точка останова должна работать.

1

Для того чтобы отладчик работал с удаленным, файлы java .class должны выполняться вместе с информацией об отладке. Если в компилятор был передан параметр «», то файл класса не будет иметь необходимой информации, и, следовательно, отладчик не сможет сопоставить точки останова исходного кода с этим классом на удаленном компьютере. Между тем, если файлы jars/class были obfuscated, тогда у них также не будет информации об отладке. Согласно вашим ответам, скорее всего, это не ваше дело, но эта информация может быть полезна для других, которые сталкиваются с одной и той же проблемой.

0

Создание нового рабочего пространства для меня.

10

Возможно, вы случайно пропустили все точки останова на панели инструментов Eclipse. Чтобы исправить это, перейдите в Eclipse -> Run -> Пропустить все точки останова.

0

В моем случае у меня было несколько проектов в одном рабочем пространстве. Файл java, который я пытался отлаживать, присутствовал в нескольких проектах с одним и тем же пакетом.

Мне не нужен другой проект, поэтому просто закрытые несвязанные проекты (или удалить файл из несвязанного проекта).

1

В моем случае проблема заключалась в том, что я отладки не смотреть открыто в Debug точки зрения, так:

1 - Убедитесь, что у вас есть отладки перспектива открытия:

eclipse debugger not working 1

2 - Be что у вас есть вид отладки открыт:

eclipse debugger not working 2

0

Удалить все точки останова и повторно добавить их.

Смежные вопросы