dragonwell-project / dragonwell8

Alibaba Dragonwell8 JDK
http://dragonwell-jdk.io
GNU General Public License v2.0
4.21k stars 497 forks source link

[Conflict] 同时使用JacocoAgent参数和XquickStart参数启动时报错 #633

Open Sugartx opened 6 months ago

Sugartx commented 6 months ago

Description 当在启动参数中添加-javaagent:xxx/jacocoagent.jar=includes=,output=tcpserver,port=10000,address= 时,可以添加-Xquickstart:verbose参数启用录制功能,但是在参数相同的情况下进行回放,会出现异常

Steps to Reproduce Steps to reproduce the behavior:

  1. 我们使用的启动参数可以参考: /xxx/dragonwell-8.18.19/bin/java -javaagent:xxx/jacocoagent.jar=includes=,output=tcpserver,port=10000,address= -Xquickstart:verbose org.apache.catalina.startup.Bootstrap start
  2. 录制启动时,不会出现问题,可以正常在进程结束时录制
  3. 回放启动时,会出现如图所示的问题 0zm4q12000dxxyc478E1F *4. 如果在录制启动时把jacoco的参数去掉,在回放时是可以添加的

JDK version Alibaba Dragonwell Extended Edition 8.18.19

Execution environment

Sugartx commented 6 months ago

关于jacoco方面: 1.如果不使用quickstart功能是可以正常使用的 2.针对这个异常已经搜索过相关的资料,发现都是因为jacoco和java版本不匹配时会产生这个异常

lingjun-cg commented 6 months ago

quickstart不要与javaagent一起使用,由于javaagent里可以会对类做各种修改,包括增加字段,这个与quickstart的功能是冲突的

sendaoYan commented 6 months ago

使用JacocoAgent的目的是收集覆盖率信息吗。如果目的是收集覆盖率信息,关闭XquickStart和开启XquickStart收集覆盖率结果应该是一致的,可以关闭XquickStart来收集覆盖率

Sugartx commented 6 months ago

主要是这个启动参数,我们并不能够非常灵活的控制,所以并不能选择在启用quickStart时去掉JacocoAgent。

另外,使用quickStart启动失败时,能不能自动切换成一般方式启动

lingjun-cg commented 6 months ago

目前是不行的。这里并不是quickstart启动失败了,因为JacocoAgent抛异常了,但是具体什么异常,quickstart是无法知道的。 建议还是在启动脚本里判断一下,如果有JacocoAgent,就关闭quickstart

Sugartx commented 6 months ago

好的,感谢答疑