使用Eclipse调试OpenJDK源代码

7
在我的项目中,我想使用Eclipse调试OpenJDK 8版本的C/C++源代码。为此,我已经完成了以下操作:
  1. 使用readme编译了OpenJDK8,并使用--with-debug-level=slowdebug选项。
  2. 将源makefile项目导入到Eclipse中。
  3. 创建了一个Eclipse运行配置,执行gdb来针对已编译的OpenJDK的java.exe并针对示例Java程序进行调试。在此配置中,我附加了JDK源代码目录路径,以便Eclipse能够将调试符号转换为源代码行并向我显示它们(显然)。
通过这种方法,我可以调试像java.c这样的文件中的代码。
我的问题是,我仍然无法调试本地代码。例如java.lang.System.currentTimeMillis()
对我来说,看起来库没有包含在Eclipse gdb-run中。我尝试手动运行gdb,但仍无法调试该代码部分。

有人遇到过同样的问题吗?或者尝试过调试JDK源代码吗?我猜我在这里缺少了什么...也许我的方法对于这个任务来说不正确?很高兴听到任何关于如何正确地调试JDK源代码的建议。

提前感谢您。

1个回答

1
你可能需要通过右上角的甲虫图标将Eclipse强制进入调试模式。
另一个可能的选项是使用assert(false)行而不是断点。
最后,可能需要在Eclipse项目设置中指定编译器。请注意,Eclipse调试器并不适用于所有编译器,通常是由于不兼容的链接器。我建议在线查找兼容性列表。

好的,我在Linux上使用Eclipse,所以希望Eclipse能够使用本地链接器... assert(false)不是一个真正的选项,因为我想通过JDK源代码进行调试... JDK编译大约需要15分钟,每次重新编译都不可行... 我能够使用这篇文章中介绍的NetBeans来调试JDK,但是,我仍然需要一种在Eclipse中调试JDK的解决方案。 - Aksim Elnik
抱歉我没有帮上忙。这可能听起来很奇怪,但如果我知道为什么你需要特定的编译器而不是更主流的编译器,这可能有助于我找出问题所在。顺便说一句,你是将JDK8作为项目导入,还是创建了一个项目,然后导入它?如果没有回应,我不知道我能提供多少帮助,但请记住,当赏金到期时,我仍将在这里,所以没有必要让自己感到紧张。 - Badasahog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接