编者按(2020年1月6日):这是用Elasticsearch 6.6编写和测试的。由于PR#48188中的更改,这些说明将不适用于7.5版和更高版本.
如果想了解Elasticsearch的内部工作原理,源代码是最终的权威。如果源代码已经下载,那么像IntelliJ IDEA这样功能齐全的集成开发环境(IDE)对于浏览、编辑和调试它非常有用。因此,在这篇博客文章中,我介绍了(1)如何下载Elasticsearch源代码,(2)如何在IntelliJ IDEA中设置Elasticsearch项目,以及(3)如何在IntelliJ IDEA中启动Java调试器。
本博客中的说明已经在Mac OSX 10.14.2、IntelliJ IDEA 2018.3(社区版)和OpenJDK 11.0.2上进行了测试。
从github获取Elasticsearch源代码的副本,如下所示:
git clone https://github.com/elastic/elasticsearch.git
签出您要调试的 Elasticsearch 版本的分支。
cd elasticsearch
git checkout --track origin/6.6
在 elasticsearch 目录中,有几个文本文件需要查看。特别是,CONTRIBUTING.md 包含对将 Elasticsearch 代码导入 IntelliJ IDEA 项目的过程的描述,而 TESTING.asciidoc 描述了构建和调试代码的方法。本博文的其余部分基于这些文件中的说明。
Elasticsearch 使用的构建系统是 gradle,构建“Elasticsearch gradle tools”至少需要 Java 11。此外,Java 9 用于构建过程的一部分,如果未找到它,您将在构建代码时看到警告。确保您的 JAVA_HOME 和 JAVA9_HOME 环境变量设置正确。例如,我的 .bash_profile(在 OSX 上)中设置了我的 JAVA_HOME 和 JAVA9_HOME,如下所示:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
export JAVA_HOME
JAVA9_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
export JAVA9_HOME
最后,执行以下命令来配置一个 Elasticsearch 项目以在 IntelliJ IDEA 中使用。
./gradlew idea
执行上述命令可能需要几分钟时间,一旦完成,您的项目就可以导入 IntelliJ IDEA。
调试 Elasticsearch 的一种方法是使用以下命令从终端以调试模式启动项目:
./gradlew run --debug-jvm
上述过程可能需要几分钟才能完全启动,此时您可以通过单击 Run -> Attach to Process 从 IntelliJ IDEA 连接到该过程,如下所示:
这将允许您选择要附加到的进程,该进程应类似于以下内容:
您现在应该能够设置断点并单步执行 Elasticsearch 和 Lucene 代码!
请注意,如果您不熟悉使用 IntelliJ IDEA 进行调试,可以在 IntelliJ IDEA 文档中找到帮助。
在这篇博文中,我演示了如何在 IntelliJ IDEA 中设置一个项目,该项目将允许对 Elasticsearch 和 Lucene 源代码进行交互式调试。您现在已准备好深入研究 Elasticsearch 的内部工作原理!与往常一样,如果您有任何问题,请访问我们的讨论论坛。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。