线程监控方法、装置、设备及存储介质制造方法及图纸

技术编号:33067564 阅读:26 留言:0更新日期:2022-04-15 09:58
本发明专利技术实施例公开了一种线程监控方法、装置、设备及存储介质。其中,一种线程监控方法包括:在待监控的目标对象运行的过程中,调用监控线程获取所述目标对象中当前所运行线程的运行参数;若所述目标对象中当前所运行线程的运行参数存在异常,则读取所述当前所运行线程的调用堆栈;根据所述当前所运行线程的调用堆栈确定所述目标对象中当前所运行线程调用的调用函数集合;将所述调用函数集合中的调用函数确定为所述当前所运行线程异常调用的调用函数。采用本方案,可以准确地获取到应用程序出现异常问题的原因。出现异常问题的原因。出现异常问题的原因。

【技术实现步骤摘要】
线程监控方法、装置、设备及存储介质


[0001]本专利技术涉及互联网
,尤其涉及一种线程监控方法、装置、设备及存储介质。

技术介绍

[0002]随着互联网技术的发展,各种各样的应用程序(如打车应用程序、社交应用程序、办公应用程序)应运而生,给用户的工作以及生活带来极大的便利。但是,在运行这些应用程序的过程中,如果该应用程序出现卡顿等异常问题,容易导致应用程序出现闪退等情况。现有技术中,通过对应用程序中所运行的主线程进行监控,以获取该应用程序出现异常问题的原因;但是这种监控方法的准确度比较低,不能准确地获取到应用程序出现异常问题的原因。

技术实现思路

