应用堆栈信息获取方法及装置、堆栈信息解析方法及装置制造方法及图纸

技术编号:17779439 阅读:44 留言:0更新日期:2018-04-22 07:48
一种应用堆栈信息获取方法及装置、一种堆栈信息解析方法及装置,该应用堆栈信息获取方法包括步骤:获取当前堆栈的内存偏移信息,所述内存偏移信息包括函数地址和PC偏移值,根据获取的内存偏移信息生成内存偏移结构存储文件;获取虚拟内存和磁盘文件的映射关系,根据所述映射关系记录映射信息,生成内存映射结构存储文件,记录的所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;将所述内存偏移结构存储文件、所述内存映射结构存储文件进行存储。本发明专利技术实施例方案,在获取应用堆栈信息时,可以大大减少存储量,使得堆栈信息占用了尽量少的内存,在应用到应用信息跟踪中时能够以最小的性能损耗获取堆栈的跟踪采样。

【技术实现步骤摘要】
应用堆栈信息获取方法及装置、堆栈信息解析方法及装置
本专利技术涉及网络信息处理领域,特别是涉及一种应用堆栈信息获取方法以及一种应用堆栈信息获取装置、一种堆栈信息解析方法以及一种堆栈信息解析装置。
技术介绍
目前在需要采集堆栈的信息时,一般都是通过dvm的native函数dvmFillInStackTraceInternal或者系统标准的java函数Throwable::fillInstackTrace来获取堆栈信息,得到的堆栈为相应的堆栈字符串内容。这种堆栈获取方法可以正确地获取堆栈信息,然而,由于堆栈是显示为纯文本信息,一层堆栈信息平均要在60字节左右,如果该堆栈深度为16层,那么该堆栈占用的内存大小就要到达1k,随着堆栈深度的增加,所占用的内存也会持续增加。
技术实现思路
基于此,本专利技术实施例提供一种应用堆栈信息获取方法以及一种应用堆栈信息获取装置、一种堆栈信息解析方法以及一种堆栈信息解析装置,以使得堆栈信息占用尽量少的内存,从而能够在应用到应用信息跟踪中时以最小的性能损耗获取堆栈的跟踪采样。为达到上述目的,本专利技术实施例采用以下技术方案:一种应用堆栈信息获取方法,包括步骤:获取当前堆栈的内存偏移信息,所述内存偏移信息包括函数地址和PC偏移值,根据获取的内存偏移信息生成内存偏移结构存储文件;获取虚拟内存和磁盘文件的映射关系,根据所述映射关系记录映射信息,生成内存映射结构存储文件,记录的所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;将所述内存偏移结构存储文件、所述内存映射结构存储文件进行存储。一种堆栈信息解析方法,包括步骤:获取记录内存偏移信息的内存偏移结构存储文件、记录映射信息的内存映射结构存储文件,所述内存偏移信息包括函数地址和PC偏移值,所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;获取记录文件符号表结构信息的文件符号表结构文件,所述文件符号表结构信息包括函数代码执行的起始位置、函数信息以及调试信息,所述调试信息包括PC相对起始位置对应的代码行号;根据所述文件路径从所述文件符号表结构文件中获取对应的文件符号表结构信息,通过所述函数地址、虚拟内存地址范围、内存文件偏移量将所述函数地址转换为磁盘文件地址,并用所述磁盘文件地址在获取的所述文件符号表结构信息中查找到对应的函数信息和调试信息,并根据所述PC偏移值在该调试信息中查找到对应的代码行,获得解析后的堆栈信息。一种应用堆栈信息获取装置,包括:内存偏移获取模块,用于获取当前堆栈的内存偏移信息,所述内存偏移信息包括函数地址和PC偏移值,根据获取的内存偏移信息生成内存偏移结构存储文件;内存映射获取模块,用于获取虚拟内存和磁盘文件的映射关系,根据所述映射关系记录映射信息,生成内存映射结构存储文件,记录的所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;存储模块,用于将所述内存偏移结构存储文件、所述内存映射结构存储文件进行存储。一种堆栈信息解析装置,包括:内存信息相关文件获取模块,用于获取记录内存偏移信息的内存偏移结构存储文件、记录映射信息的内存映射结构存储文件,所述内存偏移信息包括函数地址和PC偏移值,所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;文件符号表获取模块,用于获取记录文件符号表结构信息的文件符号表结构文件,所述文件符号表结构信息包括函数代码执行的起始位置、函数信息以及调试信息,所述调试信息包括PC相对起始位置对应的代码行号;解析模块,用于根据所述文件路径从所述文件符号表结构文件中获取对应的文件符号表结构信息,通过所述函数地址、虚拟内存地址范围、内存文件偏移量将所述函数地址转换为磁盘文件地址,并用所述磁盘文件地址在获取的所述文件符号表结构信息中查找到对应的函数信息和调试信息,并根据所述PC偏移值在该调试信息中查找到对应的代码行,获得解析后的堆栈信息。根据如上所述的本专利技术实施例的方案,其在获取应用堆栈信息时,只需要获取函数地址和PC偏移值,内存偏移结构存储文件中可以只存储函数地址和PC偏移值,相对于现有的文本存储堆栈信息的方式,可以大大减少存储量,而内存映射结构存储文件有助于虚拟内存到磁盘文件的映射和信息跟踪,从而使得堆栈信息占用了尽量少的内存,在应用到应用信息跟踪中时能够以最小的性能损耗获取堆栈的跟踪采样。附图说明图1是一个实施例中的本专利技术方案的应用环境的示意图;图2是一个实施例中的终端的结构示意图;图3是一个实施例中的后台服务器的结构示意图;图4是一个实施例中的应用堆栈信息获取方法的流程示意图;图5是一个实施例中的堆栈信息解析方法的流程示意图;图6是一个具体示例中的获取堆栈信息时建立的数组的结构示意图;图7是本专利技术一个具体示例中存储获取的函数地址和PC偏移值的代码结构示意图;图8是本专利技术一个具体示例中的获取的函数地址和PC偏移值的存储结构的示意图;图9是一个具体示例中的虚拟内存映射关系的示意图;图10是一个具体示例中的获取到的映射信息的代码结构示意图;图11是基于图10所示示例的存储的文件的结构示意图;图12是一个具体示例中的dex文件的结构示意图;图13是图12所示的dex文件的详细结构示意图;图14是一个具体示例中的确定行号的流程示意图;图15是一个实施例中的应用堆栈信息获取装置的结构示意图;图16是一个实施例中的堆栈信息解析装置的结构示意图。具体实施方式为使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不限定本专利技术的保护范围。图1示出了本专利技术一个实施例中的工作环境示意图,如图1所示,其工作环境涉及终端101以及后台服务器102,终端101与后台服务器102可以通过网络进行通信。终端101可以获得相关的应用堆栈信息,获得的应用堆栈信息可以存储在终端101本地,存储后的应用堆栈信息可以发送给后台服务器102,由后台服务器102进行堆栈信息的解析。当然,在一些实施例中,存储后的应用堆栈信息也可以由终端101在后续过程中自行进行解析。终端101在一个实施例中的结构示意图如图2所示。该终端101包括通过系统总线连接的处理器、存储介质、通信接口、电源接口和内存。其中,终端101的存储介质存储有一种应用堆栈信息获取装置,该装置用于实现一种应用堆栈信息获取方法。终端101的通信接口用于与服务器102连接和通信,终端101的电源接口用于与外部电源连接,外部电源通过该电源接口向终端101供电。终端101可以是任何一种能够实现智能输入输出的设备,例如移动终端,比如手机、平板电脑等;个人计算机等等,也可以是其它具有上述结构的设备。后台服务器102在一个实施例中的结构示意图如图3所示。其包括通过系统总线连接的处理器、供电模块、存储介质、内存和通信接口。其中,服务器的存储介质存储有操作系统、数据库和一种堆栈信息解析装置,该装置用于实现一种堆栈信息解析方法。服务器的通信接口用于与终端101进行连接和通信。图4中示出了一个实施例中的应用堆栈信息获取方法的流程示意图。如图4所示,该实施例中的应用堆栈信息获取方法包括:步骤S401:获取当前堆栈的内存偏移信息,所述内存偏移信息包括函数地址和PC偏移值本文档来自技高网...
应用堆栈信息获取方法及装置、堆栈信息解析方法及装置

