程序跑飞检测方法及其设备技术

技术编号:4165157 阅读:410 留言:0更新日期:2012-04-11 18:40
公开了一种检测程序跑飞的方法及其设备,能够准确检测程序跑飞的具体的位置。该方法包括步骤:执行程序中包含的代码;判断与代码相关的程序计数器地址是否在事先计算的地址范围之内;以及在程序计数器地址在事先计算的地址范围之外的情况下,确定程序跑飞。根据本发明专利技术的实施例,在程序跑飞时,能够准确检测到程序跑飞,并且及时向程序员通知程序跑飞以及执行履历,提高了程序开发效率。

Program running flying detecting method and equipment thereof

The invention discloses a method and a device for detecting the running of a program, which can accurately detect the specific position of the program flying. The method comprises the following steps: contain executable code in a program; judgment associated with the code within the program counter address is calculated beforehand address range; and in the program counter address in addition to the prior computation of the address ranges, determine the program running. According to the embodiment of the invention, when the program runs, the program can detect the flight of the program accurately, and notify the programmer in time to run the program and execute the resume, thereby improving the efficiency of the program development.

【技术实现步骤摘要】

本专利技术涉及调试过程中程序跑飞(program runout)的检测,具体涉 及一种程序跑飞检测方法及其设备,它能够准确检测并向用户通知程序 跑飞。
技术介绍
在程序开发过程中,需要对开发的程序进行调试,以便发现程序能 否正常运行。所谓程序跑飞就是程序计数器(PC: program counter)指 针因为某种原因没有按照预定的程序变更,或者PC指针指向一个不确 定的或者根本就没有存放用户代码的程序存贮空间,造成PC指针根本 无法恢复到用户代码空间之内。出现程序跑飞之后,通常是系统复位, 重新开始执行程序。用来检测程序跑飞的一种解决方案是判断执行的代码的地址是否在 ROM的地址空间范围之内,例如0000H FFFFH。如果在ROM的地址 空间范围之内,则认为没有跑飞,否则认为出现了程序跑飞。但是,众 所周知,ROM中既存储有程序代码,又存储有数据代码,还存在一些未 使用的空间,如果执行的代码的所对应的地址在ROM内部,但是并没 有按照想要的情况运行,则不容易判断出程序是否真正跑飞,或者说用 户可能注意不到程序跑飞。在这种情况下,只能通过程序执行的结果来判断程序是否跑飞,例 如死机等等。 一旦出现这样的情况,程序员无法确定到底是程序的什么 地方出了问题,只能以枚举的形式或者试错的形式来发现问题,这要消 耗大量的时间,并且并不能准确找到程序跑飞的位置和原因。用来检测程序跑飞的另一种解决方案是利用'看门狗',它可以是软 件形式的或者硬件形式的。'看门狗(watchdog),是通过要求执行的程 序定期发送确认信号或者其他信息来判断程序是否跑飞。例如按照预定的规则,执行中的程序并未在设定的时刻发出确认信号,则认为出现了 程序跑飞。但是利用'看门狗'同样无法解决准确定位程序跑飞的准确位置和保 护程序跑飞的现场的问题。 一旦发现了程序跑飞,程序员同样要花费大 量的时间和精力来判断程序跑飞的位置和引起程序跑飞的原因。
技术实现思路
本专利技术的一个目的是提出一种检测程序跑飞的方法及其设备,它能 够准确检测程序跑飞的位置,从而方便程序员判断引起程序跑飞的原因, 大大提高了程序开发效率。在本专利技术的一个方面,提出了一种检测程序跑飞的方法,包括步骤: 执行程序中包含的代码;判断与代码相关的程序计数器地址是否在事先 计算的地址范围之内;以及在程序计数器地址在事先计算的地址范围之 外的情况下,确定程序跑飞。根据本专利技术的实施例,所述方法还包括在程序执行之前计算与该 程序中的代码相关的地址范围,并以与所述代码相对应的形式存储所计 算的地址范围。根据本专利技术的实施例,所述方法还包括在程序执行过程中,记忆 程序中的代码的执行履历。根据本专利技术的实施例,所述的方法还包括在确定程序跑飞的情况 下,通知用户程序跑飞。根据本专利技术的实施例,所述的方法还包括向用户显示到程序跑飞 的位置之前的执行履历。在本专利技术的第二方面,提出了一种检测程序跑飞的方法,包括步骤 执行程序中包含的代码;基于与所执行的代码的程序计数器地址,尝试 从包括了至少部分代码的调试信息的文件中取得相应的调试信息;在取 得相应调试信息的情况下,确定程序跑飞。在本专利技术的第三方面,提出了一种检测程序跑飞的设备,包括执 行程序中包含的代码的装置;检测装置,判断与代码相关的程序计数器 地址是否在事先计算的地址范围之内,以及在程序计数器地址在事先计算的地址范围之外的情况下,确定程序跑飞。根据本专利技术的实施例,所述的设备还包括地址计算装置,在程序 执行之前计算与该程序中的代码相关的地址范围;以及地址范围存储装 置,以与所述代码相对应的形式存储所计算的地址范围。根据本专利技术的实施例,所述的设备还包括执行履历记忆装置,在 程序执行过程中,记忆程序中的代码的执行履历。根据本专利技术的实施例,所述的设备还包括通知装置,在确定程序 跑飞的情况下,通知用户程序跑飞。根据本专利技术的实施例,所述通知装置向用户显示到程序跑飞的位置 之前的执行履历。在本专利技术的第四方面,提供了一种检测程序跑飞的设备,包括 执行程序中包含的代码的装置;检测装置,基于与所执行的代码的程序 计数器地址,尝试从包括了至少部分代码的调试信息的文件中取得相应 的调试信息,以及在取得相应调试信息的情况下,确定程序跑飞。利用上述方法和设备,由于能够准确地确定PC地址是否在预定的 范围内,或者存在与该PC地址相对应的调试信息,使得在程序跑飞时, 能够准确检测到程序跑飞,并且及时向程序员通知程序跑飞以及执行履 历,提高了程序开发效率。附图说明从下面结合附图的详细描述中,本专利技术的上述特征和优点将更加明 显,其中图1示出了根据本专利技术实施例的调试器的示意性结构框图; 图2是描述根据本专利技术实施例的检测程序跑飞的方法的流程图; 图3是描述通过比较PC地址与预先设定的范围来判断程序跑飞的 过程的流程图4是描述通过判断能够取得与该PC地址相对应的调试信息来判 断程序是否跑飞的过程的流程图5示出了在检测到程序跑飞后向用户通知程序跑飞的用户界面的 示意图;以及图6示出了在检测到程序跑飞后向用户显示执行履历(trace)的用 户界面的示意图。具体实施例方式下面,参考附图详细说明本专利技术的优选实施方式。为了清楚和简明, 包含在这里的己知的功能和结构的详细描述将被省略,以防止它们使本 专利技术的主题不清楚。图1示出了根据本专利技术实施例的调试器的示意性结构框图。如图1 所示,根据本专利技术实施例的调试器100包括检测部120,执行履历记忆 部140,通知部130,地址计算部IIO和地址范围存储部150。如图1所述,地址计算部110事先计算可执行文件中的代码的地址 的正常范围,并且将代码与其地址范围相对应地存储在地址范围存储部 150中。在程序执行过程中执行履历记忆部140记忆所执行的代码(指令) 的履历。这里执行履历是指程序执行的指令历史,以及程序的调用过程。检测部120根据程序执行过程中程序计数器PC所反映的PC地址是 否在相应的正常范围之内来判断程序是否跑飞。 一旦检测到某代码(指 令)的PC地址不在事先计算的正常范围之内,则认为程序跑飞。在这 种情况下,停止执行程序,并且通知部130首先向用户通知程序跑飞, 如图5所示,然后根据执行履历记忆部140中记忆的在该代码之前所执 行的所有代码的执行履历,如图6所示。在检测到程序跑飞后,程序可 以跳转到跑飞出,显示给用户,并且提示可能的原因。作为另一例子, 在检测到程序跑飞后,可以直接向用户显示跑飞的代码所对应的源文件 的名称以及相关代码行(段)的位置,并突出显示。作为本专利技术的另一实施方式,检测部120也可以根据事先存储的调 试信息文件来判断程序是否跑飞。调试信息文件中记录了在事先获得的 指示程序是否有误的信息(如源文件文件名和行号等)。如果程序没有跑 飞,则存在与相应的代码(指令)相对应的调试信息。因此,通过判断 能否取得与PC地址相关联的调试信息就能够判断出程序是否跑飞。下面对照流程图详细说明本专利技术实施例的调试器的详细构成和操作7过程。图2是描述根据本专利技术实施例的检测程序跑飞的方法的流程图。如图2所示,首先CPU (未示出)执行程序(SIO)。在执行程序的过程中, 执行履历记忆部140记忆所执行的每条指令(代码)的历史(Sll),并 且检测部1本文档来自技高网
...

