gpt4 book ai didi

java - debug jdk源无法查看变量它是什么

转载 作者:行者123 更新时间:2023-12-02 11:01:43 25 4
gpt4 key购买 nike

我正在调试 JDK 源代码,如下所示:

 public static int codePointAt(CharSequence seq, int index) {
char c1 = seq.charAt(index++);
if (isHighSurrogate(c1)) {
if (index < seq.length()) {
char c2 = seq.charAt(index);
if (isLowSurrogate(c2)) {
return toCodePoint(c1, c2);
}
}
}
return c1;
}

并且我想在进入 if (isHighSurrogate(c1)) 之前查看 c1 变量。但是,当我调试监视 c1 变量时它显示:

enter image description here

我确实尝试过添加rt.jar源,它确实可以单步执行JDK源的断点,例如: enter image description here

但是为什么c1变量无法显示?

最佳答案

一般来说,为了能够在单步执行 JDK 源代码时观察变量,您需要使用调试信息来编译类文件,即使用 javac -g 进行编译。 .

因此,您最好的选择是找到带有调试信息的已编译版本(我找不到 JDK 7 的任何内容),或者您可以尝试自己编译源代码。

根据this post (请注意,我还没有尝试过)您不需要编译所有源,只需编译您需要的源。将新编译的类放在 $jdk/jre/lib/ ext/ endorsed目录中,将使用新类代替原始 rt.jar 中的类.

我相信这应该可以帮助您开始。

更新:实际上我刚刚尝试过这个过程,一点也不难。在 Windows、JDK 1.7.0_11 上测试。所有命令都是从命令行调用的:

  1. 创建您的工作文件夹。我选择d:\根文件夹
  2. 在您的工作文件夹中创建源文件夹,即 jdk7_src和输出文件夹jdk_debug
  3. 来自您的JDK_HOME文件夹获取src.zip文件并解压到 jdk7_src
  4. 选择您要编译的内容并删除其余内容。对于所有这些,您可能需要额外的步骤。我选择了文件夹:
    • java
    • javax
    • org
  5. 来自您的JDK_HOME\jre\lib获取文件rt.jar并放入工作文件夹中(这只是为了方便不要在命令行中指定太大的文件名)。
  6. 执行命令:dir /B /S /X jdk7_src\*.java > filelist.txt创建一个名为 filelist.txt 的文件以及将被编译的所有 java 文件的列表。这将作为 javac 的输入给出
  7. 执行javac使用命令:
    javac -J-Xms16m -J-Xmx1024m -sourcepath d:\jdk7_src -cp d:\rt.jar -d d:\jdk_debug -g @filelist.txt >> log.txt 2>&1这将编译 jdk_debug 中的所有文件文件夹并会生成 log.txt文件在您的工作文件夹中。检查日志内容。您应该会收到一堆警告,但没有错误。
  8. 进入jdk_debug文件夹并运行命令:jar cf0 rt_debug.jar * 。这将生成带有调试信息的新运行时库。
  9. 将新 jar 复制到文件夹 JDK_HOME\jre\lib\endorsed 。如果endorsed文件夹不存在,请创建它。

在 Eclipse 中调试您的程序。请注意变量的正常命名方式(不再是 arg0、arg1 等)。祝调试愉快:)

JDK debug

关于java - debug jdk源无法查看变量它是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com