Подтвердить что ты не робот

Как установить точку останова на Java-конструкторе по умолчанию в Eclipse?

В Eclipse я хотел бы установить точку останова на Java конструктор по умолчанию. Я не могу просто дважды щелкнуть слева от любой строки кода, поскольку конструкторы по умолчанию не имеют исходного кода - они неявно генерируются компилятором Java.

Я бы хотел установить такую ​​точку останова без изменения существующего кода.

4b9b3361

Ответ 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 предоставил контрольную точку конструктора по умолчанию, но, увы, только класс загрузил точку останова в контуре.

Какую проблему вам нужно решить?