System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种代码在线调试方法技术_技高网

一种代码在线调试方法技术

技术编号:40841254 阅读:17 留言:0更新日期:2024-04-01 15:08
本发明专利技术提供了计算机技术领域的一种代码在线调试方法,包括如下步骤:步骤S10、基于JPDA协议开启JVM调试代理服务器的调试端口;步骤S20、接收浏览器基于HTTP协议发送的断点开启请求,解析所述断点开启请求获取断点配置参数;步骤S30、基于所述断点开启请求以及调试端口与JVM调试代理服务器握手连接后,所述JVM调试代理服务器与JVM虚拟机握手连接;步骤S40、通过所述JVM虚拟机获取事件管理器,删除所述事件管理器下的所有旧断点,基于所述断点配置参数在事件管理器中创建并激活新断点;步骤S50、对各所述新断点关联的断点请求进行堵塞,等待调试事件;步骤S60、基于所述调试事件对代码在线调试。本发明专利技术的优点在于:极大的提升了代码调试的便捷性以及效率。

【技术实现步骤摘要】

本专利技术涉及计算机,特别指一种代码在线调试方法


技术介绍

1、目前,java web服务多以tomcat作为容器启动,由于缺乏实际业务数据的验证,很多功能在测试环境上没有办法及时发现,从而导致问题流露到生产环境,因此需要对相关问题进行定位排查,但传统方法存在如下缺点:

2、1、当问题频繁出现时,而测试环境又无法模拟到问题,开发人员只能通过在代码中增加日志打印的方法,去寻找可能造成问题的原因,由于日志打印的代码调整后,又需要重新部署到tomcat容器里,而重新启动java web服务的过程又影响其他用户使用,这在没有集群的场景下,无形中给开发人员排查问题造成了困难;2、有时即使增加了日志打印,但由于一些安全原因比较难进入服务器查看相关日志,只能由安全管理部门的人在其他时间拷贝给开发人员,严重影响问题处理效率。

3、因此,如何提供一种代码在线调试方法,实现提升代码调试的便捷性以及效率,成为一个亟待解决的技术问题。


技术实现思路

1、本专利技术要解决的技术问题,在于提供一种代码在线调试方法,实现提升代码调试的便捷性以及效率。

2、本专利技术是这样实现的:一种代码在线调试方法,包括如下步骤:

3、步骤s10、基于jpda协议开启jvm调试代理服务器的调试端口;

4、步骤s20、接收浏览器基于http协议发送的断点开启请求,解析所述断点开启请求获取断点配置参数;

5、步骤s30、基于所述断点开启请求以及调试端口与jvm调试代理服务器握手连接后,所述jvm调试代理服务器与jvm虚拟机握手连接;

6、步骤s40、通过所述jvm虚拟机获取事件管理器,删除所述事件管理器下的所有旧断点,基于所述断点配置参数在事件管理器中创建并激活新断点;

7、步骤s50、对各所述新断点关联的断点请求进行堵塞,等待调试事件;

8、步骤s60、基于所述调试事件对代码在线调试。

9、进一步的,所述步骤s10具体为:

10、基于jpda协议对jvm调试代理服务器中,tomcat安装目录下的bin目录的catalina.bat批处理文件进行配置,进而开启所述jvm调试代理服务器的调试端口。

11、进一步的,所述步骤s20具体为:

12、接收浏览器基于http协议发送的断点开启请求,解析所述断点开启请求获取至少包括需要调试的类名、服务器ip、断点标签、服务端口以及代码位置的断点配置参数,并对所述断点配置参数进行齐全性与合法性的校验。

13、进一步的,所述步骤s30具体包括:

14、步骤s31、基于所述断点开启请求以及调试端口向jvm调试代理服务器发送第一握手请求;

15、步骤s32、所述jvm调试代理服务器对接收的第一握手请求进行校验后,反馈第一握手响应,进而建立握手连接;

16、步骤s33、所述jvm调试代理服务器向jvm虚拟机发送第二握手请求;

17、步骤s34、所述jvm虚拟机对接收的第二握手请求进行校验后,反馈第二握手响应,进而建立握手连接。

18、进一步的,所述步骤s40具体包括:

