我试图研究java String类中的方法是如何工作的,所以我创建了一些调用String类方法的自定义代码。
正如您所看到的,我在自己的代码中设置了一个断点,并在java String类源代码中设置了另一个断点。
虽然我处于调试模式且位于代码的第7行,但我按了step into
。
然而,不是踩到String类方法indexOf
,而是转移到我的代码的第8行。
为什么会这样?我该如何进入java字符串方法源代码?
public class TestingIndexOfMethod {
public static void main(String[] args) {
final String stringToBeSearchedThrough = "hello world";
final String substringToLookFor = "ll";
int a = stringToBeSearchedThrough.indexOf(substringToLookFor, 0);
System.out.println(a);
}
}
修改1:
我已经检查过,如果"使用步骤过滤器"在SO上询问此问题之前已激活,并且未激活。所以我不认为"使用步骤过滤器"这是问题所在。
编辑2:
step into
适用于我自己定义的方法
答案 0 :(得分:2)
很可能有一个步骤过滤器指示调试器跳过某些类。
在首选项对话框(菜单窗口 - >首选项)中,检查步骤过滤设置。
停用Use Step Fitlers
停用所有步骤过滤器,或停用仅为java.*
类的过滤器。
编辑另一个原因可能是您的项目正在使用JRE而不是JDK来执行。下面是使用Java 8 JRE和Java 8 JDK的示例。
使用 JRE 使用 JDK编辑2 要确定使用的Java运行时库,请在代码中添加以下语句,然后以调试模式运行它。
...
public static void main(String[] args) {
Stream.of(System.getProperty("sun.boot.class.path")
.split(File.pathSeparator))
.filter(s -> s.endsWith("rt.jar"))
.forEach(System.out::println);
...