
# 如何使用IDEA远程调试
#### 问题
在Spark二次开发中如何使用IDEA远程调试？
#### **回答**
以调试SparkPi程序为例，演示如何进行IDEA的远程调试。
1. 打开工程，在菜单栏中选择"Run \> Edit Configurations"。
2. 在弹出的配置窗口中用鼠标左键单击左上角的"+"号，在下拉菜单中选择Remote，如[图1]所示。
   图1选择Remote   
   ![](https://support.huaweicloud.com/devg-mrs/zh-cn_image_0250982347.jpg) 
3. 选择对应要调试的源码模块路径，并配置远端调试参数Host和Port，如图2所示。
   其中Host为Spark运行机器IP地址，Port为调试的端口号（确保该端口在运行机器上没被占用）。
   图2配置参数   
   ![](https://support.huaweicloud.com/devg-mrs/zh-cn_image_0250982424.jpg)
   ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
   当改变Port端口号时，For JDK1.4.x对应的调试命令也跟着改变，比如Port设置为5006，对应调试命令会变更为-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006，这个调试命令在启动Spark程序时要用到。
   
4. 执行以下命令，远端启动Spark运行SparkPi。 **./spark-submit --master yarn-client --driver-java-options** "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006" --class org.apache.spark.examples.SparkPi /opt/client/Spark/spark/examples/jars/spark-examples-\<version\>.jar
   - org.apache.spark.examples.SparkPi，opt/client/Spark/spark/examples/jars/spark-examples-\<version\>.jar：用户调试时需要换成自己的主类和jar包路径。
   
   
   
   - -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006：需要换成[3]获取到的For JDK1.4.x对应的调试端口。
    
5. 设置调试断点。 在IDEA代码编辑窗口左侧空白处单击鼠标左键设置相应代码行断点，如图4所示，在SparkPi.scala的29行设置断点。
   图3设置断点   
   ![](https://support.huaweicloud.com/devg-mrs/zh-cn_image_0250982408.jpg) 
6. 启动调试。 在IDEA菜单栏中选择"Run \> Debug 'Unnamed'"开启调试窗口，接着开始SparkPi的调试，比如单步调试、查看调用栈、跟踪变量值等，如图5所示。
   图4调试   
   ![](https://support.huaweicloud.com/devg-mrs/zh-cn_image_0250982270.jpg) 
 
