当前位置: 首页 > news >正文

使用Eclipse 进行远程 Debug 调试

Eclipse远程调试

Java自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的调试环境,并支持设置断点,支持线程线级的调试。

由于部署环境的差异性,都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取运行中的环境上下文,分析日志文件并尝试重现bug。这会带来的问题还是不少的,首先,日志的分析是一项比较耗时的工作;其次,现有的日志记录不一定能反映出问题,可能需要多次重复这个过程(分析日志->猜测问题->加日志->部署->获取日志)来慢慢逼近问题。倘若是测试环境,还多了一项可供选择的手段——远程调试——将程序在测试环境中以debug模式启动,在本机使用Eclipse在工程中设置断点进行调试。

【具体步骤】

  1. 修改服务器启动参数

在服务器上的进程启动参数中添加:

-Xdebug -Xrunjdwp:transport=dt_socket,address=6666,server=y,suspend=n

连接到myhost:6666提供的调试服务。

-Xdebug通知JVM工作在DEBUG模式下,

-Xrunjdwp通知JVM使用(Java debug wire protocol)运行调试环境。该参数同时包含了一系列的调试选项:

transport指定了调试数据的传送方式;

dt_socket是指用SOCKET模式;

server=y/n VM 是否需要作为调试服务器执行;

suspend=y/n 是否在调试客户端建立连接之后启动 VM 。

设置完成后,启动服务端。

2. 启动本地代码

设置 Debug configurations-->Remote Java Application

注意在点击【Debug】按钮之前,一定不要多次“启动本地程序”,否则就会出现"Failed to connect to remote VM. Connection refused"异常,如下图所示:

3. 调试远程客户端

点击【Debug configurations】中的debug按钮,运行效果如下,接下来,就和本地调试一模一样了。在调试过程中,日志打印在远程服务器,本地console中看不到日志信息。调试的时候需要一个Http客户端发起请求,比如postman等等。

条件断点

如果需要对循环中的数据进行调试,使用条件断点是个不错的选择。将断点设置在指定的位置上,右键进一步设置断点属性,如下:

调试时,程序会中断在符合条件的代码处。

异常断点

断点不仅可以设置在某一行,也可以针对整个工程进行设置。假设知道程序会在某个地方抛出NullPointerException,可是并不是每一次运行都会出现,就可以为工程设置异常断点,如下:

总结

对于使用Eclipse进行日常编程工作的程序员,调试是每天都在进行的工作。Eclipse提供的远程调试功能有时也是一个比较实用的高级功能。

http://www.lryc.cn/news/68860.html

相关文章:

  • 记第一次出差得出的经验
  • 第12章:视图
  • Word控件Aspose.Words教程:操作 XPS 和 EPS 文档
  • java并发-Exchanger
  • 毫米波雷达系列 | 传统CFAR检测(自适应类)
  • 【2023/05/19】NFA
  • 汽车功能安全
  • 【Python】数据分析与可视化实践:收支日统计数据可视化的实现
  • Halcon 中_xld算子的概念与应用? select_shape_std 和 select_shape_xld区别?
  • [pgrx开发postgresql数据库扩展]7.返回序列的函数编写(3)多行表序列
  • 刚入职,就想跑路了...
  • 如何让技术架构师具有预知未来业务发展的能力
  • 卷麻了,新来的00后实在是太卷了...
  • 单片机--实战练习
  • Go Etcd 分布式锁实战
  • Windows环境下pcl点云库 安装配置教程
  • 岗位分析与可视化系统(三)
  • unity进阶学习笔记:json和xml
  • 数据结构之初识树与堆
  • 虚拟化技术 — VirtIO 虚拟设备接口标准
  • Dubbo——SpringBoot集成Dubbo(@Autowired和@Reference的区别、Dubbo的服务治理)
  • 高并发系统的三把利器
  • AppiumWinAppDriver自动化测试 Failed to locate opened application window with appid问题
  • 渗透测试--6.1.aircrack-ng破解wifi密码
  • C++中的继承、以及赋值兼容转换。
  • js浏览器实现简单的实时扫一扫功能
  • unity愤怒的小鸟学习制作(二)
  • 干外包3年,彻底寄了...
  • 软考高项论文范文(三)
  • 浅谈谈谈OTA召回2023