• 如何使用 Idea 远程调试 Java 代码


    起因

      这几天,我做的项目中需要使用第三方的 API,在第三方的 API 回调时,出现各种错误,需要远程调试。之前做远程调试的时候,我只会在代码中输出日志,记录下来做分析处理,但这样做既麻烦又费时,往往还不能准确定位问题,恶心至极。之前做 .NET 开发时用过 Remote Debug 这个功能,想想 Idea 这么牛逼,是不是也有这个功能,上网一查,还真有,共享出来,与诸君共勉。

    服务端配置

      首先,我们要让要让远程服务器支持远程调试功能,在项目启动项上追加特定的 JVM 参数即可,参数如下:

    • 晚于 JDK 1.4.X 版本
      -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001
    • JDK 1.4.X 版本
      -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001
    • JDK 1.3.X 或早起版本
      -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001
      


      大家根据不同的 JDK 版本使用不同的启动参数即可。本人使用的是 Tomcat 7 + Java 7 ,在 catalina.bat(linux 环境设置 catalina.sh)中设置 JAVA_OPTS 节点即可,“address=4001” 中的 “4001”为调试端口,大家可以根据需求自行设置(友情提示:不要占用网站的端口,有可能会导致项目启动报错)。

     IDE 配置

      然后,配置一下客户端就可以啦,Idea 的客户端配置非常简单在如下图所示的位置:

    点击 Edit Configurations,即可进入 Run/Debug Configurations 界面:

    点击左上角的“+”标识,可以在下拉框中发现“Remote”选项,选择确定后,出现右侧区域,首先在HOST(标注2)框中配置需要调试的远程服务器地址,然后在调试端口狂(标注3)中调试端口号(这里的端口号和服务器端的端口号保持一致,本示例中是“4001”),点击 OK 即可。

    调试步骤

      最后,进入调试流程,整个项目的调试也非常简单,点击下图中的 debug 按钮,当 console 窗口中打印出 “Connected to the target VM, address: 127.0.0.1:4001', transport: 'socket'”即表示链接成功:

      当然啦,也会有不顺利的情况出现,如:

    • 服务器端口限制,比如服务器屏蔽了“4001”端口,会导致远程调试失败;
    • 本地代码和远程代码不一致,也会导致远程代码调试失败;

    启动成功后,你就可以像调试本地代码一样 Happy 的调试远程代码了。

  • 相关阅读:
    ld: library not found for
    Could not load NIB in bundle: 'NSBundle.....
    ld: warning: directory not found for option ''
    UIRefreshControl 问题
    iOS Xcode6 新建OC Category文件
    Java 求字符串中出现频率最高字符
    Eclipse "Adb failed to restart !"
    基础练习 报时助手
    基础练习 2n皇后问题
    基础练习 Huffuman树
  • 原文地址:https://www.cnblogs.com/krockey/p/5056945.html
Copyright © 2020-2023  润新知