[发明专利]跟踪函数调用轨迹的方法和装置无效
申请号: | 200810100888.0 | 申请日: | 2008-02-25 |
公开(公告)号: | CN101246449A | 公开(公告)日: | 2008-08-20 |
发明(设计)人: | 谢建平 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京三高永信知识产权代理有限责任公司 | 代理人: | 何文彬 |
地址: | 518129广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 跟踪 函数 调用 轨迹 方法 装置 | ||
技术领域
本发明涉及通信领域,特别涉及一种跟踪函数调用轨迹的方法和装置。
背景技术
在软件系统调试中,函数的调用轨迹信息输出是一种重要的调试和除错手段。输出函数调用轨迹可以用于开发人员查看系统中函数执行的顺序是否和代码预期的一致;还可以用于获取函数实际执行的顺序,查找问题所在等等,这种调试手段在复杂的软件系统中尤其重要。
例如,待跟踪的函数为foo_A,跟踪foo_A后,其调用轨迹信息输出如下所示:
BEGIN
Now go into function foo_A,the context is:…
Now go into function foo_B,the context is:…
…
Now go into function foo_X,the context is…
Now leave function foo_A
END
从CPU指令执行的角度看,CPU顺序执行了调用函数foo_A、函数foo_B、函数foo_C、……和函数foo_X的指令;从堆栈的角度看,函数foo_A、函数foo_B、函数foo_C、……和函数foo_X顺序入栈,但出栈顺序不一定相同;从代码的角度上看,可能是如下情况及其嵌套组合:
函数foo_A
{ 函数foo_B
函数foo_C
…
};
或 函数foo_A
{ 函数foo_B
{ 函数foo_C
…
}
…
};
或 函数foo_A
{ 函数foo_B
{ 函数foo_C
{ 函数foo_D
}
…
}
…
}
现有技术中,通过以下两种方法进行函数调用轨迹信息输出:
一种是加入调试代码的方法,该方法在开发人员编码时,在每个函数的代码中,增加用于输出该函数信息的调试代码,使用编译宏或者全局控制变量/函数来使能或者去使能输出该函数信息的调试代码。例如,函数foo_1(),在foo_1()中加入编译宏使能的函数调用代码,如下所示:
foo_1()
{
…
使用编译宏使能
输出“调用foo_1()函数的信息”
编译宏结束
…
}
则调用foo_1(),将将输出如下调试信息:“调用foo_1()函数的信息”。
另外,还可以通过控制变量进行使能和去使能,例如,控制变量的值为1时,输出调用的函数信息;控制变量的值为0时,不输出函数信息。
通过上述方法进行函数调用轨迹跟踪时,如果软件系统使用历史的代码进行增量开发,并且历史代码没有考虑使用该调试方案的话,那么历史的代码需要大量新增或修改,从工程上讲,工作量大且容易出错,不利于软件的升级维护。
另一种是手工跟踪的方法,该方法借助断点设置工具对待跟踪函数设置断点,根据系统配套的调试工具,当CPU执行该函数时,在调试工具的输出终端上,手工进行单步跟踪。调试人员通过一步一步地跟踪,了解到函数调用的顺序。这些调用顺序可能和其它现场信息混合在一起输出,也可能没有输出,需要调试人员手工记录。
手工跟踪的方法通过人力操作,效率低,且需要借助调试工具,尤其在系统中没有集成这种调试工具或调试工具与软件系统相隔很远时,非常不方便。
综上所述,在实现本发明的过程中,发明人发现上述现有技术中至少存在以下缺点:
通过加入调试代码或手工跟踪的方式跟踪函数的调用轨迹,工作复杂且效率低。
发明内容
为了提高函数调用轨迹跟踪的效率,本发明实施例提供了一种跟踪函数调用轨迹的方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种跟踪函数调用轨迹的方法,所述方法包括:
操作系统接收用户输入的函数后,在所述函数的入口处设置断点;
在CPU执行到所述断点产生断点异常后,将所述函数中调用子函数的指令替换成指定的第一非法指令;
在所述CPU执行到所述第一非法指令而产生指令异常后,输出所述子函数的信息。
另一方面,本发明实施例还提供了一种跟踪函数调用轨迹的装置,所述装置包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810100888.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:物理随机接入信道的映射方法
- 下一篇:线性共聚酯热熔胶的制备方法