原文链接:https://www.cnblogs.com/wy2325/p/5600232.html

概述

对于分布式系统的调试不知道大家有什么好的方法。对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时。今天咱们来了解了解Java远程调试这个牛逼的功能,本文以Intellij IDEA为例讲解怎么使用远程调试。以Thrift入门教程这篇文章中使用的程序作为例子。这个程序由Thrift服务端和客户端组成。描述一下远程调试需要解决的问题:

服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态。

下面按照步骤介绍怎么远程debug。

使用特定JVM参数运行服务端代码

要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数,这些参数是:

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}

其中的${debug_port}是用户自定义的,为debug端口,本例以5555端口为例。

本地连接远程服务器debug端口

打开Intellij IDEA,在顶部靠右的地方选择”Edit Configurations…”,进去之后点击+号,选择”Remote”,按照下图的只是填写红框内的内容,其中host为远程代码运行的机器的ip/hostname,port为上一步指定的debug_port,本例是5555

然后点击Apply,最后点击OK即可

启动debug模式

现在在上一步选择”Edit Configurations…”的下拉框的位置选择上一步创建的remote的名字,然后点击右边的debug按钮(长的像臭虫那个),看控制台日志,如果出现类似“Connected to the target VM, address: ‘xx.xx.xx.xx:5555’, transport: ‘socket’”的字样,就表示连接成功过了。

设置断点,开始调试

远程debug模式已经开启,现在可以在需要调试的代码中打断点了,比如:

如图中所示,如果断点内有√,则表示选取的断点正确。

现在在本地发送一个到远程服务器的请求,看本地控制台的bug界面,划到debugger这个标签,可以看到当前远程服务的内部状态(各种变量)已经全部显示出来了,并且在刚才设置了断点的地方,也显示了该行的变量值。

转载于:https://www.cnblogs.com/bce1100/p/10622137.html

【转载】IntelliJ远程调试教程相关推荐

  1. c++ builder xe2 (Embarcadero rad studio) 远程调试 同样适用于 delphi 远程调试 教程

    c++ builder xe2 (Embarcadero rad studio) 远程调试 同样适用于 delphi 远程调试 教程 转载于:https://www.cnblogs.com/Littl ...

  2. intellij远程调试_IntelliJ中的远程调试Wildfly应用程序

    intellij远程调试 远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序. Java开箱即-agentlib:jdwp[=options]支持远程调试:目标应用程序必须使用-a ...

  3. (十)Intellij 远程调试 a bug

    接上篇文章:http://blog.csdn.net/lovesummerforever/article/details/50327445 经常使用第一种远程调试方法,也就是不改动任何的配置文件,使用 ...

  4. 泛微ecology9后端二开环境搭建及远程调试教程

    开发环境搭建 1.新建项目 2.新建模块 3.模块配置 3.1.配置编译路径 3.2.添加web框架 模块名称右键[添加] 4.添加依赖 4.1.添加ecology/classbean 4.2.添加W ...

  5. 04-20.eri-test GKE(Google K8S Engine)上的Intellij远程调试Java应用程序

    Prepare the docker image 为了调试Java应用程序,我们需要向远程应用程序添加一些命令行参数. 在kubernetes部署有效负载中设置参数 DEBUG_OPTIONS=&qu ...

  6. VS(官方)跨平台开发远程调试教程(远程开发)

    文章目录 创建项目 设置用于 Linux 开发的项目 正在连接到 Linux 系统必备 第一个连接 添加和删除连接 项目属性 创建项目 选择linux c++项目!别选错! 设置用于 Linux 开发 ...

  7. eclipse进行远程调试教程,轻松搞定生产环境问题

    首先你本地Eclipse上要有和部署在远程服务器一至的项目,否则debug的时候会出现代码行错位,难以达到debug的效果.例如:如果你本地的代 码加了行,修改了,或减了一行.而远程服务器上的项目没有 ...

  8. tomcat 远程调试

    1.服务端查看cataline.sh 中的描述  cataline jpda start 开启服务端远程调试 远程调试端口JPDA_ADDRESS="8000" 2.本地代码参考  ...

  9. VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS2019,且远程目标平台cmake版本大于等于3.8)

    参考文章:使用vs2019进行Linux远程开发 vs进行远程开发分为三步: 1.创建远程环境的连接,随后让vs将远程环境中的系统头文件同步到本地(也可以指定其他地方的头文件,后面会讲解),c++的代 ...

最新文章

  1. 注册Github账户过程
  2. 解决protobuf import路径的问题
  3. knn实战:如何对手写数字进行识别?
  4. DataArtisans战略联手阿里云 Apache Flink服务能力云化
  5. 永恒python地速_立竿见影地把你的 Python 代码提速7倍
  6. (四)训练运行Deep CycleGAN以进行移动风格迁移
  7. C# using 使用方法
  8. 老司机请注意:POS机可盗刷ETC联名卡
  9. CSS Lint-线上CSS检测工具 让你的样式表更正确精简
  10. 自编码模型autoencoder
  11. 百度和知乎哪个引流效果好?知乎和百度的有什么区别?
  12. oracle 还原imp,Oracle学习笔记——imp还原数据库
  13. BZOJ 4199 品酒大会
  14. 服务器宕机是什么意思?服务器宕机原因及解决方法
  15. 软件架构图该怎么画?架构设计如何标准化?
  16. 2021-05-12 MongoDB面试题 什么是MongoDB分片集群
  17. DAMO-YOLO第三方数据训练教程
  18. 从FrozenUI中学习移动端屏幕适配问题
  19. Dagger2集成之环境配置及简单验证
  20. matlab实验一报告,matlab实验报告一二三

热门文章

  1. java ado_Java进击C#——语法之ADO.NET
  2. 人脸检测对齐--Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
  3. javascript 水平文字垂直滚动
  4. LeetCode 965 Univalued Binary Tree--判断二叉树的所有节点的值是否相同--python,java解法
  5. dell服务器状态监控系统,Nagios监控Dell服务器硬件状态
  6. c语言数组的一维编程,【C语言】转换一维数组
  7. sentinel使用
  8. python的range()函数用法
  9. ASP.NET MVC 4 中的JSON数据交互总结
  10. 可以获取python中输出函数帮助的是_Python帮助函数调试函数 用于获取对象的属性及属性值...