Java 远程调试的原理是两个 VM 之间通过debug 协议进行通信,然后以达到远程调试的目的。两者之间可以通过socket进行通信。

步骤:

1. 首先被 debug 程序的虚拟机在启动时要开启debug模式,启动 debug 监听程序, jdwp 是 Java Debug Wire Protocol 的缩写。

java -Xdebug -Xrunjdwp:server=y, transport=dt_socket,address=8000,suspend=n xxx_application

jdk1.7之后可以这样

java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n xxx_application

xxx_application 是main程序, server=y 表示监听其他 debugclient端的请求。 address=8000表示端口8000

suspend表示是否在调试客户端简历连接之后启动VM. 如果为 y, 那么当前的VM就是 suspend 直到有 debug client 连接进来才开始执行程序,如果不是服务器监听模式且很快就执行完毕的,可以选择在 y 来阻塞它的启动。

然后用一个 debug 客户端去 debug 远程的程序了, 一般 IDE 自带有 debug 客户端,填写运行时被 debug 程序的虚拟机监听的端口号和地址,选择 connect 方式为 attach.

然后可以开始远程调试。

Intellij debug 快捷键

F7 Step into

F8 Step over

Shift + F8, Step out

Alt + F9 运行至光标处

F9 恢复

Software--Java--远程调试的更多相关文章

  1. Java远程调试 java -Xdebug各参数说明

    JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的 调试环境,并支持设置断点,支持线程线级的调试 JAVA的调试方法如下: 1.首先支持J ...

  2. Java远程调试代码不一致问题汇总

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. java远程调试(断点)程序/tomcat( eclipse远程调试Tomcat方法)

    tomcat远程调试: 1.Linux中配置tomcat在catalina.sh中添加如下CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_soc ...

  4. linux下的java远程调试jpda+tomcat

    项目放到linux服务器了,服务器的环境或者数据可能和我们本地不一样,这个时候我们可能需要远程的断点进行调试,来查看请求过程中的各个变量的值.这里我们的应用服务器用的tomcat5.5.17 这个时候 ...

  5. java远程调试(idea)

    遇见一个怪异问题,无奈线上数据库有限制,只能远程调试下代码.突然发现,远程调试代码真的好简单,简单记录下操作步骤. 1.在idea里创建一个Remote,远程连接的入口. 找到 Edit Config ...

  6. 使用java远程调试技术监控代码运行

    JAPA介绍 JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Jav ...

  7. JAVA远程调试

    1.远程端启动必须添加jvm参数 -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} 其中de ...

  8. 开启Java远程调试

    在JDK启动时,加入 -Xrunjdwp:transport=dt_socket,address=9900,server=y,suspend=n -Dcom.sun.management.jmxrem ...

  9. MC java 远程调试 plugin 开发

    @ECHO OFF SET CATALINA_OPTS= -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,se ...

  10. java 远程调试

    在java 命令上加入 -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y suspend=y 配置的端口时候要保证没有被占用

随机推荐

  1. win10系统每次重启桌面图标排列都会改动怎么办

    鼠标右键点击个性化>主题>找到桌面图标设置>把计算机 回收站 用户的文件 控制面板 网络等前面框复选框全部勾选掉,然后在桌面新建文件夹把桌面所有的图标剪切到新建文件里面,然后把新建文 ...

  2. vue 分页显示 引用Element框架

    VUE组件 父页面-子组件-传值 单表查询图片上传: 注释为简单方法 图片显示方法: 红框处应该为地址+存图片的文件夹名  +当前图片的值 在vue中引用Element需要的步骤 1.在终端中输入网址 ...

  3. CSP202104-4校门外的树

    `#include include include include include include include include include include include include us ...

  4. idea启动项目,报java.lang.OutOfMemoryError: PermGen space 和启动项目很慢的问题解决

    启动一个老的项目,报错,查是内存溢出 进入 VM options 加上   -Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m   在 ...

  5. 用 go 实现多线程下载器

    本篇文章我们用Go实现一个简单的多线程下载器. 1.多线程下载原理 通过判断下载文件链接返回头信息中的 Accept-Ranges 字段,如果为 bytes 则表示支持断点续传. 然后在请求头中设置 ...

  6. WPF学习笔记-数据采集与监控项目03-课程总览(ItemsControl控件)

    以下是学习笔记: https://www.bilibili.com/video/BV1gq4y1D76d?p=57&spm_id_from=pageDriver&vd_source=3 ...

  7. 记录一次antd升级到最新版本,与现有代码冲突导致的问题

    背景:发版的前一夜,测试突然发现项目某个功能点击弹框会导致整个页面直接空白,立即提了个单要我赶紧修复.(内心真是一万个卧槽)本来准备不加班的.没办法,那只能解决.第一步就怀疑是不是谁动了代码,毕竟一两 ...

  8. php对接钉钉机器人报警接口

    <?php function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch ...

  9. vue2 element-ui组件二封-表单组件-按钮封装

    这里是一段我们公司过往项目的代码(增删改查项目中的查询/重置按钮) <el-button @click="query()" type="primary" ...

  10. &以及&&的用法总结

    &有两种用法 1.取地址 2.引用 取地址和引用没有任何关系,不要瞎联系! 1.取地址: // 很常规,仅此而已 std::string *p = &s; 2.引用: a)引用是某一个 ...