更新时间:2024-08-05 GMT+08:00

如何使用IDEA远程调试业务

问题

使用Storm客户端提交了业务之后,如何使用IDEA远程调试业务?

回答

以调试WordCount程序为例,演示如何进行IDEA的远程调试:

  1. 登录FusionInsight Manager系统,选择“集群 > 待操作集群的名称 > 服务 > Storm”,选择“配置”选项卡,在搜索框中搜索并调大nimbus.task.timeout.secs和supervisor.worker.start.timeout.secs的值,建议调整为最大值。然后在WORKER_GC_OPTS的现有值后追加-Xdebug -Xrunjdwp:transport=dt_socket,address=5055,suspend=n,server=y,保存配置后重启相关实例。

    调试Storm程序需要先修改指定的服务端参数,并在重启服务后生效,建议在测试环境上进行调测。

  2. 提交拓扑后,在Storm UI上进入到Topology界面,再单击进入要调试组件界面。

    图1 进入拓扑的Component界面

  3. 在组件页面获取worker进程运行的主机ip地址,如果有多个则任选一个。

    图2 获取Worker运行的主机

  4. 打开IDEA工程,在菜单栏中选择“Run > Edit Configurations”。
  5. 在弹出的配置窗口中用鼠标左键单击左上角的号,在下拉菜单中选择Remote,然后选择对应要调试的源码模块路径,并配置远端调试参数Host和Port,如下图所示。

    其中Host为获取的Worker运行的主机IP地址,Port为调试的端口号(确保该端口在运行机器上没被占用)。

    图3 配置参数

    当改变Port端口号时,在WORKER_GC_OPTS中追加的调试参数也要跟着改变,比如Port设置为8011,对应的调试参数则变更为-Xdebug -Xrunjdwp:transport=dt_socket,address=8011,suspend=n,server=y

  6. 设置调试断点。

    在IDEA代码编辑窗口左侧空白处单击鼠标左键设置相应代码行断点,如下图所示。

    图4 设置断点

  7. 启动调试。

    在IDEA菜单栏中选择“Run > Debug 'Unnamed'”开启调试窗口,接着开始调试,比如单步调试、查看调用栈、跟踪变量值等,如下图所示。

    图5 调试