[发明专利]用于在程序调试中跟踪变量的方法和设备无效
| 申请号: | 200810145140.2 | 申请日: | 2008-07-31 |
| 公开(公告)号: | CN101639805A | 公开(公告)日: | 2010-02-03 |
| 发明(设计)人: | 许红;王守慧;岳治宇;姜黎;姚毅 | 申请(专利权)人: | 国际商业机器公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京市金杜律师事务所 | 代理人: | 冯 谱 |
| 地址: | 美国纽*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 程序 调试 跟踪 变量 方法 设备 | ||
技术领域
本发明一般地涉及程序调试,更具体地,本发明涉及用于在程序调试中跟踪变量的方法和设备。
背景技术
在现有的程序调试技术中,程序员通常采用跟踪变量来试图找出存在于软件代码中的错误或发生在编程过程中的错误。当跟踪变量时,程序员要查找出哪些特定的源代码语句修改了该变量,而断点在该查找过程中扮演了重要的角色。断点使得程序在运行到该断点所插入的某个位置时自动地停止下来,从而程序员可以对该位置处的代码进行分析和判断以确定该位置处的代码是否修改了变量。当前,断点的指定可以通过源代码的行号、函数名和条件等来完成。
图1示例性示出终止在标号②的一部分C语言程序源代码,其中语句断言(assert)意味着变量bRet的值被改变为非零值。程序员通过该断言语句确定这是由于源程序中的一些代码所造成的错误值。为了能够正确地找出变量bRet的值被改变为非零值的原因,程序员需要从该C语言源程序中找出哪些代码修改了变量bRet。
下面参考图2,其以图1中示出的C语言程序源代码为例来图示现有技术的利用断点跟踪变量bRet的调试过程。在该C语言程序源代码中,启用的断点以实心圆[●]示出,而禁用的断点以空心圆[○]示出。为了找出哪些代码修改了变量bRet,首先在函数FuncA()中涉及变量bRet的标号①的代码处插入断点。重新运行函数FuncA()后并且发现变量bRet的值在源程序运行经过标号①的代码后从0变到1。禁用标号①的代码处插入的断点并且在函数FuncB()中涉及变量bVar的标号③和④的代码处插入断点。重新运行函数FuncA(),源程序首先停止在标号③的代码处并接着停止在标号④的代码处。在单步调试通过标号③和④的代码之后,发现变量bVar的值在源程序运行经过标号④的代码后从0变到1。接着禁用在标号①,③和④的代码处的断点并且在函数FuncD()中涉及变量bpIn的标号⑥的代码处插入断点。由于标号③的代码处并没有改变变量bVar的值,因此程序员不需要在函数FuncC()中的标号⑤的代码处插入断点。重新运行函数FuncA()并且源程序停止在标号⑥的代码处,程序员此时发现变量bVar的值在源程序运行经过标号⑥的代码后从0变到1。通过上述插入断点来跟踪变量的操作,程序员最终发现由于函数FuncB()中变量bVar的值的变化而导致在返回给变量bRet时将变量bRet的值改变为非零值。
从上面的示例性程序调试操作可以看出,通过借助于断点的程序调试操作,程序员可以找出造成bRet为非零值的真正原因。同时也可以看出,这样的断点插入可以使程序在每次运行中直接停止在程序员所指定的代码处,从而有助于程序员在调试程序中节省部分时间和精力。尽管如此,但是程序员仍需要花费较多的时间和精力来重复地运行程序以便分析程序中涉及要跟踪的变量,其函数调用结构和代码、启用和禁用断点、单步调试代码以及监视程序的执行等。
为了更好的利用断点来进行程序调试,现有的一些调试器支持数据断点,从而有助于分析涉及变量的代码。当程序员所指定地址的数据发生改变时,该数据断点可以使运行中的程序停止下来。但如果数据是由于函数的返回值而被修改,例如如图1中的标号①的代码处,变量bRet正是由于函数FuncB()的返回值而被改变,则用于变量bRet的数据断点仅可定位到标号①的代码处,这是因为函数FuncB()将使用不同的地址来表达该返回值。此时程序员就要靠自己将程序运行到函数FuncB()内并且执行上述提到的程序调试过程。
因此,需要一种用于在程序调试中解决上述问题的方法和设备,其能够使变量跟踪更为容易和有效,从而有助于快速查找程序中有问题的代码,避免由于变量跟踪的低效而造成反复运行程序。
发明内容
本发明的目的是提供一种用于能够更为容易和有效地在程序调试中跟踪变量的方法和设备。
为了实现上述目的,本发明提出一种用于在程序调试中跟踪变量的方法,包括对所述变量进行相关性分析以识别程序中与该变量相关的代码,在识别出的与所述变量相关的代码处插入断点,以及基于所述断点对程序进行调试以跟踪所述变量的变化。
本发明还提出一种用于在程序调试中跟踪变量的设备,包括:代码分析装置,用于对所述变量进行相关性分析以识别程序中与该变量相关的代码,断点处理装置,用于在识别出的与所述变量相关的代码处插入断点,以及程序调试装置,用于基于所述断点对程序进行调试以跟踪所述变量的变化。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810145140.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:激光焊接挠性飞轮
- 下一篇:一种汽车节能增效器的单向机构





