zoukankan      html  css  js  c++  java
  • Java远程断点调式 -Xdebug

    前言:

      我们在开发的过程中,难免会遇到调用别人机器上的代码,或者测试服务器上的代码。再调用过程中,难免会用到断点调式的功能。但是运行的不是本地的代码怎么办呢?

    现在我们就来了解下Java远程断点调用。

    需要:

      本地必须有源码,才能进行远程断点。

    一. 服务端启动

    #jdk1.7版本之前的命令

      #java -agentlib:jdwp=transport=dt_socket,address=9092,server=y,suspend=y -jar xxx.jar

    #1.7版本之后的命令

      #1) java -agentlib:jdwp=transport=dt_socket,address=9092,server=y,suspend=y -jar xxx.jar
      #2) java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9092-jar xxx.jar

    我本地是jdk1.8,所以:

    # nohup 末尾加&是后台运行 后边是日志输出路径

    nohup java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=9092,suspend=y -jar xxx.jar 1>/home/project/applogs/xxx-standout.log 2>&1 &

    参数说明:

      # -Xdebug:通知JVM工作在debug模式下;
      # -Xnoagent 禁用默认sun.tools.debug调试器。
      # -Djava.compiler=NONE 禁止 JIT 编译器的加载。
      # -Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境;加载JDWP的JPDA参考执行实例
      # transport:监听Socket端口连接方式(也可以dt_shmem共享内存方式,但限于windows机器,并且服务提供端和调试端只能位于同一台机);
      # server:server=y表示当前是调试服务端,=n表示当前是调试客户端
      # suspend:suspend=n表示启动时不中断,一般用于设置主动连接;suspend=y表示启动时就进入调试模式,一般用于被动连接;

    二. 客户端调用

    用idea连接远程代码

    1.

    2.

     

     3.

     

     4.启动remote,当 console 窗口中打印出 “Connected to the target VM, address: 127.0.0.1:9092', transport: 'socket'”即表示链接成功

    然后就可以访问页面,再本地代码打断点了

    注意:

      1.服务端启动的时候,address=prot 这个端口号和程序端口,不是一样的。address这个端口号,必须要是没有在使用的。

      2.服务端,不但要开放程序端口,而且要开放address端口。刚开始的时候,可以把防火墙关了练习。

      3.客户端,调用的时候,调用的不是程序端口,而是address端口。

  • 相关阅读:
    开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器
    JeeWx全新版本发布!捷微二代微信活动平台1.0发布!活动插件持续开源更新!
    JEECG 3.7.8 新版表单校验提示风格使用&升级方法(validform 新风格漂亮,布局简单)
    Java快速开发平台——JEECG 3.7.8 版本发布!我们的目标是有鱼丸也有粗面
    企业如何快速搭建小程序官网
    如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联
    deepClone deepCompare
    fiddler
    spy-debugger
    队列
  • 原文地址:https://www.cnblogs.com/zbzdqsmh/p/13959050.html
Copyright © 2011-2022 走看看