如何像研发一样进行java项目远程调试

  在日常测试中经常会遇到异常的情况,比如支付功能正常情况是ok的,但是某些场景或某些用户数据下,会发生异常,无法支付等等。这时候根据日志、数据库等手段无法排查的话,可以使用远程调试来定位bug。那么作为测试人员要如何进行远程debug呢?

一、环境配置

1、配置好环境,下载好JDK、MAVEN并配置好环境变量。

2、导入到IDEA/eclipse,保证没有任何报错(针对java项目,另外一篇文章主要讲解如何配置java项目的环境)

3、确保IDEA/eclipse的代码跟当前测试环境的部署的包一致。

二、远程调试原理(还是有必要了解一下的):

1、Java程序的执行过程- 分为以下几个步骤:Java的文件 - - 编译生成的类文件(class文件) - - JVM加载类文件 - - JVM运行类字节码文件 - - JVM翻译器翻译成各个机器认识的不同的机器码。

2、Java 程序是运行在Java 虚拟机(JVM )上的,具有良好跨平台性,是因为Java程序统一以字节码的形式在JVM中运行,不同平台的虚拟机都统一使用这种相同的程序存储格式。

3、因为都是类字节码文件,只要本地代码和远程服务器上的类文件相同,两个JVM通过调试协议进行通信(例如通过插座在同一个端口进行通信)。另外需要注意的是,被调试的服务器需要开启调试模式,服务器端的代码和本地代码必须保持一致,则会造成断点无法进入的问题。

三、远程调试配置

1、调试模式:

Attach :此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;

Socket :此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。

2、bin/setenv.sh(设置系统环境变量的地方,在测试环境对应的项目中设置)

增加CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787"

-Xdebug:通知JVM工作在调试模式下

-Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境。参数同时有一系列的调试选项:dt_socket是指用SOCKET模式,dt_shmem指用共享内存方式

配置完后,点击这个甲壳虫进行启动

看到下面这行说明成功了。

四、打断点:这步比较关键,如果对代码比较熟悉的话,就知道应该打在哪里,如果对代码不熟悉的话,可以通过全局搜索的方式来

找,如果你知道接口的地址,那就全局搜索接口地址,然后找到对应的位置,从在外层一步步往里debug。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值