Как установить точку останова на Java-конструкторе по умолчанию в Eclipse?
В Eclipse я хотел бы установить точку останова на Java конструктор по умолчанию. Я не могу просто дважды щелкнуть слева от любой строки кода, поскольку конструкторы по умолчанию не имеют исходного кода - они неявно генерируются компилятором Java.
Я бы хотел установить такую точку останова без изменения существующего кода.
Ответы
Ответ 1
Если код, в который вы хотите установить точку останова, находится на пути сборки, а не в самом проекте, тогда, если вы откроете представление Outline, вы увидите, что там есть конструктор по умолчанию, и вы можете щелкните его правой кнопкой мыши и выберите пункт "Переключить метод".
Обратите внимание, что иногда конструктор по умолчанию фильтруется из представления Outline. В этом случае его можно включить, изменив настройки фильтра. Это делается, перейдя в меню Outline view → Фильтры... → и uncheding Synthetic members.
Это в Eclipse Indigo, я не знаю, как долго эта функция была вокруг.
Ответ 2
Если вам это действительно нужно, установите контрольную точку метода в одном из других методов класса, выберите точку останова (Breakpoints view) и экспортируйте ее. Отредактируйте этот файл, чтобы точка останова указывала на стандартный конструктор. По крайней мере, следующее изменение должно быть изменено (Galileo):
- org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID
- org.eclipse.jdt.debug.core.methodName -
value="<init>"
- org.eclipse.jdt.debug.core.methodSignature -
value="()V"
- сообщение - нет идеи, если это действительно необходимо
вероятно, проще также экспортировать точку останова конструктора из другого класса, чтобы увидеть правильные значения. Теперь импортируйте измененный файл, и вы должны иметь контрольную точку конструктора.
Это взломать, но работал у меня...
Ответ 3
Решение 1: инициализаторы членов
Если у вас есть какие-либо переменные-члены с инициализаторами, вы можете установить на них контрольную точку. Например:
class MyClass {
private int i = 0; // this line can have a breakpoint in Eclipse
}
Решение 2: точки останова нагрузки класса
Если вы можете обойтись только одним нажатием этой точки останова, вы можете использовать точку останова нагрузки класса:
Вы можете установить точку останова Класса, который остановится, когда класс будучи лодированным [sic]. Щелкните правой кнопкой мыши по классу в Проводнике пакетов, Project Проводник или Типы и выберите "Переключить точку останова нагрузки класса"
Как следует из названия, эта точка останова будет ударяться, когда класс будет сначала загружен, поэтому он будет срабатывать только один раз (при условии, что у вас есть только один загрузчик классов). Но в зависимости от ваших потребностей это может быть достаточно.
Ответ 4
Я хотел бы сделать небольшое улучшение в ответе rsp, сделав его немного проще, но я не могу оставлять комментарии еще.
Если вы создаете конструктор по умолчанию (например, нажав ctrl + alt + s, а затем c), поместите breakPoint в вызов этого конструктора, а затем нажмите ctrl + z, чтобы отменить создание конструктора по умолчанию. имеют точку останова без изменений в коде.
Надеюсь, что это поможет
Ответ 5
Вы всегда можете создать свой собственный конструктор без аргументов и поставить там точку останова. Тем не менее, почему вы хотите, чтобы точка останова находилась там? Он просто привязывается к аргументу без аргументов super()
. Если у вас есть код, который вам интересен, поставьте точку останова внутри этого конструктора.
Ответ 6
вы можете сделать следующее:
public class MyClass {
public MyClass() {
super();
}
}
И затем поставьте точку останова на это. Однако, что вы надеетесь достичь этим?
Ответ 7
Как создать публичный конструктор без аргументов и установить на нем точку останова? Если это не поможет, не могли бы вы объяснить, почему бы и нет?
Ответ 8
Вы можете рассмотреть YouDebug, чтобы script ваш сеанс отладки, включая точку останова по любому конкретному методу любого класса.
Точками останова являются обработчики обратного вызова событий, которые вызывается, когда определенное событие происходит в целевой JVM. Вы можете создавать точки останова, вызывая методы точки останова на объекте "vm". Эти методы принимают замыкание, которое вызывается при возникновении события, и они часто принимают дополнительные аргументы для управления природой точки останова.
Следующий код определяет точку останова в строке 7 org.acme.SubStringTest.java
(или какой бы исходный файл этот класс не был определен в:)
vm.breakpoint("org.acme.SubStringTest",7) {
println "I'm at SubStringTest.java line 7";
}
Ответ 9
Лучше всего использовать фреймворк, основанный на аспектах, для встраивания функциональности, необходимой в классах.
Я думал, что Eclipse предоставил контрольную точку конструктора по умолчанию, но, увы, только класс загрузил точку останова в контуре.
Какую проблему вам нужно решить?