[发明专利]一种信息获取方法、装置、介质和设备在审
申请号: | 202010565709.1 | 申请日: | 2020-06-19 |
公开(公告)号: | CN111813465A | 公开(公告)日: | 2020-10-23 |
发明(设计)人: | 刘洪凯 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 北京睿驰通程知识产权代理事务所(普通合伙) 11604 | 代理人: | 唐华;张文平 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 信息 获取 方法 装置 介质 设备 | ||
本公开提供了一种信息获取的方法、装置、介质和设备,该方法包括:调用第一堆栈函数并获取所述第一堆栈函数返回的第一栈存储对象;基于所述第一栈存储对象从栈帧信息缓存区中获取所述第一栈存储对象中主线程调用栈的各栈帧标识对应的栈帧信息;其中,所述栈帧信息缓存区用于以健值对的形式存储历史运行过程中主线程调用栈对应的栈帧信息。本公开能够提升信息获取的速度,快速地获取主线程的调用栈信息,提升程序的执行效率。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种信息获取的方法、装置、介质和设备。
背景技术
安卓系统各应用程序在运行过程中,都需要不停的调用各线程的调用栈,通过获取调用栈栈帧的信息,来执行相应的任务,栈可以记录线程运行中的函数调用(或者叫做函数执行顺序),每个线程都有一个独自的调用栈。例如当系统卡顿时,子线程检测到了主线程发生卡顿,需要通过主线程的调用栈来分析具体是哪个方法导致了阻塞。
现有的获取安卓主线程调用栈的方法通常是调用Thread类的currentThread方法获取当前线程对象,然后调用其getStacktrace方法得到其调用栈。这种调用方法耗时长,尤其是当调用栈比较深时,很难及时获取调用栈的信息,使程序的运行、故障的检测等降低了效率。
本公开的目的在于提供一种信息获取的方法、装置、介质和设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本公开的具体实施方式,第一方面,本公开提供一种信息获取方法,包括:
调用第一堆栈函数并获取所述第一堆栈函数返回的第一栈存储对象;
基于所述第一栈存储对象从栈帧信息缓存区中获取所述第一栈存储对象中主线程调用栈的各栈帧标识对应的栈帧信息;其中,所述栈帧信息缓存区用于以健值对的形式存储历史运行过程中主线程调用栈对应的栈帧信息。
可选的,所述基于所述第一栈存储对象从栈帧信息缓存区中获取所述第一栈存储对象中主线程调用栈的各栈帧标识对应的栈帧信息,包括:
对所述第一栈存储对象进行数据处理,获得索引为i的所述第一栈存储对象的对象指针、指令偏移值以及类名,其中0≤i≤N-1,N为栈帧个数;
将所述索引为i的对象指针、指令偏移值以及类名组成的字符串作为字符串参数,在栈帧信息缓存区中遍历预创建的调用栈对象,将查询到的索引为i的栈帧标识对应的栈帧信息,记为第一栈帧信息。
可选的,所述对所述第一栈存储对象进行数据处理,获得索引为i的所述第一栈存储对象的对象指针、指令偏移值以及类名,包括:
将所述第一栈存储对象强转化为第一对象数组;
获取所述第一对象数组的第一个元素,并将所述第一个元素强转化为第一整型数组;
获取所述第一整型数组的前半段作为对象指针,获取所述第一整型数组的后半段作为指令偏移值;
获取所述第一对象数组的所述第一个元素之后的剩余部分为类名。
可选的,所述将查询到的索引为i的栈帧标识对应的栈帧信息,记为第一栈帧信息之后,还包括:
基于所述调用栈对象,获取未查询到的栈帧,将所述未查询到的栈帧标记为第二栈帧信息,其中,所述第二栈帧信息与所述第一栈帧信息构成所述主线程调用栈对应的栈帧信息。
可选的,所述获取未查询到的栈帧,将所述未查询到的栈帧标记为第二栈帧信息,包括:
创建异常类对象,所述异常类对象包括未查询到的栈帧信息;
通过第二堆栈函数调用所述异常类对象,获取未查询到的栈帧,将所述未查询到的栈帧标记为第二栈帧信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010565709.1/2.html,转载请声明来源钻瓜专利网。
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置