[发明专利]linux环境下快速转换调用堆栈地址的系统及方法有效

专利信息
申请号: 200910142259.9 申请日: 2009-06-26
公开(公告)号: CN101615136A 公开(公告)日: 2009-12-30
发明(设计)人: 龙涛 申请(专利权)人: 中兴通讯股份有限公司
主分类号: G06F9/46 分类号: G06F9/46;G06F9/38
代理公司: 北京安信方达知识产权代理有限公司 代理人: 龙 洪;霍育栋
地址: 518057广东省深圳市南山*** 国省代码: 广东;44
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: linux 环境 快速 转换 调用 堆栈 地址 系统 方法
【说明书】:

技术领域

发明涉及计算机技术领域,尤其涉及,具体地说,是涉及一种linux 环境下快速转换调用堆栈地址的系统及方法。

背景技术

在Linux环境下,一般查看函数运行时堆栈的方法是使用GDB之类的 外部调试器。但是,有些时候为了分析程序的BUG,在需要的时候打印出 函数的调用堆栈信息是非常有用的。

现有技术通常调用backtrace函数和backtrace_symbols函数,来获取函 数调用堆栈信息,每一层堆栈信息的格式如下所示:

/应用程序名[函数地址]。

具体的例子如下:

/kernel[0x804869c]。

由此可以看出,获取的其实只是函数地址,并不是具体的函数名称和源 代码行数。想要获取更详细的信息,还必须执行终端命令addr2line来进行 转换:

addr2line-f 0x804869c-e kernel>file1。

该命令把指定应用程序(kernel)对应函数地址的具体函数信息保存到 file1文件中,保存信息的格式如下例所示:

os_malloc

/root/src/pub/err.c:69。

在file1文件中,第一行保存的是具体的函数名称,第二行是函数源代 码的行数。

因此,现有技术在Linux环境下获取函数调用堆栈的流程,如图1所示, 主要包括如下几个步骤:

步骤S110,调用backtrace函数和backtrace symbols函数,获取函数调 用堆栈地址信息;

步骤S120,从每一层的堆栈地址信息中解析出函数地址;

步骤S130,调用system函数执行addr2line命令,把函数地址转换成具 体的函数名称和函数源代码行数,保存到一临时文件中;

步骤S140,读取临时文件,从中解析出函数名称和函数源代码行数。

由于步骤S130及步骤S140中,需要进行临时文件的辅助转换(把函数 地址转换成函数名及源代码行数这一转换),在实际应用中不适合频繁调用 该操作,否则会严重影响程序的执行性能,因此有必要对现有的Linux环境 下获取函数调用堆栈技术加以改进,以提高系统运行效率。

发明内容

本发明所要解决的技术问题,在于需要提供一种linux环境下快速转换 调用堆栈地址的系统及方法,以提高linux环境下获取函数调用堆栈的效率。

为了解决上述技术问题,本发明提供了一种linux环境下快速转换调用 堆栈地址的方法,包括:

建立一包含有若干公共线程的公共线程池;

需要保存当前堆栈信息时,获取函数调用堆栈地址信息;

从每一层的堆栈地址信息中解析出函数地址数组,将所述函数地址数组 与当前堆栈相关信息组合成一个结构体对象并缓存到一缓存队列中;

遍历所述缓存队列中的每个节点,用所述公共线程池并行处理每个节点 的每层函数地址的转换操作,得到转换结果。

优选地,该方法进一步包括:

将一个结构体对象作为一个信息节点,将所有信息节点组成一个查询 表;

抛弃所述转换操作的中间结果时,根据所述查询表从所述缓存队列中删 除所述中间结果对应的信息节点。

优选地,用所述公共线程池中的公共线程并行处理所述转换操作,每个 公共线程得到一基本堆栈结果;

对所有的基本堆栈结果进行组合,得到所述转换结果。

优选地,该方法进一步包括:

转换函数地址时,将函数地址转换成函数名称和函数源代码行数,保存 到一临时文件中;

读取所述临时文件,从所述临时文件中解析出函数名称和函数源代码行 数。

优选地,该方法进一步包括:

建立一全局的函数地址映射表;

从所述临时文件中解析出函数名称和函数源代码行数后,将所述函数名 称及函数源代码行数保存到所述函数地址映射表中;

转换函数地址时,查询所述函数地址映射表,查询到相应的匹配结果则 完成所述转换操作,否则将函数地址转换成函数名称及函数源代码行数。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200910142259.9/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top