【技术保护点】
一种应用堆栈信息获取方法,其特征在于,包括步骤:获取当前堆栈的内存偏移信息,所述内存偏移信息包括函数地址和PC偏移值,根据获取的内存偏移信息生成内存偏移结构存储文件;获取虚拟内存和磁盘文件的映射关系,根据所述映射关系记录映射信息,生成内存映射结构存储文件,记录的所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;将所述内存偏移结构存储文件、所述内存映射结构存储文件进行存储。

【技术特征摘要】
1.一种应用堆栈信息获取方法,其特征在于,包括步骤:获取当前堆栈的内存偏移信息,所述内存偏移信息包括函数地址和PC偏移值,根据获取的内存偏移信息生成内存偏移结构存储文件;获取虚拟内存和磁盘文件的映射关系,根据所述映射关系记录映射信息,生成内存映射结构存储文件,记录的所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;将所述内存偏移结构存储文件、所述内存映射结构存储文件进行存储。2.根据权利要求1所述的应用堆栈信息获取方法,其特征在于,包括下述各项中的至少一项:记录的所述映射信息还包括文件节点号;在堆栈信息采集结束时,采集满足预设条件的dex文件的映射数据,从所述映射数据中获得并记录所述映射信息。3.根据权利要求1所述的应用堆栈信息获取方法,其特征在于,包括下述各项中的至少一项:从获取堆栈信息时建立的stackInfo数组中获取所述PC偏移;将获取堆栈信息时建立的stackInfo数组的method指针指向的Method类的结构类型中的insns的值,确定为所述函数地址;将所述内存偏移结构存储文件、所述内存映射结构存储文件压缩后进行存储;将存储的所述内存偏移结构存储文件、所述内存映射结构存储文件向后台服务器发送,由后台服务器根据所述内存偏移结构存储文件、所述内存映射结构存储文件进行堆栈信息解析。4.一种堆栈信息解析方法,其特征在于,包括步骤:获取记录内存偏移信息的内存偏移结构存储文件、记录映射信息的内存映射结构存储文件,所述内存偏移信息包括函数地址和PC偏移值,所述映射信息包括虚拟内存地址范围、内存文件偏移量、以及文件路径;获取记录文件符号表结构信息的文件符号表结构文件,所述文件符号表结构信息包括函数代码执行的起始位置、函数信息以及调试信息,所述调试信息包括PC相对起始位置对应的代码行号;根据所述文件路径从所述文件符号表结构文件中获取对应的文件符号表结构信息,通过所述函数地址、虚拟内存地址范围、内存文件偏移量将所述函数地址转换为磁盘文件地址,并用所述磁盘文件地址在获取的所述文件符号表结构信息中查找到对应的函数信息和调试信息,并根据所述PC偏移值在该调试信息中查找到对应的代码行,获得解析后的堆栈信息。5.根据权利要求4所述的堆栈信息解析方法,其特征在于:包括下述各项中的至少一项:所述映射信息还包括文件节点号;在根据所述文件路径从所述文件符号表结构文件中获取对应的文件符号表结构信息时,结合所述文件节点号获取对应的文件符号表结构信息;所述函数信息包括文件名、类名、函数名;从前端应用终端接收获得所述内存偏移结构存储文件、所述内存映射结构存储文件。6.一种应用堆栈信息获取装置,其特征在于,包括:内存偏移获取模块,用于获取当前堆栈的内存偏移信息,所述内存偏移信息包括函数...

【专利技术属性】
技术研发人员:刘华星李昶博
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1