本发明专利技术涉及一种在源程序层次实现应用程序运算符单步调试的方法,调试人员使用运算符单步调试命令调试应用程序时,调试器执行应用程序进程并搜索应用程序表达式中的运算符,当搜索到一个运算符时,把这个运算符和它的操作数加上标记,调试器暂停;用户继续使用运算符单步调试命令后,先执行加了标记的运算符表达式求值计算,然后取消加了标记的运算符和操作数上的标记,调试器继续执行应用程序进程和搜索下一个运算符,直到调试程序结束。本发明专利技术有益的效果:在于能够方便调试人员在源程序层次可视地跟踪高级语言源程序表达式中各个运算符计算动作的执行流程,在每一个运算符计算动作后可以观察变量的值的改变和计算表达式的计算结果。
【技术实现步骤摘要】
本专利技术涉及了计算机程序调试
,主要是一种在源程序层次实现运算符单步调试的方法。
技术介绍
源程序调试是用来帮助用户在源程序层次上跟踪程序的执行流程,定位程序故障 的一个常用手段和方法。 目前的源程序调试器,在编译源程序时,记录和存储源程序语句的源程序文件的 源文件名和行号,在源程序层次调试程序时,如果执行调试器的单步命令或通过设置断点 方式,可以从程序的开始运行被调试程序,使执行进程暂停在这个程序的第一行有效代 码中,编辑窗口中的这行源代码的开始处用一个箭头来标记执行到的这一代码行。例如 Microsoft Visual C++调试器就是用一个黄色的箭头来标记当前将要执行的代码行。 如果继续执行调试器的单步命令,调试器执行这个程序当前代码行,然后执行进 程又暂停下来,编辑窗口中的这行源代码开始处的箭头就会移动到下一个代码行。 如果每行代码是一个源程序语句,用户就可以在源程序语句级别对程序的执行流 程进行跟踪,查看执行过程中各个变量的值。 在源程序代码的编写时,一条语句可以包含多个表达式,每个表达式可以是多个 运算符和其操作数的有效组合。 在调试程序时,操作者有时希望能够在源程序层次可视地跟踪表达式中各个运算 符和它的相应操作数求值计算的执行流程,或者在源程序层次可视地跟踪语句中多个表达 式求值计算的执行流程。而目前的源程序调试器在解决这类问题时存在困难。
技术实现思路
本专利技术的目的是针对上述现有源程序调试技术缺陷,提供一种在源程序层次实现 运算符单步调试的方法。 实现本专利技术目的采用的技术方案为在解析或编译源程序时,记录和存储表达式 中运算符和相应操作数在源程序中的位置数据;当用户使用运算符单步调试命令时,调试 器执行以下步骤, 步骤1,当用户使用运算符单步调试命令时,启动执行调试对象程序进程,通过调 试对象程序进程实现以下步骤1. 1和步骤1. 2, 步骤1. l,判断调试器是否执行调试对象程序进程至一个运算符,若是则对于调 试器执行调试对象程序进程所至的运算符,获得已存储的该运算符和相应操作数的位置数 据; 步骤1. 2,根据位置数据把该运算符和相应操作数加上标记,并把加上标记后的运 算符和相应操作数的源程序代码在调试器窗口中显示给用户; 步骤2,在步骤1. 2执行完毕后暂停调试对象程序进程,等待用户要求继续执行运算符单步调试命令; 步骤3,当用户要求继续执行运算符单步调试命令时,执行加上标记后的运算符和 相应操作数的求值计算,计算完成后取消标记;然后继续执行调试对象程序进程,返回至步 骤1. 1循环执行以实现对下一个运算符单步调试,直到步骤1. 1判断出调试器执行调试对 象程序进程至没有运算符时为止。 而且,所述表达式中运算符和相应操作数在源程序中的位置数据,包括这个表达 式所在的源程序的源文件名,运算符和相应操作数在源程序文件窗口中的行号,运算符的 字符串在源程序文件窗口中第一个字符列号和最后一个字符列号,相应操作数的字符串在 源程序文件窗口中第一个字符列号和最后一个字符列号。 而且,所述标记包括给运算符的字符串和操作数的字符串加上背景色亮条的高亮 显示。 而且,所述标记包括给运算符的字符串和操作数的字符串颜色反转显示。 而且,所述标记包括给运算符的字符串和操作数的字符串改变字符的字体颜色的高亮显示。 而且,所述标记包括给运算符的字符串和操作数的字符串加上下划线。 而且,所述标记包括给运算符的字符串和操作数的字符串加上字符边框。 而且,所述标记包括修改运算符的字符串和操作数的字符串的字符字体、字符字号或字符字形的高亮显示。 采用本专利技术,能够在源程序层次给当前将要执行的运算符和操作数加上标记,能 够在源程序层次可视地跟踪表达式中运算符和它的操作数求值计算的执行流程,能够在源 程序层次可视地跟踪语句中多个表达式求值计算的执行流程。本专利技术支持用户更快速准确 地定位程序故障,实施简便,效果显著。附图说明 图1为本专利技术中在源程序层次的运算符单步调试方法实施例的软件流程图。 图2为表示本专利技术实施例一中调试对象C语言程序的一部分,一个C语言程序表 达式。 图3为表示本专利技术实施例一中给C语言程序表达式b*c加上颜色反转显示标记。 图4为表示本专利技术实施例一中给C语言程序表达式a_b*c加上颜色反转显示标 记。 图5为表示本专利技术实施例一中给C语言程序表达式d = a_b*c加上颜色反转显示 标记。 图6为表示本专利技术实施例二中调试对象C语言程序的一部分, 一个for循环语句。 图7为表示本专利技术实施例二中给C语言程序循环语句的表达式1加上颜色反转显 示标记。 图8为表示本专利技术实施例二中给C语言程序循环语句的表达式2加上颜色反转显 示标记。 图9为表示本专利技术实施例二中给C语言程序循环语句的循环体语句加上颜色反转 显示标记。 图10为表示本专利技术实施例二中给C语言程序循环语句的表达式3加上颜色反转 显示标记。具体实施例方式参见图l,本专利技术为,在解析或编译 源程序时,记录和存储表达式中运算符和相应操作数在源程序中的位置数据;当用户使用 运算符单步调试命令时,调试器执行以下步骤1、2、3 : 步骤1,当用户使用运算符单步调试命令时,启动执行调试对象程序进程,通过调 试对象程序进程实现以下步骤1. 1和步骤1. 2, 步骤1. l,判断调试器是否执行调试对象程序进程至一个运算符,若是则对于调 试器执行调试对象程序进程所至的运算符,获得已存储的该运算符和相应操作数的位置数 据; 步骤1. 2,根据位置数据把该运算符和相应操作数加上标记,并把加上标记后的运 算符和相应操作数的源程序代码在调试器窗口中显示给用户; 步骤2,在步骤1. 2执行完毕后暂停调试对象程序进程,等待用户要求继续执行运 算符单步调试命令; 步骤3,当用户要求继续执行运算符单步调试命令时,执行加上标记后的运算符和 相应操作数的求值计算,计算完成后取消标记;然后继续执行调试对象程序进程,返回至步 骤1. 1循环执行以实现对下一个运算符单步调试,直到步骤1. 1判断出调试器执行调试对 象程序进程至没有运算符时为止。当步骤l. l判断发现不存在下一个需要单步调试的运算 符,实际实施时可能是用户当前需要检查的表达式已经处理完毕,那么就可以执行其它不 带运算符的源代码进行处理。例如,在c语言中,printf中可以没有运算符,但这类代码也 要执行完毕,调试对象程序进程才结束。 值得注意的是,步骤3中当用户要求继续执行运算符单步调试命令时,步骤1中当 用户使用运算符单步调试命令时,响应此命令的操作不同。可以视为,根据是否有加标记的 运算符和相应操作数,采用不同响应此命令的操作。如果有加标记的运算符和相应操作数, 才执行求值计算和取消标记的操作。如果没有加标记的运算符和相应操作数,则是执行判 断是否有运算符和相应加标记操作。具体实施时,运算符单步调试命令据此汇编即可。 为了准确考察所述表达式中运算符和相应操作数在源程序中的位置数据,本专利技术 还提出,事先存储的位置数据包括有这个表达式所在的源程序的源文件名,运算符和相应 操作数在源程序文件窗口中的行号,运算符的字符串在源程序文件窗口中第一个字符列号 和最后一个字符列号,相应操作数的字符串在源程序文件窗口中第一本文档来自技高网...
【技术保护点】
一种在源程序层次实现运算符单步调试的方法,其特征在于:在解析或编译源程序时,记录和存储表达式中运算符和相应操作数在源程序中的位置数据;调试器执行以下步骤,步骤1,当用户使用运算符单步调试命令时,启动执行调试对象程序进程,通过调试对象程序进程实现以下步骤1.1和步骤1.2,步骤1.1,判断调试器是否执行调试对象程序进程至一个运算符,若是则对于调试器执行调试对象程序进程所至的运算符,获得已存储的该运算符和相应操作数的位置数据;步骤1.2,根据位置数据把该运算符和相应操作数加上标记,并把加上标记后的运算符和相应操作数的源程序代码在调试器窗口中显示给用户;步骤2,在步骤1.2执行完毕后暂停调试对象程序进程,等待用户要求继续执行运算符单步调试命令;步骤3,当用户要求继续执行运算符单步调试命令时,执行加上标记后的运算符和相应操作数的求值计算,计算完成后取消标记;然后继续执行调试对象程序进程,返回至步骤1.1循环执行以实现对下一个运算符单步调试,直到步骤1.1判断出调试器执行调试对象程序进程至没有运算符时为止。
【技术特征摘要】
【专利技术属性】
技术研发人员:张曙光,
申请(专利权)人:张曙光,
类型:发明
国别省市:83[中国|武汉]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。