一种Java代码远程调试方法、装置、系统、设备和介质
技术领域
本发明涉及计算机技术领域,特别涉及一种基于web支持热加载的Java代码远程调试方法、装置、系统、设备和介质。
背景技术
日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试。但生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试。从而目前大部分公司的代码被管制于公司开发者的内部环境中,禁止流入与公有网络相通的外部环境;即使允许将代码拷贝至生产环境,在生产环境下使用编码工具调试代码也将消耗大量服务器资源,导致在生产环境下的问题定位存在很大的难度。
如图1所示,目前java代码的调试流程都是基于市面上的编码工具实现,通过部署编码工具,并且通过文件的方式部署上全量java源码后,才可以进行java代码的调试。
在上述条件的限制下,目前大部分公司都是采用搭建一套与用户现场生产环境尽可能相似的仿真环境做为调试环境,对调试代码存在的问题进行定位。但目前这种仿真环境搭建工作量大,且由于仿真环境无法做到完全与现场生产环境相同,由于这种环境差异的存在往往导致很难对调试代码存在的问题进行定位。
发明内容
本发明要解决的技术问题,在于提供一种Java代码远程调试方法、装置、系统、设备和介质,通过远程调试控制器控制java虚拟机直接运行生产环境的代码,无需另外仿真生产环境,且远程调试控制器实现了web界面,供用户通过浏览器端实现远程调试,大大简化了调试工作,方便问题定位。
第一方面,本发明提供了一种Java代码远程调试方法,其特征在于:包括下述步骤:
S1、通过一个独立运行的远程调试控制器与java虚拟机的jpda接口对接,该远程调试控制器实现了web界面,所述java虚拟机就是生产环境;
S2、在调试状态下,所述远程调试控制器通过web界面接收浏览器端的代码文件名称,根据代码文件名称在所述java虚拟机查找需要加载的调式代码,并通过web界面展示给浏览器端,供用户在浏览器端下达调试指令;
S3、所述远程调试控制器根据调试指令监控与控制所述java虚拟机运行调式代码的状态并进行调试,以得到调试结果,并将调试结果通过所述浏览器反馈给用户。
第二方面,本发明提供了一种Java代码远程调试装置,安装于独立运行的远程调试控制器中,包括:
接口模块,用于与java虚拟机的jpda接口对接;
web界面,用于接收浏览器端的代码文件名称和调试指令;
查找模块,用于根据代码文件名称在所述java虚拟机查找需要加载的调式代码,并通过所述web界面展示给浏览器端;
监控模块,用于监控所述java虚拟机运行调式代码的各个进程状态;
控制模块,用于控制所述java虚拟机在各个进程的调式代码上打上断点以进行调试,得到调试结果;
反馈模块,用于将调试结果反馈到浏览器端。
第三方面,本发明提供了一种一种Java代码远程调试系统,包括:
java虚拟机,运行生产环境的代码;
远程调试控制器,用于与所述java虚拟机的jpda接口对接,独立运行并实现了web界面;且在调试状态下,通过web界面接收浏览器端的代码文件名称,根据代码文件名称在所述java虚拟机查找需要加载的调式代码,并通过web界面展示给浏览器端,供用户在浏览器端下达调试指令;再根据调试指令监控与控制所述java虚拟机运行调式代码的状态并进行调式,以得到调试结果,并将调试结果通过所述浏览器反馈给用户;
浏览器端,用于接收用户输入的代码文件名称和远程调试控制器展示的调式代码;还用于接收用户下达的调试指令以及由远程调试控制器反馈的调试结果。
第四方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。
第五方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:通过远程调试控制器控制java虚拟机直接运行生产环境的代码,无需另外仿真生产环境,无需利用编码工具,即可解决现有在生产环境无法调试代码的常见开发问题,也减少了仿真环境搭建等一系列复杂工作。通过在远程调试控制器实现web界面,实现了用户通过浏览器端即可进行远程调试,用户只需要安装远程调试控制器,即可做到动态(在调试时也可以做到及时编码,及时生效)的源码调试,且即插即用,在合理的管控下不需要担心源码被放置到外网的问题,大大简化了调试工作,方便问题定位。并且还通过热加载调试插件插入在所述java虚拟机的调式代码中,使用调试的重定义功能代替所述java虚拟机的java热加载的类加载器功能,解决了热加载框架在代码热加载后必须重启而导致无法及时调试的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为目前java代码的调试框架示意图;
图2为本发明系统的框架示意图;
图3为本发明实施例一中方法中的流程图;
图4为本发明实施例二中装置的结构示意图;
图5为本发明实施例三中电子设备的结构示意图;
图6为本发明实施例四中介质的结构示意图。
具体实施方式
本申请实施例通过提供一种Java代码远程调试方法、装置、系统、设备及介质,以解决目前通过编码工具调试需要搭建仿真环境导致的工作量大,且无法完全解决由于环境差异导致的问题定位的难题。
本申请实施例中的技术方案,总体思路如下:通过远程调试控制器控制java虚拟机直接运行生产环境的代码,无需另外仿真生产环境,解决了现有在生产环境无法调试代码的常见开发问题,也减少了仿真环境搭建等一系列复杂工作。通过在远程调试控制器实现web界面,实现了用户通过浏览器端即可进行远程调试,用户只需要安装远程调试控制器,即可做到动态的源码调试,且即插即用,在合理的管控下不需要担心源码被放置到外网的问题,大大简化了调试工作,方便问题定位。并且还通过热加载调试插件插入在所述java虚拟机的调式代码中,使用调试的重定义功能代替所述java虚拟机的java热加载的类加载器功能,解决了热加载框架在代码热加载后必须重启而导致无法及时调试的问题。
在介绍具体实施例之前,先介绍本申请实施例方法所对应的系统框架,如图1所示,系统大概分三个部分:
java虚拟机,运行生产环境的代码,无需另外模拟或仿真生产环境;
远程调试控制器,用于与所述java虚拟机对接,能独立运行并实现了web界面;
浏览器端,用于接收用户输入的调试指令以及由远程调试控制器反馈的调试结果。
在调试状态下,用户通过浏览器输入需要调试的代码文件名称,再传递给远程调试控制器,远程调试控制器即可根据代码文件名称在所述java虚拟机查找需要加载的调式代码,并通过web界面展示给浏览器端,用户在浏览器端下达调试指令;远程调试控制器根据调试指令监控与控制所述java虚拟机运行调式代码的状态并进行调式,以得到调试结果,并将调试结果通过所述浏览器反馈给用户。
实施例一
本实施例提供一种Java代码远程调试方法,运用于远程调试控制器,如图2所示,包括下述步骤:
S1、通过一个独立运行的远程调试控制器与java虚拟机的jpda接口对接,该远程调试控制器实现了web界面,所述java虚拟机就是生产环境,即运行生产环境的代码;
S2、在调试状态下,所述远程调试控制器通过web界面接收浏览器端的代码文件名称,根据代码文件名称在所述java虚拟机查找需要加载的调式代码,并通过web界面展示给浏览器端,供用户在浏览器端下达调试指令;
S3、所述远程调试控制器根据调试指令监控与控制所述java虚拟机运行调式代码的状态并进行调试,以得到调试结果,并将调试结果通过所述浏览器反馈给用户。
其中,作为本实施例的一种更优的实现方式,由于调试的重定义功能与java的热加载功能存在冲突,实际运行时支持热加载的类加载器若以热加载的方式重新加载了新的逻辑代码,将会导致原重定义功能失效。因此,在所述S2中,还通过热加载调试插件插入在所述java虚拟机的调式代码中,即覆盖在被调整执行程序中,使用调试的重定义功能代替所述java虚拟机的java热加载的类加载器功能。从而有效防止由虚拟机自行选择热加载后,导致的调试功能失效的问题发生。
所述远程调试控制器还提供可视化参考资料,供用户通过浏览器端对所述web界面进行可视化操作。用户即可直接在代码上打断点,进行代码调试。
基于同一发明构思,本申请还提供了与实施例一中的方法对应的装置,详见实施例二。
实施例二
如图3所示,在本实施例中提供了一种Java代码远程调试装置,安装于独立运行的远程调试控制器中,包括:
接口模块,用于与java虚拟机的jpda接口对接;
web界面,用于接收浏览器端的代码文件名称和调试指令;
查找模块,用于根据代码文件名称在所述java虚拟机查找需要加载的调式代码,并通过所述web界面展示给浏览器端;
监控模块,用于监控所述java虚拟机运行调式代码的各个进程状态;
控制模块,用于控制所述java虚拟机在各个进程的调式代码上打上断点以进行调试,得到调试结果;
反馈模块,用于将调试结果反馈到浏览器端。
其中,所述web界面还提供可视化参考资料,供用户通过浏览器端对所述web界面进行可视化操作。
其中,作为本实施例的一种更优的实现方式(更为具体的实现方式),所述装置还包括:
由于本发明实施例二所介绍的装置,为实施本发明实施例一的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例三。
实施例三
在本实施例中提供了一种Java代码远程调试系统,对应于如图2所示的系统,包括:
java虚拟机,运行生产环境的代码;
远程调试控制器,用于与所述java虚拟机的jpda接口对接,独立运行并实现了web界面;且在调试状态下,通过web界面接收浏览器端的代码文件名称,根据代码文件名称在所述java虚拟机查找需要加载的调式代码,并通过web界面展示给浏览器端,供用户在浏览器端下达调试指令;再根据调试指令监控与控制所述java虚拟机运行调式代码的状态并进行调式,以得到调试结果,并将调试结果通过所述浏览器反馈给用户;所述web界面还提供可视化参考资料,供用户通过浏览器端对所述web界面进行可视化操作。
浏览器端,用于接收用户输入的代码文件名称和远程调试控制器展示的调式代码;还用于接收用户下达的调试指令以及由远程调试控制器反馈的调试结果。
其中,作为本实施例的一种更优的实现方式,由于调试的重定义功能与java的热加载功能存在冲突,实际运行时支持热加载的类加载器若以热加载的方式重新加载了新的逻辑代码,将会导致原重定义功能失效。因此,还通过热加载调试插件插入在所述java虚拟机的调式代码中,即覆盖在被调整执行程序中,使用调试的重定义功能代替所述java虚拟机的java热加载的类加载器功能。从而有效防止由虚拟机自行选择热加载后,导致的调试功能失效的问题发生。
基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例四。
实施例四
本实施例提供了一种电子设备,如图5所示,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,可以实现实施例一中任一实施方式。
由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例五。
实施例五
本实施例提供一种计算机可读存储介质,如图6所示,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现实施例一中任一实施方式。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:本申请实施例提供的方法、装置、系统、设备及介质通过远程调试控制器控制java虚拟机直接运行生产环境的代码,无需另外仿真生产环境,无需利用编码工具,即可解决现有在生产环境无法调试代码的常见开发问题,也减少了仿真环境搭建等一系列复杂工作。通过在远程调试控制器实现web界面,实现了用户通过浏览器端即可进行远程调试,用户只需要安装远程调试控制器,即可做到动态的源码调试,且即插即用,在合理的管控下不需要担心源码被放置到外网的问题,大大简化了调试工作,方便问题定位。并且还通过热加载调试插件插入在所述java虚拟机的调式代码中,使用调试的重定义功能代替所述java虚拟机的java热加载的类加载器功能,解决了热加载框架在代码热加载后必须重启而导致无法及时调试的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置或系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。