【技术实现步骤摘要】
一种程序指定数据输出方法和装置
本公开涉计算机
,尤其涉及一种程序指定数据输出方法、装置、电子设备及存储介质。
技术介绍
在业务系统正式上线投入运行后,可能会出现各种各样的异常情况,需要对线上程序进行排查,在排查线上问题时,作为开发者,通常想快速得到一些日志数据,日志中可包括线上运行某个方法的真实耗时,线上接收的某些用户请求的真实返回值,等等。在现有方案中,通常使用AOP方案(面向切面编程)解决该问题,AOP是Java中的一种打印方法执行时间、参数、返回值的常用解决方案。但AOP方案需要依赖特定的框架,需要提前好编写相应的代码到工程代码中。如果线上程序没有提前写入AOP方案的特定框架,则需要将代码修改完毕后再重新启动业务系统的运行,耗时较久。
技术实现思路
针对上述技术问题,本公开实施例提供一种程序指定数据输出方法,技术方案如下:根据本公开实施例的第一方面,提供一种程序指定数据输出方法,所述方法包括:所述输出控制程序通过指定接口接收用户选定的目标进程中的目标方法,并通过所述通 ...
【技术保护点】
1.一种程序指定数据输出方法,其特征在于,所述方法包括:/n输出控制程序通过指定接口接收用户选定的目标进程中的目标方法,获取所述目标方法的原字节码,其中,所述输出控制程序与待检测程序的目标进程之间预先建立了通信通道,所述待检测程序为运行中的线上程序;/n输出控制程序调用字节码增强工具,依据预置的指定数据输出逻辑修改所述原字节码,得到所述目标方法的具有指定数据输出功能的新字节码;/n通过所述通信通道将所述新字节码注入所述目标进程,以所述新字节码替换所述原字节码,并接收所述目标方法的新字节码运行时输出的指定数据。/n
【技术特征摘要】
1.一种程序指定数据输出方法,其特征在于,所述方法包括:
输出控制程序通过指定接口接收用户选定的目标进程中的目标方法,获取所述目标方法的原字节码,其中,所述输出控制程序与待检测程序的目标进程之间预先建立了通信通道,所述待检测程序为运行中的线上程序;
输出控制程序调用字节码增强工具,依据预置的指定数据输出逻辑修改所述原字节码,得到所述目标方法的具有指定数据输出功能的新字节码;
通过所述通信通道将所述新字节码注入所述目标进程,以所述新字节码替换所述原字节码,并接收所述目标方法的新字节码运行时输出的指定数据。
2.如权利要求1所述的方法,其特征在于,所述调用字节码增强工具,依据所述输出控制程序中预置的指定数据输出逻辑修改所述原字节码,得到具有指定数据输出功能的目标方法的新字节码,包括:
调用所述字节码增强工具依据所述输出控制程序中预置的指定数据输出逻辑生成适应于所述目标方法的,具有指定数据输出功能的字节码;
将所述具有指定数据输出功能的字节码插入目标方法的原字节码中,得到具有指定数据输出功能的目标方法的新字节码。
3.如权利要求1所述的方法,其特征在于,所述指定数据的输出逻辑包括:
输出指定方法的开始时间与结束时间,以统计所述指定方法的耗时,和/或输出指定方法的参数及返回值。
4.如权利要求1所述的方法,其特征在于,所述输出控制程序为Javaagent程序,所述输出控制程序与线上程序的目标进程之间建立通信通道的方式,包括:
利用Java虚拟机提供的Attach功能,将所述Javaagent程序与正在运行的业务程序建立通信通道。
5.如权利要求1所述的方法,其特征在于,所述通过所述通信通道将所述新字节码注入所述目标进程,以所述新字节码替换原字节码,包括:
通过所述Javaagent程序确定Instrumentation类库,在所述Instrumentation类库中确定所述目标进程中已加载的...
【专利技术属性】
技术研发人员:刘正阳,
申请(专利权)人:北京达佳互联信息技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。