【技术保护点】
一种检测程序跑飞的方法,包括步骤: 执行程序中包含的代码; 判断与代码相关的程序计数器地址是否在事先计算的地址范围之内;以及 在程序计数器地址在事先计算的地址范围之外的情况下,确定程序跑飞。

【技术特征摘要】
1、一种检测程序跑飞的方法,包括步骤执行程序中包含的代码;判断与代码相关的程序计数器地址是否在事先计算的地址范围之内;以及在程序计数器地址在事先计算的地址范围之外的情况下,确定程序跑飞。2、 如权利要求l所述的方法,还包括在程序执行之前计算与该程序中的代码相关的地址范围,并以与所 述代码相对应的形式存储所计算的地址范围。3、 如权利要求l所述的方法,还包括 在程序执行过程中,记忆程序中的代码的执行履历。4、 如权利要求1到3之一所述的方法,还包括在确定程序跑飞的情况下,通知用户程序跑飞。5、 如权利要求4所述的方法,还包括 向用户显示到程序跑飞的位置之前的执行履历。6、 一种检测程序跑飞的方法,包括步骤 执行程序中包含的代码;基于与所执行的代码的程序计数器地址,尝试从包括了至少部分代码的调试信息的文件中取得相应的调试信息;在取得相应调试信息的情况下,确定程序跑飞。7、 如权利要求6所述的方法,还包括在程序执行过程中,记忆程序中的代码的执行履历。8、 如权利要求6到7之一所述的方法,还包括在确定程序跑飞的情况下,通知用户程序跑飞。9、 如权利要求8所述的方法,还包括向用户显示到程序跑飞的位置之前的执行履历。10、 一种检测程序跑飞的设备,包括 执行程序中包含的代码的装置;检测装置,判断与代码相关的程...

【专利技术属性】
技术研发人员:谢辉
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1