用于程序调试中的变量跟踪的方法和系统的制作方法_5

文档序号:9921952阅读:来源:国知局
面的指令。
[0090]计算机可读程序指令也可加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0091]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0092]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
【主权项】
1.一种用于程序调试中的变量跟踪的方法,包括: 确定待跟踪的第一变量以及与所述第一变量相关联的待监测的第一表达式; 对所调试的程序代码执行逆向扫描以搜索对所述第一变量进行赋值的赋值表达式;以及 响应于找到所述赋值表达式,在包含所述赋值表达式的赋值语句之后,设置与所述第一表达式相关联的监测点以便检查所述第一表达式是否成立。2.根据权利要求1所述的方法,其中所述方法被迭代地执行,并且其中在所述方法的下一轮次执行中,确定待跟踪的第一变量以及与所述第一变量相关联的待监测的第一表达式包括: 基于所述方法的当前轮次执行中的所述第一表达式和所述赋值表达式来确定第二表达式,以作为在所述方法的下一轮次执行中待监测的所述第一表达式,其中在所述当前轮次执行中,所述第二表达式在所述赋值语句之前的语义与所述第一表达式在所述赋值语句之后的语义相同。3.根据权利要求2所述的方法,其中基于所述方法的当前轮次执行中的所述第一表达式和所述赋值表达式来确定第二表达式包括: 响应于在所述当前轮次执行中所述赋值表达式中所包含的变量只有所述第一变量,利用所述当前轮次中的所述赋值表达式替换所述第一表达式中的所述第一变量,以确定所述第二表达式。4.根据权利要求2所述的方法,其中在所述方法的下一轮次执行中,确定待跟踪的第一变量以及与所述第一变量相关联的待监测的第一表达式还包括: 响应于所述当前轮次执行中的所述赋值表达式涉及不同于所述第一变量的第二变量,在所述方法的下一轮次执行中将所述第二变量确定为待跟踪的所述第一变量; 并且其中基于所述方法的当前轮次执行中的所述第一表达式和所述赋值表达式来确定第二表达式包括:利用所述第二变量替换所述当前轮次执行中的所述第一表达式中的所述第一变量以确定所述第二表达式。5.根据权利要求4所述的方法,其中所述第二变量是由所述赋值表达式所包含的赋值函数返回的变量。6.根据权利要求1所述的方法,其中所述逆向扫描在所述程序代码的当前函数中执行,并且其中所述赋值表达式包含赋值函数,所述方法还包括: 从所述当前函数跳转到所述赋值函数,以便执行对所述程序代码的后续逆向扫描。7.根据权利要求1所述的方法,还包括: 在所述逆向扫描之前,在所述程序代码中确定所述第一变量的别名变量,所述第一变量和所述别名变量与相同的存储地址相关联, 其中对所调试的程序代码执行逆向扫描以搜索对所述第一变量进行赋值的赋值表达式包括:搜索对所述别名变量进行赋值的赋值表达式。8.根据权利要求7所述的方法,其中在所述程序代码中确定所述第一变量的别名变量包括: 基于与所述第一变量相关联的以下至少一项来确定所述别名变量:地址引用,指针,联合,以及对全局变量的修改。9.根据权利要求2所述的方法,还包括: 在所述逆向搜索之前,收集与所述赋值表达式相关联的控制流的运行时信息, 其中基于所述方法的当前轮次执行中的所述第一表达式和所述赋值表达式来确定第二表达式包括:进一步基于所述运行时信息来确定所述第二表达式。10.根据权利要求9所述的方法,其中收集与所述赋值表达式相关联的控制流的运行时信息包括:响应于所述赋值表达式被包含在循环控制流中,确定所述赋值表达式被执行的循环轮次, 并且其中进一步基于所述运行时信息来确定所述第二表达式包括:基于所述循环轮次来确定所述第二表达式。11.一种用于程序调试中的变量跟踪的系统,包括: 目标确定单元,被配置为确定待跟踪的第一变量以及与所述第一变量相关联的待监测的第一表达式; 扫描单元,被配置为对所调试的程序代码执行逆向扫描以搜索对所述第一变量进行赋值的赋值表达式;以及 监测点设置单元,被配置为响应于找到所述赋值表达式,在包含所述赋值表达式的赋值语句之后,设置与所述第一表达式相关联的监测点以便检查所述第一表达式是否成立。12.根据权利要求11所述的系统,还包括: 目标表达式更新单元,被配置为基于所述第一表达式和所述赋值表达式来确定第二表达式,并且将所述第二表达式输入所述目标确定单元以作为后续逆向扫描中待监测的所述第一表达式,所述第二表达式在所述赋值语句之前的语义与所述第一表达式在所述赋值语句之后的语义相同。13.根据权利要求12所述的系统,其中所述目标表达式更新单元包括: 第一替换单元,被配置为响应于在当前的所述逆向扫描中搜索到的所述赋值表达式中所包含的变量只有所述第一变量,利用所述赋值表达式替换所述第一表达式中的所述第一变量,以确定所述第二表达式。14.根据权利要求12所述的系统,还包括: 目标变量更新单元,被配置为响应于在当前的所述逆向扫描中搜索到的所述赋值表达式涉及不同于所述第一变量的第二变量,将所述第二变量输入所述目标确定单元以作为所述后续逆向扫描中待跟踪的所述第一变量, 其中所述目标表达式更新单元包括第二替换单元,被配置为利用所述第二变量替换当前的所述逆向扫描中的所述第一表达式中的所述第一变量以确定所述第二表达式。15.根据权利要求14所述的系统,其中所述第二变量是由所述赋值表达式所包含的赋值函数返回的变量。16.根据权利要求11所述的系统,其中所述逆向扫描在所述程序代码的当前函数中执行,并且其中所述赋值表达式包含赋值函数,所述系统还包括: 目标函数更新单元,被配置为从所述当前函数跳转到所述赋值函数,以便执行对所述程序代码的后续逆向扫描。17.根据权利要求11所述的系统,还包括: 别名变量确定单元,被配置为在所述逆向扫描之前,在所述程序代码中确定所述第一变量的别名变量,所述第一变量和所述别名变量与相同的存储地址相关联, 其中所述扫描单元包括:别名变量扫描单元,被配置为搜索对所述别名变量进行赋值的赋值表达式。18.根据权利要求17所述的系统,其中所述别名变量确定单元被配置为基于与所述第一变量相关联的以下至少一项来确定所述别名变量:地址引用,指针,联合,以及对全局变量的修改。19.根据权利要求12所述的系统,还包括: 控制流信息收集单元,被配置为在所述逆向搜索之前,收集与所述赋值表达式相关联的控制流的运行时信息, 其中所述目标表达式更新单元包括:第一更新单元,被配置为进一步基于所述运行时信息来确定所述第二表达式。20.根据权利要求19所述的系统,其中所述控制流信息收集单元包括:循环轮次确定单元,被配置为响应于所述赋值表达式被包含在循环控制流中,确定所述赋值表达式被执行的循环轮次, 并且其中所述第一更新单元包括:第二更新单元,被配置为基于所述循环轮次来确定所述第二表达式。
【专利摘要】本公开内容涉及用于程序调试中的变量跟踪的方法和系统。一个实施例公开了一种用于程序调试中的变量跟踪的方法。该方法包括:确定待跟踪的第一变量以及与所述第一变量相关联的待监测的第一表达式;对所调试的程序代码执行逆向扫描以搜索对所述第一变量进行赋值的赋值表达式;以及响应于找到所述赋值表达式,在包含所述赋值表达式的赋值语句之后,设置与所述第一表达式相关联的监测点以便检查所述第一表达式是否成立。还描述了相应的系统。
【IPC分类】G06F11/36
【公开号】CN105701006
【申请号】CN201410710926
【发明人】官孝峰, 张玉珩, 纪金松, 毛一赠
【申请人】国际商业机器公司
【公开日】2016年6月22日
【申请日】2014年11月28日
【公告号】US20160154726
当前第5页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1