System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及程序自动化测试领域,特别涉及一种程序中的变量跟踪方法、系统、终端及存储介质。
技术介绍
1、以集成开发环境visual studio为例,调试跟踪一个变量的值变化,操作流程为:先在需要关心的变量的初始化位置添加断点,然后启动调试,在变量的代码位置命中断点后获取变量的内存地址,在断点界面新建数据断点填写内存地址,运行过程中如果改变量的内存值被修改了visual studio调试器会在修改的地方阻塞,从而跟踪到改变量的值是在哪里被修改了。
2、但当代码量很多,使用此方式必须使用集成开发环境运行代码来进行跟踪,同时每次执行跟踪变量,都需要手动去找到变量的内存地址来添加断点,操作很繁琐而且有局限性。
技术实现思路
1、本申请实施例的目的在于提供一种程序中的变量跟踪方法、系统、终端及存储介质,使得提高跟踪变量变化的便捷性,同时可在生成环境使用而不依赖集成开发环境或调试工具,提高了分析软件问题的效率。
2、为解决上述技术问题,本申请的实施例提供了一种程序中的变量跟踪方法,方法包括:
3、确定目标代码的至少一个目标变量;
4、基于数据字典变量类构建字典变量,并使所述字典变量替换所述目标变量,为所述字典变量设置回调函数;
5、编译运行所述目标代码,若所述字典变量发生改变,调用回调函数,输出日志信息以确定所述目标变量传递关系。
6、本申请的实施例还提供了一种程序中的变量跟踪系统,包括:
7、程序编译单
8、替换单元,用于基于数据字典变量类构建字典变量,并使所述字典变量替换所述目标变量,为所述字典变量设置回调函数;
9、处理单元,用于编译运行所述目标代码,若所述字典变量发生改变,调用回调函数,输出日志信息以确定所述目标变量传递关系。
10、本申请的实施例还提供了一种终端,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的程序中的变量跟踪方法。
11、本申请的实施例还提供了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述的程序中的变量跟踪方法。
12、本申请实施例相对于现有技术而言,通过使用数据字典来跟踪一个变量的值变化,只需要给字典变量设置回调函数,代码运行过程中该变量值或内存被修改后监听函数就会被触发。直接在监听函数中输出日志。通过日志信息可以监控变量赋值操作,观察日志中记录的字典变量的值状态是否和预期的值一致、函数调用堆栈是否和预期的一致来分析问题。字典变量替换传统的c++语言变量只需要修改变量类型即可,使用方便。不管是在调试状态还是在生产环境的运行状态都可以进行跟踪值的变化,极大方便的开发者进行排查软件问题。
13、另外,基于数据字典变量类构建字典变量,并使所述字典变量替换所述目标变量,包括:通过所述数据字典变量类的type方法获取所述目标变量的类型,使用所述数据字典变量类的value方法获取所述目标变量的值;生成对应类型的所述数字字典的对象,并将所述目标变量替换为所述字典变量。
14、另外,在基于数据字典构建字典变量,并使所述字典变量替换所述目标变量之后,该方法还包括:基于所述数据字典变量类模拟所述目标代码的运算操作;调用所述数据字典变量类的setlistener方法,获取所述回调函数的指针,给所述字典变量设置所述回调函数。
15、另外,所述若所述字典变量发生改变,调用回调函数,输出日志信息,包括:若所述字典变量进行赋值操作,触发回调函数,记录变量状态信息并保存到日志;基于所述日志信息确定所述数据字典变量的状态信息;根据所述状态信息确定所述字典变量对应的所述目标变量的变量传递关系。
16、另外,所述基于所述日志信息确定所述数据字典变量的状态信息,包括:根据所述日志信息确定所述字典变量的值状态、cpu状态、时间戳中的至少一种;以及根据所述日志信息确定所述回调函数的调用堆栈。
本文档来自技高网...【技术保护点】
1.一种程序中的变量跟踪方法,其特征在于,所述方法包括:
2.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,所述目标变量包括入参、成员变量、静态变量和返回值中的至少一种。
3.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,所述基于数据字典变量类构建字典变量,并使所述字典变量替换所述目标变量,为所述字典变量设置回调函数,包括:
4.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,在基于数据字典构建字典变量,并使所述字典变量替换所述目标变量之后,所述方法还包括:
5.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,所述若所述字典变量发生改变,调用回调函数,输出日志信息以确定所述目标变量传递关系,包括:
6.根据权利要求5所述程序中的变量跟踪方法,其特征在于,所述基于所述日志信息确定所述数据字典变量的状态信息,包括:
7.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,在所述调用回调函数,输出日志信息后,所述方法还包括:
8.一种程序中的变量跟踪系统,其特征在于,所述系
9.一种终端,其特征在于,包括:
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的程序中的变量跟踪方法。
...【技术特征摘要】
1.一种程序中的变量跟踪方法,其特征在于,所述方法包括:
2.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,所述目标变量包括入参、成员变量、静态变量和返回值中的至少一种。
3.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,所述基于数据字典变量类构建字典变量,并使所述字典变量替换所述目标变量,为所述字典变量设置回调函数,包括:
4.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,在基于数据字典构建字典变量,并使所述字典变量替换所述目标变量之后,所述方法还包括:
5.根据权利要求1所述的程序中的变量跟踪方法,其特征在于,所述若所述...
【专利技术属性】
技术研发人员:请求不公布姓名,请求不公布姓名,请求不公布姓名,请求不公布姓名,请求不公布姓名,
申请(专利权)人:上海科梁信息科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。