写点什么

IntelliJ IDEA 远程调试 Elasticsearch6.1.2

作者:程序员欣宸
  • 2022 年 9 月 10 日
    广东
  • 本文字数:1561 字

    阅读完需:约 5 分钟

IntelliJ IDEA远程调试Elasticsearch6.1.2

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 在深入学习 elasticsearch 的过程中,遇到有疑惑的源码时,如果能打断点单步调试,往往会取得事半功倍的效果,今天的实战内容就是通过 IntelliJ IDEA 远程连接运行中的 elasticsearch 服务,然后单步运行代码;

环境信息

  • 本次实战会用到两台电脑,一台 Ubuntu 运行着 elasticsearch6.1.2 版本,另一台 Win10 运行着 IntelliJ IDEA,详细的版本信息如下:


  1. 操作系统:Ubuntu 18.04.2 LTS

  2. JDK:1.8.0_191

  3. Gradle:4.6

  4. elasticsearch:6.1.2

  5. IntelliJ IDEA: 2018.2.4 (Ultimate Edition)


  • 当然,您也可以将 elasticsearch 和 IntelliJ IEDA 运行在同一台电脑上,并没有什么差别;

Ubuntu 上的操作

  • 在 Ubuntu 上做以下设置:

  • 打开 elasticsearch-6.1.2/config/jvm.options 文件,在尾部增加以下一行内容,注意 5678 是个没有被占用的端口:


-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5678
复制代码


  • 正常启动 elasticsearch,如果没有选择后台启动,可以在控制台看到如下信息,可见已经开始监听 5678 端口了:


Listening for transport dt_socket at address: 5678[2019-04-20T07:10:36,449][INFO ][o.e.n.Node               ] [] initializing ...[2019-04-20T07:10:36,570][INFO ][o.e.e.NodeEnvironment    ] [stNJgHX] using [1] data paths, mounts [[/ (/dev/sda2)]], net usable_space [93.5gb], net total_space [109gb], types [ext4][2019-04-20T07:10:36,570][INFO ][o.e.e.NodeEnvironment    ] [stNJgHX] heap size [990.7mb], compressed ordinary object pointers [true][2019-04-20T07:10:36,572][INFO ][o.e.n.Node               ] node name [stNJgHX] derived from node ID [stNJgHXSQZObhO-ze917hA]; set [node.name] to override
复制代码

IntelliJ IDEA 上的操作

  • elasticsearch 启动成功后,回到要运行 IntelliJ IDEA 的电脑上,执行以下操作:

  • 下载 elasticsearch6.1.2 源码,地址是:https://github.com/elastic/elasticsearch/releases

  • 上述网站中有各个版本的 release,找到我们需要 的 6.1.2 版本,然后下载压缩包,如下图:


  • 下载完毕后,解压得到 elasticsearch-6.1.2 目录,打开命令行进入该目录,执行 gradle idea,将源码生成 IntelliJ IDEA 工程:


gradle idea
复制代码


  • 打开 IntelliJ IDEA,用 import 的方式导入上述工程,注意选择类型为 Gradle,如下图:



  • 注意 Gradle 的版本号,推荐 4.6 版本,如下图:


  • 等待 IDEA 导入依赖和构建完成,如下图:


  • 源码导入成功后开始远程调试,菜单操作如下图:


  • 新增一个远程配置,如下图:


  • 在新配置项的设置窗口,按照下图所示进行配置,输入合适的配置名称,elasticsearch 服务所在机器的 IP 地址,端口号 5678,然后点击底部的 OK 按钮:


  • 如下图,这时候在工具栏上可以看见上面配置的 elastic6.1.2,选中后点击红框 2 中的 debug 按钮,即可开始远程连接:


  • 如果网络连接正常,会提示远程连接成功,如下图:


  • 来试试断点的效果吧,打开类 org.elasticsearch.rest.RestController,这是 elasticsearch 处理 web 请求的入口类,在 dispatchRequest 方法中打个断点,位置是调用 tryAllHandlers 方法那一行,如下图红框所示:



建议

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 刚刚阅读数: 4
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
IntelliJ IDEA远程调试Elasticsearch6.1.2_elasticsearch_程序员欣宸_InfoQ写作社区