[发明专利]一种栈解析方法和装置有效
申请号: | 201611145387.5 | 申请日: | 2016-12-13 |
公开(公告)号: | CN106802785B | 公开(公告)日: | 2019-07-09 |
发明(设计)人: | 殷罗英;李祥云;王超 | 申请(专利权)人: | 北京华为数字技术有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 100085 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解析 方法 装置 | ||
本发明实施例公开了一种栈解析的方法和装置,可以在栈解析过程中,通过获取一个栈帧例如第一栈帧的最低位地址,可以从这个栈帧中得到第二函数调用这个栈帧所对应的第一函数的调用关系,并可以根据固定偏移从第一栈帧中得到第一栈帧的长度信息,从而可以依据第一栈帧的长度信息和第一栈帧的最低位地址确定出第二栈帧的最低位地址,以此往复可以得到各函数的调用关系,在获取调用栈时不需要使用BP寄存器,也不需要在栈帧中保存寄存器值,而所使用的SP寄存器在各个应用场景中基本都属于专用于栈帧的寄存器,SP寄存器不会被优化作为其他用处,能正确获取,从而在获取调用栈的过程中节约了寄存器资源,不会影响系统性能。
技术领域
本发明涉及数据处理领域,特别是涉及一种栈解析方法和装置。
背景技术
在通过计算机进行数据处理的过程中,可以通过执行进程来实现该进程所对应的功能。在计算机系统中,一个进程可以包括有一个或多个线程,每个线程可以被配置对应的栈,该栈可以作为该线程的私有空间,用于存储该线程的私有资源。根据一个线程的复杂程度,在执行该线程时,需要顺序执行若干个函数以实现该线程的功能,故这些函数的私有资源也保存在该线程所对应栈的栈帧中,一般情况下,可以将一个栈帧作为一个函数的私有空间,用于存储该函数的私有资源。根据函数之间的调用关系,函数对应的栈帧在栈中的位置也有不同,以帧地址的高低以及栈帧相邻关系区分,被调用函数的栈帧一般位于调用函数的栈帧下一层,即被调用函数的栈帧地址较低。
若要实现一个线程的功能,需要通过从该线程对应的栈中获取与该线程相关的各个函数之间的调用关系,一般情况下,从栈的最内层栈帧即地址最低的栈帧开始,获取该最内层栈帧所对应的函数与上一层栈帧所对应函数之间的调用关系,依据栈地址从低向高,一层一层的获取栈帧中保存的函数调用关系,获取一个线程中各函数的调用关系的过程可以称为获取该线程的调用栈的过程。线程运行过程中获取调用栈是重要的调测手段,若获取调用栈的方式能够有很高的、可靠的性能,可以减少对线程性能的影响,提高其应用范围。
传统的获取调用栈的方法为栈回溯算法,在该算法中,需要在栈帧中保存基数指针(base pointer,BP)寄存器值,一个栈帧中保存的BP寄存器值用于标识这个栈帧与上一层栈帧之间的关联关系,故可以根据该BP寄存器值推导出这个栈帧的上一层栈帧。可见,获取调用栈的过程中,其难点在于如何根据当前栈帧中的内容确定出上一层栈帧的位置,而传统算法需要在栈帧中额外保存BP寄存器值,且需要BP寄存器专用于推栈才能根据BP寄存器值才能实现,由此浪费了CPU宝贵的寄存器资源,影响性能。
发明内容
为了解决上述技术问题,本发明实施例提供了一种帧解析方法和装置,在获取调用栈的过程中节约了寄存器资源,不会影响系统性能。
第一方面,本发明提供了一种栈解析方法,应用于一个线程所对应的栈,所述栈中具有多个栈帧,所述方法包括:
获取第一栈帧的最低位地址,所述第一栈帧为所述多个栈帧中的一个栈帧,所述第一栈帧为用于保存第一函数私有资源的栈帧,所述第一函数为所述线程使用到的一个函数;
根据所述第一栈帧的最低位地址,从第一栈帧中获取第二函数的指令地址,所述第二函数用于在所述线程中调用第一函数,所述第二函数的指令地址用于指示第二函数调用第一函数的调用关系;
根据固定偏移以及所述第一栈帧的最低位地址所指示的位置,从所述第一栈帧中获取第一栈帧的长度信息;
根据所述第一栈帧的最低位地址以及所述第一栈帧的长度信息确定出第二栈帧的最低位地址,所述第二栈帧为用于保存所述第二函数私有资源的栈帧。
在第一方面的第一种可能的实现方式中,所述获取第一栈帧的最低位地址,包括:
从所述第一栈帧对应的栈指针SP寄存器中获取所述第一栈帧的最低位地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京华为数字技术有限公司,未经北京华为数字技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611145387.5/2.html,转载请声明来源钻瓜专利网。