zoukankan      html  css  js  c++  java
  • 如何使用 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 的调试远程代码了。

  • 相关阅读:
    小结Fragment与FragmentPagerAdapter的生命周期及其关系
    Android的Touch事件分发机制简单探析
    个人项目开源之c++基于epoll实现高并发游戏盒子(服务端+客户端)源代码
    个人项目开源之Django文件中转站源代码
    个人项目开源之Django图书借阅系统源代码
    个人项目开源之实现矩形树图代码统计工具源代码
    颜色渐变算法
    echarts玩转图表之矩形树图
    解决MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.问题
    引号有几种
  • 原文地址:https://www.cnblogs.com/krockey/p/5056945.html
Copyright © 2011-2022 走看看