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端口。

  • 相关阅读:
    UVA 10600 ACM Contest and Blackout(次小生成树)
    UVA 10369
    UVA Live 6437 Power Plant 最小生成树
    UVA 1151 Buy or Build MST(最小生成树)
    UVA 1395 Slim Span 最小生成树
    POJ 1679 The Unique MST 次小生成树
    POJ 1789 Truck History 最小生成树
    POJ 1258 Agri-Net 最小生成树
    ubuntu 用法
    ubuntu 搭建ftp服务器,可以通过浏览器访问,filezilla上传文件等功能
  • 原文地址:https://www.cnblogs.com/zbzdqsmh/p/13959050.html
Copyright © 2011-2022 走看看