Прежде всего, вы все сделали правильно до этого момента.
«Ошибка», если вы хотите назвать это так, возникает, когда вы нажимаете F5
.Теперь эта команда называется step into
, что означает, что она продолжит выполнение в следующем слое более глубокого стека.
Из кода, который вы предполагали, это будет конструктор TestClassTwo
, но прежде чем java сможет вызвать конструктор, он должен сначала инициализировать сам класс, и это именно то, что указывает Debug View на рисунке.
Дополнительный вопрос: Вы нажали F5
несколько раз, чтобы получить это глубоко в ClassLoader.loadClass()
?
Для текущего выполнения вы можете выбрать вторую последнюю строку в Debug View , которая равна
Launcher$AppClassLoader(ClassLoader).loadClass(String) line: not available
и затем нажмите F7
.Это выведет соответствующего метода на продолжение выполнения на предыдущем уровне стека, где должен последовать вызов конструктора TestClassTwo
.
Для будущей отладки вы можетехочу познакомиться с Step Filtering .Шаговые фильтры позволяют исключать определенные части кода из отладки.Они будут выполнены, но eclipse автоматически «перешагнет» их.
На соответствующей странице настроек, Java > Debug > Step Filtering
, eclipse удобно предоставляет возможность отдельно включать и отключать пошаговую фильтрацию для java.lang.ClassLoader
.