linux环境下快速转换调用堆栈地址的系统及方法技术方案

技术编号:3904908 阅读:385 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种linux环境下快速转换调用堆栈地址的系统及方法,提高了linux环境下获取函数调用堆栈的效率。其中该方法包括:建立一包含有若干公共线程的公共线程池;需要保存当前堆栈信息时,获取函数调用堆栈地址信息;从每一层的堆栈地址信息中解析出函数地址数组,将函数地址数组与当前堆栈相关信息组合成一个结构体对象并缓存到一缓存队列中;遍历缓存队列中的每个节点,用公共线程池并行处理每个节点的每层函数地址的转换操作,得到转换结果。与现有技术相比,本发明专利技术提高了linux环境下获取函数调用堆栈的效率,在实际应用中频繁执行此操作时,提高了系统性能。

【技术实现步骤摘要】

本专利技术涉及计算4几
,尤其涉及,具体地说,是涉及一种linux 环境下快速转换调用堆栈地址的系统及方法。
技术介绍
在Linux环境下, 一般查看函数运行时堆栈的方法是使用GDB之类的 外部调试器。但是,有些时候为了分析程序的BUG,在需要的时候打印出 函数的调用堆栈信息是非常有用的。;见有^支术通常调用backtrace函凄t和backtrace—symbols函凄t,来获耳又函 数调用堆栈信息,每一层堆栈信息的格式如下所示/应用程序名。具体的例子如下/kernel 。由此可以看出,获取的其实只是函数地址,并不是具体的函数名称和源 代码行数。想要获取更详细的信息,还必须执行终端命令addr21ine来进行 转换addr21ine -f 0x804869c -e kernel > filel 。该命令把指定应用程序(kernel)对应函数地址的具体函数信息保存到 file 1文件中,保存信息的格式如下例所示os—nmlloc/root/src/pub/err.c:69。因此,现有技术在Linux环境下获取函数调用堆栈的流程,如图1所示, 主要包括如下几个步骤步骤SI本文档来自技高网...

【技术保护点】
一种linux环境下快速转换调用堆栈地址的方法,其特征在于,包括: 建立一包含有若干公共线程的公共线程池; 需要保存当前堆栈信息时,获取函数调用堆栈地址信息; 从每一层的堆栈地址信息中解析出函数地址数组,将所述函数地址数组与当前堆栈相 关信息组合成一个结构体对象并缓存到一缓存队列中; 遍历所述缓存队列中的每个节点,用所述公共线程池并行处理每个节点的每层函数地址的转换操作,得到转换结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:龙涛
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

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

1