19、步骤s41、向所述jvm调试代理服务器发送事件管理器获取请求,所述jvm调试代理服务器将接收的事件管理器获取请求转发给jvm虚拟机;

20、步骤s42、所述jvm虚拟机接收到事件管理器获取请求后,通过所述jvm调试代理服务器返回事件管理器;

21、步骤s43、删除所述事件管理器下的所有旧断点;

22、步骤s44、从所述jvm虚拟机获取线程引用对象以及位置对象;

23、步骤s45、基于所述断点配置参数、线程引用对象以及位置对象,在所述事件管理器中创建并激活新断点。

24、进一步的,所述步骤s60具体为:

25、基于所述调试事件对代码进行单步调试或者并发调试的在线调试。

26、进一步的,所述单步调试具体为:

27、接收浏览器基于http协议发送的单步调试请求,对所述单步调试请求携带的调试参数进行校验后,在所述事件管理器中创建单步调试事件,并设置所述单步调试事件的调试策略为线程调试;

28、从所述jvm虚拟机中获取事件队列,从所述事件队列中获取单步调试事件,从所述单步调试事件的线程中获取线程引用,通过所述线程引用获取栈帧信息,从所述栈帧信息获取引用对象并解析得到变量数据;

29、从jdi提供的objectreference对象里取出所有的field对象,循环遍历各所述filed对象下的value,将所述field对象和value重新整合到需要返回的map中;

30、基于所述变量数据以及map对代码进行调试。

31、进一步的,所述调试参数至少包括需要调试的类名以及断点标签。

32、进一步的,所述并发调试具体为:

33、通过所述jvm调试代理服务器对接收的若干个调试请求进行并发调试。

34、本专利技术的优点在于:

35、1、通过开启jvm调试代理服务器的调试端口,接收浏览器基于http协议发送的断点开启请求并解析获取断点配置参数,接着基于断点开启请求以及调试端口与jvm调试代理服务器握手连接后,jvm调试代理服务器与jvm虚拟机握手连接,接着通过jvm虚拟机获取事件管理器,删除事件管理器下的所有旧断点,基于断点配置参数在事件管理器中创建并激活新断点,接着对各新断点关联的断点请求进行堵塞,等待调试事件,最后基于调试事件对代码进行单步调试或者并发调试的在线调试;即在线对代码进行调试,无需像传统上在代码中增加日志打印,也无需进入服务器查看相关日志,进而极大的提升了代码调试的便捷性以及效率。

36、2、本专利技术使用浏览器或者http工具即可进行在线的代码调试,操作便利。

37、3、本专利技术在不进入服务器的情况下,可在任意能连接到服务器的内网的电脑上执行远程调试,一方面可以使用业务数据模拟问题,另一方面也不需要依赖他人提供日志文件,大大提高了出现问题时调试的时效性。

38、4、由于http断点可以在任何操作系统和设备上使用,只要有一个支持http协议的浏览器即可,这增加了系统的灵活器和可访问性,无论开发者使用windows、macos、linux还是移动设备,都可以使用。

39、5、浏览器或者工具断点时,可以查看当前所有的变量信息以及循环中的变量。

本文档来自技高网...

【技术保护点】

1.一种代码在线调试方法,其特征在于:包括如下步骤:

2.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤S10具体为:

3.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤S20具体为:

4.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤S30具体包括:

5.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤S40具体包括:

6.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤S60具体为:

7.如权利要求6所述的一种代码在线调试方法,其特征在于:所述单步调试具体为:

8.如权利要求7所述的一种代码在线调试方法,其特征在于:所述调试参数至少包括需要调试的类名以及断点标签。

9.如权利要求6所述的一种代码在线调试方法,其特征在于:所述并发调试具体为:

【技术特征摘要】

1.一种代码在线调试方法,其特征在于:包括如下步骤:

2.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤s10具体为:

3.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤s20具体为:

4.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤s30具体包括:

5.如权利要求1所述的一种代码在线调试方法,其特征在于:所述步骤...

【专利技术属性】
技术研发人员:黄家昌陈文杰杨辉王志坚林鑫
申请(专利权)人:福建亿能达信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1