Eclipse - отладчик не останавливается на точке останова


97

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

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

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

Я использую программу запуска Eclipse Galileo и JUnit4.


1
Скомпилирован ли ваш код с включенной опцией -g для создания отладочной информации в файле .class? Конечно, это необходимо.
duffymo

Да, он скомпилирован с опцией -g.
Рой

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

Кстати, используемый JDK более важен (есть несколько испорченных JDK, которые могут вызвать это). Не обращайте внимания на запрос версии JUnit.
Vineet Reynolds,

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

Ответы:


39

Это может быть связано с одной из ошибок в JDK 6 Update 14, как указано в примечаниях к выпуску JDK 6 update 15 .

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

Кстати, используйте этот отчет об ошибке в Eclipse, чтобы отслеживать, как обстоят дела у других.


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

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

Спасибо @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
Спасибо. @Answerer, ваш ответ решил мою проблему. Странно, что "Остановить в основном" не было.
Юй Шен

25
Похоже, что его ответ действительно внес что-то существенное, о чем еще не было
сказано

Обратите внимание: это вариант для приложений Java, но не для приложений Android.
Noumenon

21

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

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

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

Надеюсь это поможет


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

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

Спасибо, это была проблема в моем случае. Звучит глупо, но простая чистка и F5 после сборки сделали свое дело.
jfajunior

20

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


1
Аргх, для этого тоже есть ярлык, я, скорее всего, случайно не проверил пункт меню, но, скорее всего, я нажал Ctrl + Alt + B. В любом случае спасибо.
Патру


2

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


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. Отлаживайте свой класс как тест junit
  2. Когда ваш отладчик остановится, щелкните вкладку «точки останова» рядом с «переменными» и «выражениями».
  3. В правом верхнем углу вкладки точки останова нажмите кнопку с двумя крестиками.
  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

Еще один комментарий относительно ответа Винита Рейнольдса.

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

Я настраиваю аргументы виртуальной машины (vm) следующим образом

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

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


-2

Вот что у меня работает:

Мне пришлось указать адрес моего локального сервера в конфигурации PHP-сервера следующим образом:

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

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

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

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


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