Updated on 2022-09-14 GMT+08:00

How Do I Use IDEA to Remotely Debug Services?

Question

How do I use IDEA to remotely debug services after submitting services by the Storm client?

Answer

The following uses WordCount as an example to demonstrate how to use IDEA to remotely debug services.

  1. Log in to FusionInsight Manager and choose Cluster > Name of the desired cluster > Services > Storm. On the page that is displayed, click the Configurations tab. In the search box, search for nimbus.task.timeout.secs and supervisor.worker.start.timeout.secs and increase their values. You are advised to adjust the values to the maximum ones. Add -Xdebug -Xrunjdwp:transport=dt_socket,address=5055,suspend=n,server=y right after the existing value of WORKER_GC_OPTS. Save the configuration and restart related instances.

    Before debugging the Storm program, you need to modify specified parameters on the server side. These parameters take effect after you restart the server. You are advised to debug the program in the test environment.

  2. After submitting a topology, enter the Topology page on the Storm UI. In the Topology page that is displayed, click the component to be debugged to enter its debugging page.

    Figure 1 Component debugging interface

  3. On the component debugging interface, obtain the IP address of the host where the worker process runs. If the host has multiple IP addresses, select any one of them.

    Figure 2 Obtaining the IP addresses of the host where worker runs

  4. Open the IDEA project. On the menu bar, choose Run > Edit Configurations.
  5. In the window that is displayed, click the plus sign (+) in the upper left corner. In the drop-down list, select Remote. Then select the path where the source code module to be debugged resides and configure the Host and Port parameters as shown in Figure 3.

    Host indicates the IP address of the host where worker runs and Port indicates the number of the port to be debugged. Ensure that the port is not occupied on the host.

    Figure 3 Configuring parameters

    When the port number changes, the value added to WORKER_GC_OPTS changes too. For example, if the port number is 8011, the value changes to -Xdebug -Xrunjdwp:transport=dt_socket,address=8011,suspend=n,server=y.

  6. Set the debugging breakpoint.

    Click in the blank area on the left of the IDEA code editing window to set corresponding code line breakpoint.

    Figure 4 Setting the breakpoint

  7. Start debugging.

    On the menu bar, choose Run > Debug'Unnamed' to open the debugging window and start debugging, including step-by-step debugging, checking the call stack, and tracing the variable value as shown in Figure 5.

    Figure 5 Debugging