Как исправить ошибку контрольной точки при отладке в Eclipse?
Необходимо отладить JAR файл "ProA", поэтому импортируйте исходный код в проект,
но в Eclipse есть странная ошибка при попытке установить точку останова.
Подробнее, как показано ниже:
Unable to install breakpoint due to missing line number attributes.
Modify compiler options to generate line number attributes.
Я попытался решить несколько методов, но не смог.
- В окне > Предпочтения: Java > Компилятоp > Генерация файлов классов, все параметры должны быть в True
- В папке
.settings
вашего проекта найдите файл с именем org.eclipse.jdt.core.prefs
. Проверьте или установите org.eclipse.jdt.core.compiler.debug.lineNumber=generate
- Добавьте флаг
debug=true
в build.xml
, как показано ниже: <javac srcdir="./src/java" destdir="./bin" debug="true">
Любая помощь будет оценена.
Ответы
Ответ 1
У меня была такая же проблема, но чтение вашего сообщения помогло мне решить мою проблему. Я изменил org.eclipse.jdt.core.prefs
следующим образом:
ДО:
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7
ПОСЛЕ:
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7
Другой способ изменить эти параметры в проекте > Свойствa > Компилятор Java. Таким образом, нет необходимости вручную изменять файл org.eclipse.jdt.core.prefs
. Там вы должны убедиться, что опции Classfile Generation отмечены.
Ответ 2
В JAR атрибуты номера строки отсутствуют в скомпилированном байт-коде. С добавленным исходным кодом Eclipse знает номера строк, , но не Java VM, который выполняет байт-код и не видит исходный код.
Было бы бесполезно, если Eclipse сказал, что виртуальная машина Java остановится на определенной строке, потому что Java VM не знает, какая команда находится в этой строке, и поэтому, когда нужно остановиться.
Единственным решением является воссоздать JAR или, по крайней мере, байт-код (.class
файлы) с информацией о строке класса (ов), в который вы хотите установить точка останова.