[0003]本专利技术实施例提供了一种线程监控方法、装置、设备及存储介质,可以能够准确地获取到应用程序出现异常问题的原因。
[0004]一方面,本专利技术实施例提供了一种线程监控方法,该线程监控方法包括:
[0005]在待监控的目标对象运行的过程中,调用监控线程获取上述目标对象中当前所运行线程的运行参数;
[0006]若上述目标对象中当前所运行线程的运行参数存在异常,则读取上述当前所运行线程的调用堆栈;
[0007]根据上述当前所运行线程的调用堆栈确定上述目标对象中当前所运行线程调用的调用函数集合;
[0008]将上述调用函数集合中的调用函数确定为上述当前所运行线程异常调用的调用函数。
[0009]其中,上述运行参数包括运行时长,上述监控线程包括参数监控函数;
[0010]上述若上述目标对象中当前所运行线程的运行参数存在异常,则读取上述当前所运行线程的调用堆栈,包括:
[0011]调用上述参数监控函数对上述当前所运行线程的运行参数进行监控,上述参数监控函数包括第一时长阈值;
[0012]若上述当前所运行线程的运行时长大于上述第一时长阈值,则确定上述目标对象中当前所运行线程的运行参数存在异常,调用回调函数读取上述当前所运行线程的调用堆栈。
[0013]其中,上述方法还包括:
[0014]获取上述参数监控函数的地址指针;
[0015]根据上述参数监控函数的地址指针获取上述参数监控函数中的时长限制变量;
[0016]将上述时长限制变量的阈值设置为第一时长阈值,并在上述参数监控函数中添加
调用策略,上述调用策略用于若上述当前所运行线程的运行时长大于上述第一时长阈值,则调用上述回调函数读取上述当前所运行线程的调用堆栈。
[0017]其中,上述运行参数包括运行资源占用率;
[0018]上述若上述目标对象中当前所运行线程的运行参数存在异常,则读取上述当前所运行线程的调用堆栈,包括:
[0019]若上述目标对象中当前所运行线程的运行资源占用率大于预设占用率阈值,则获取上述目标对象中当前所运行线程的运行资源占用率大于上述预设占用率阈值时所持续的时长;
[0020]若所持续的时长超过第二时长阈值,则确定上述当前所运行线程的运行参数存在异常,并读取上述当前所运行线程的调用堆栈。
[0021]其中,上述若所持续的时长超过第二时长阈值,则确定上述当前所运行线程的运行参数存在异常,并读取上述当前所运行线程的调用堆栈,包括:
[0022]若所持续的时长超过第二时长阈值,则确定上述当前所运行线程的运行参数存在异常,并获取线程标识与线程类型之间的对应关系;
[0023]根据上述线程标识与线程类型之间的对应关系,确定上述当前所运行线程的线程类型;
[0024]若上述当前所运行线程的线程类型为目标线程类型,则读取上述当前所运行线程的调用堆栈;上述目标线程类型是指用于对代码信息进行解释和编译的线程类型。
[0025]其中,上述根据上述当前所运行线程的调用堆栈确定上述目标对象中调用当前所运行线程的调用函数集合,包括:
[0026]从所述当前所运行线程的调用堆栈中确定所述当前所运行线程调用的目标函数;
[0027]获取所述目标函数的调用栈帧,并从所述目标函数的调用栈帧中确定上层调用指针;
[0028]根据所述上层调用指针确定调用所述目标函数的上层调用函数,作为第一调用函数;
[0029]获取所述第一调用函数的调用栈帧;
[0030]根据所述目标函数、所述第一调用函数以及所述第一调用函数的调用栈帧,确定所述目标对象中当前所运行线程调用的调用函数集合。
[0031]其中,上述根据所述目标函数、所述第一调用函数以及所述第一调用函数的调用栈帧,确定所述目标对象中当前所运行线程调用的调用函数集合,包括;
[0032]若所述第一调用函数的调用栈帧中存在上层调用指针,则根据所述第一调用函数的调用栈帧中的上层调用指针,确定所述目标对象中调用所述第一调用函数的调用函数,作为第二调用函数,将所述目标函数、所述第一调用函数和所述第二调用函数添加至所述调用函数集合中;
[0033]若所述第一调用函数的调用栈帧中不存在上层调用指针,则将所述目标函数以及所述第一调用函数添加至所述调用函数集合中。
[0034]一方面,本申请实施例提供一种线程监控装置,包括:
[0035]第一获取模块,用于在待监控的目标对象运行的过程中,调用监控线程获取上述目标对象中当前所运行线程的运行参数;
[0036]读取模块,用于若上述目标对象中当前所运行线程的运行参数存在异常,则读取上述当前所运行线程的调用堆栈;
[0037]第一确定模块,用于根据上述当前所运行线程的调用堆栈确定上述目标对象中当前所运行线程调用的调用函数集合;
[0038]第二确定模块,用于将上述调用函数集合中的调用函数确定为上述当前所运行线程异常调用的调用函数。
[0039]其中,上述运行参数包括运行时长,上述监控线程包括参数监控函数;
[0040]上述读取模块包括:
[0041]监控单元,用于调用上述参数监控函数对上述当前所运行线程的运行参数进行监控,上述参数监控函数包括第一时长阈值;
[0042]调用单元,用于若上述当前所运行线程在运行时的运行时长大于上述第一时长阈值,则确定上述目标对象中当前所运行线程的运行参数存在异常,调用回调函数读取上述当前所运行线程的调用堆栈。
[0043]其中,上述装置还包括:
[0044]第二获取模块,用于获取上述参数监控函数的地址指针;
[0045]第三获取模块,用于根据上述参数监控函数的地址指针获取上述参数监控函数中的时长限制变量;
[0046]添加模块,用于将上述时长限制变量的阈值设置为上述第一时长阈值,并在上述参数监控函数中添加调用策略,上述调用策略用于若上述当前所运行线程的运行时长大于上述第一时长阈值,则调用上述回调函数读取上述当前所运行线程的调用堆栈。
[0047]其中,上述运行参数包括运行资源占用率;
[0048]上述读取模块包括:
[0049]第一获取单元,用于若上述目标对象中当前所运行线程的运行资源占用率本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种线程监控方法,其特征在于,包括:在待监控的目标对象运行的过程中,调用监控线程获取所述目标对象中当前所运行线程的运行参数;若所述目标对象中当前所运行线程的运行参数存在异常,则读取所述当前所运行线程的调用堆栈;根据所述当前所运行线程的调用堆栈确定所述目标对象中当前所运行线程调用的调用函数集合;将所述调用函数集合中的调用函数确定为所述当前所运行线程异常调用的调用函数。2.根据权利要求1所述的方法,其特征在于,所述运行参数包括运行时长,所述监控线程包括参数监控函数;所述若所述目标对象中当前所运行线程的运行参数存在异常,则读取所述当前所运行线程的调用堆栈,包括:调用所述参数监控函数对所述当前所运行线程的运行参数进行监控,所述参数监控函数包括第一时长阈值;若所述当前所运行线程的运行时长大于所述第一时长阈值,则确定所述目标对象中当前所运行线程的运行参数存在异常,调用回调函数读取所述当前所运行线程的调用堆栈。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:获取所述参数监控函数的地址指针;根据所述参数监控函数的地址指针获取所述参数监控函数中的时长限制变量;将所述时长限制变量的阈值设置为所述第一时长阈值,并在所述参数监控函数中添加调用策略,所述调用策略用于若所述当前所运行线程的运行时长大于所述第一时长阈值,则调用所述回调函数读取所述当前所运行线程的调用堆栈。4.根据权利要求1-3任一项所述的方法,其特征在于,所述运行参数包括运行资源占用率;所述若所述目标对象中当前所运行线程的运行参数存在异常,则读取所述当前所运行线程的调用堆栈,包括:若所述目标对象中当前所运行线程的运行资源占用率大于预设占用率阈值,则获取所述目标对象中当前所运行线程的运行资源占用率大于所述预设占用率阈值时所持续的时长;若所持续的时长超过第二时长阈值,则确定所述当前所运行线程的运行参数存在异常,并读取所述当前所运行线程的调用堆栈。5.根据权利要求4所述的方法,其特征在于,所述若所持续的时长超过第二时长阈值,则确定所述当前所运行线程的运行参数存在异常,并读取所述当前所运行线程的调用堆栈,包括:若所持续的时长超过第二时长阈值,则确定所述当前所运行线程的运行参数存在异常,并获取线程标识与线程类型之间的对应关系;根据所述线程标识与线程类型之间的对应关系,确定所述当前所运行线程的线程类型;若所述当前所运行线程的线程类型为目标线程类型...

【专利技术属性】
技术研发人员:张凯
申请(专利权)人:深圳市腾讯计算机系统有限公司
类型:发明
国别省市:

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

1