CN112882902B - 线程来源获取方法、电子设备以及计算机可读存储装置 - Google Patents
线程来源获取方法、电子设备以及计算机可读存储装置 Download PDFInfo
- Publication number
- CN112882902B CN112882902B CN202110247149.XA CN202110247149A CN112882902B CN 112882902 B CN112882902 B CN 112882902B CN 202110247149 A CN202110247149 A CN 202110247149A CN 112882902 B CN112882902 B CN 112882902B
- Authority
- CN
- China
- Prior art keywords
- thread
- hook
- library
- source
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了线程来源获取方法、电子设备以及计算机可读存储装置。线程来源获取方法包括:通过钩子函数监听在预设函数库的线程创建行为;在钩子函数监听到预设函数库发生线程创建行为时,获取钩子函数所捕获的与线程创建行为对应的调用栈;获取调用栈所包含的用于识别线程创建来源的线程创建数据。通过上述方式,本申请能够有效地识别所创建线程的来源。
Description
技术领域
本申请涉及线程分析技术领域,特别是涉及线程来源获取方法、电子设备以及计算机可读存储装置。
背景技术
随着智能终端普及和通信技术的不断发展,智能终端给人们带来了很大的便利,尤其是智能终端上越来越多的APP涉及到了人们生活的方方面面,而APP会汇集成很多函数库,例如第三方库,在使用的过程中会创建很多线程。
本申请的发明人经研究发现,在使用时函数库,例如第三方库,会创建很多的线程,但经常不对线程进行命名,导致无法知道线程的来源。
发明内容
本申请主要解决的技术问题是提供线程来源获取方法、电子设备以及计算机可读存储装置,能够有效改善函数库不对线程命名时无法获知线程来源的技术问题。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种线程来源获取方法。该方法包括:通过钩子函数监听在预设函数库的线程创建行为;在钩子函数监听到预设函数库发生线程创建行为时,获取钩子函数所捕获的与线程创建行为对应的调用栈;获取调用栈所包含的用于识别线程创建来源的线程创建数据。
为了解决上述问题,本申请采用的第二个技术方案是:提供一种电子设备,该电子设备包括存储器和处理器,存储器用于存储程序数据,程序数据能够被处理器执行,以实现上述的线程来源获取方法。
为了解决上述问题,本申请采用的又一个技术方案是:提供一种计算机可读存储装置,存储有程序数据,能够被处理器执行,以实现上述的线程来源获取方法。
本申请的有益效果是:通过钩子函数监听在预设函数库的线程创建行为,在线程创建行为发生时通过钩子函数获取与创建行为对应的调用栈,如此所获取的调用栈就会自动携带有线程的创建来源,也即线程是具体由哪个函数库所创建,那么可以获取调用栈中用于识别线程创建来源的线程创建数据,线程创建数据就可以识别出线程创建来源,在函数库不对线程命名的情况,本申请也能够有效地识别出线程的创建来源,进而可以更有效地管理线程,推动应用程序管理的规范化。
附图说明
图1是本申请电子设备实施例的电路结构示意框图;
图2是本申请线程来源获取方法实施例的流程时序示意图;
图3是本申请线程来源获取方法实施例的流程示意图;
图4是本申请计算机可读存储装置实施例的结构示意框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以Android系统为例,大多数的APP为了方便地实现更多的功能,都会集成众多函数库,尤其是第三方库,APP在使用过程中都会在函数库中都会创建很多线程,目前Android系统的应用管理不够规范化,许多函数库经常不给线程取名,就容易导致创建的线程过多或者重复创建线程,且很难获知线程的来源,如此也就难以推动各函数库优化线程数,难以实现规范化管理。本申请的发明人通过不断试验尝试过多种方式,例如在线程运行时抓取运行调用栈快照,从调用栈中分析创建来源,这种方法的缺点是:通过线程池创建的线程,调用栈快照中并不包含真正的调用者,无法找到线程创建者。
为了改善上述的技术问题,本申请提出了如下的实施例:
如图1所示,本申请电子设备实施例描述的电子设备10可以是电脑、手机、平板电脑、服务器或智能穿戴设备等。电子设备10可以包括处理器100和存储器200,还可以包括显示器300。处理器100可以通过通讯总线与存储器200和显示器300连接。
处理器100用于控制电子设备的操作,处理器100还可以称为CPU(CentralProcessingUnit,中央处理单元)。处理器100可以是一种集成电路芯片,具有信号的处理能力。处理器100还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器200可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动盘、CD-ROM,等等。存储器200可以存储有程序数据,程序数据例如可包括单条指令、或许多条指令,且可分布在若干不同的代码段上,分布在不同的程序间以及跨多个存储器200分布。存储器200可被耦接到处理器100以使得该处理器100能从/向该存储器200读写信息。当然,存储器200可以被整合到处理器100中。
显示器300用于电子设备10的显示,例如显示应用程序的页面等。
处理器100可以用于执行存储器200中的程序数据,进而实现下述本申请线程来源获取方法实施例描述的线程来源获取方法。
上述电子设备10可以运行相应的应用程序,在运行应用程序过程中,应用程序可以在预设函数库调用相应的函数实现相应的功能。参阅图2和图3,本申请线程来源获取方法实施例可以是基于应用程序端的视角,对线程来源获取方法进行描述,具体可以包括如下步骤:
S10:通过钩子函数监听在预设函数库的线程创建行为。
钩子函数,也称Hook,是Windows、Android等操作系统的消息处理机制的一个平台。应用程序可以在上面设置子程序以监视指定的某种消息。钩子函数实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的前,钩子函数就先捕获该消息,这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
预设函数库是将在计算机等设备中各个应用或者设备本身执行某项命令时所调用的函数的集合。预设函数库可以包括一个或者多个子函数库,即每一个集合就是一个子函数库。子函数库之间可以相互独立,也可以彼此之间具有联系。子函数库可以为第三方库。第三方库可以包括第三方动态链接库。动态链接库是一个能够被应用程序和其它的动态链接库调用的过程和函数的集合,它里面包含的是公共代码或资源。动态链接库使得程序可以调用不属于其可执行代码的函数。以libc.so(C语言第三方动态链接库)为例,其可以用于Java层面对于C语言描写的函数的调用。
在步骤S10之前,应用程序需要调用预设函数库的某些函数实现某些功能时,可能需要在预设函数库中创建线程。以迅雷为例,迅雷如果正在运行,则其为一个进程。迅雷可以同时运行多个任务,例如在同时下载多个文件,那么每个下载任务都可以对应一个线程。在下载任务创立时,若需要调用预设函数库的某些函数,那么可能需要创建相应的线程。对于创建线程,可以通过如下步骤实现:
S09:响应于线程创建指令,基于JNI接口调用nativeCreate方法且进一步在预设函数库中调用pthread_create方法执行线程创建。
JNI(Java Native Interface)是Java本地接口,在这里连接了Java层和native层(原生层)。因为在不同的层级之间,程序语言一般无法直接跨越通信,所以需要通信接口以实现进行数据通信的目的。nativeCreate()函数是native层的。
pthread_create方法是类Unix操作系统((Unix、Linux、Mac OS X等))的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。
在预设函数库中创建线程,一般是通过JNI接口调用nativeCreate函数,执行nativeCreate函数以在预设函数库中调用pthread_create()函数,进而请求内核创建线程。
在预设函数库中创建线程会发生线程创建行为,具体如何通过钩子函数监听线程创建行为,可以通过S10包括的如下步骤实现:
S11:通过PLT Hook方法使得钩子函数挂接预设函数库,进而使得钩子函数能够监听线程创建行为。
PLT Hook方法是指当应用程序需要调用预设函数库中的目标函数(例如,用于创建线程的函数)时会使用PLT(Procedure Linkage Table)程序链接表和GOT(GlobalOffsetTable)全局偏移表来协调配合,调用执行钩子函数的自定义的功能函数,从而达到挂接预设函数库的目的。如此,使得目标函数一旦被调用,钩子函数会执行相应的功能函数,实现相应的功能。
具体地,当应用程序需要调用预设函数库中被挂接的目标函数时,PLT Hook方法会使程序首先调用PLT程序链接表。PLT程序链接表中有着与预设函数库中执行的目标函数对应的项目。当跳转至该项目后,会由该项目跳转到GOT全局偏移表,希望得到该函数的实际地址。GOT全局偏移表会执行相应的函数,比如_dl_runtime_resolve()函数,以及上述被挂接的目标函数。而第二次以及后面的执行中,GOT在跳转时所执行的相应函数对应的地址被修改成了目标函数地址,例如_dl_runtime_resolve()函数对应地址会被修改成目标函数地地址,如此,所有对该被挂接的目标函数进行调用的地方就都会被Hook到。当在预设函数库中调用了PLT程序链接表中项目所对应的函数,都会执行Hook功能。
通过利用PLT Hook方法简单有效地实现对预设函数库的线程创建行为的监控,进而后续便于对线程创建行为的溯源。
线程创建行为可以对应于上述步骤S09中的调用pthread_create方法,也即当调用pthread_create方法被调用时,则表明预设函数库中发生线程创建行为。如此,步骤S10可以具体包括如下步骤:
S12:通过钩子函数监听在预设函数库中调用pthread_create方法执行的线程创建行为。
若钩子函数没有监听到预设函数库发生线程创建行为,则可以继续保持监听状态,直到监听到线程创建行为。在监听到线程创建行为时,可以执行步骤S20。
S20:在钩子函数监听到预设函数库发生线程创建行为时,获取钩子函数所捕获的与线程创建行为对应的调用栈。
调用栈是应用程序运行过程中存储有关函数被调用等消息的栈,可以用于查看当前栈堆上的函数或过程调用。通过获取与线程创建行为对应的调用栈,可以知道关于线程创建行为对应的函数的调用过程,进而可以知道其是在哪个子函数库被调用。例如,获取pthread_create()函数的调用栈,获取其被调用的过程。
对于具体获取调用栈的过程,可以通过S20包括的如下步骤实现:
S21:在钩子函数监听到pthread_create方法执行时,先通过钩子函数执行getStack方法获取调用栈。
getStack方法,对应的是getStackTrace()函数,可以表示该线程堆栈转储的堆栈跟踪元素数组。在本实施例中,具体可以通过getStackTrace()函数返回pthread_create()函数的调用栈的相关数组。
S22:基于JNI接口调用printstack方法打印调用栈。
Printstack方法,对应的是printstackTrace()函数。当钩子函数监听到pthread_create方法执行时,会先行跳转执行getStack方法,其会调用printstack方法打印出当前调用栈的相关信息。而此时pthread_create方法还未执行完毕,即pthread_create方法还未取走存储于调用栈中的返回地址。因此,调用栈中此时还包含着当前时刻pthread_create方法的调用信息,其中涉及调用pthread_create方法的创建线程的来源信息,也即是在哪个子函数库调用的。
S30:获取调用栈所包含的用于识别线程创建来源的线程创建数据。
线程创建数据是用于识别线程创建来源,用于识别其是哪个子函数库所创建的。例如,线程创建数据可以包括相应子函数库的包名。包名作为应用的标识,用于识别不同的应用,每个应用都有唯一的一个包名。不同的子函数库对应的不同包名。通过获取线程创建数据,就能够快捷有效地获取线程来源。
S40:分析线程创建数据,进而识别作为线程创建来源的子函数库。
通过线程创建数据中所包含的包名,识别包名对应的子函数库。如此能够有效地识别相应的子函数库,识别线程创建来源,可以进行相应的统计分析,推动线程规范化。
S50:对线程创建数据对应的线程进行归类处理,以使得同属于相同的子函数库的线程处于同一分类。
通过线程创建数据包含的包名与子数据库的包名的比较,当包名一致时,将相应的线程归属于该子函数库。当包名不一致时,则表明相应的线程不属于该子数据库,进而与另一子函数库的包名进行比较,重复上述行为,直至包名一致,将线程归属于所属的子函数库中。如此,能够有效地统计各第三库的线程数,进而可以推导线程规范化,也能够推导线程较多或者重复创建线程的第三方库进行优化。
在本申请所提供的几个实施例中,应该理解到,所揭露的电子设备和线程来源获取方法,可以通过其它的方式实现。例如,以上所描述的各实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读的存储装置中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储装置中,具有包括若干指令(程序数据)用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。如图4所示,而前述的存储装置可以被计算机所读取,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种计算机可读存储装置20以及具有上述存储装置的电脑、手机、笔记本电脑、平板电脑、相机等电子设备。
综上,上述实施例通过钩子函数监听线程函数创建的行为,在线程创建行为发生时通过钩子函数获取与创建行为对应的调用栈,如此所获取的调用栈就会自动携带有线程的创建来源,进而可以获取调用栈中用于识别线程创建来源的线程创建数据,线程创建数据就可以识别出线程创建来源,在函数库不对线程命名的情况,本申请也能够快速地有效地识别出线程的创建来源,进而可以更有效地管理线程,推动应用程序管理的规范化。
以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (7)
1.一种线程来源获取方法,其特征在于,包括:
通过钩子监听在预设函数库的线程创建行为;
在所述钩子监听到所述预设函数库发生所述线程创建行为时,获取所述钩子所捕获的与所述线程创建行为对应的调用栈;
获取所述调用栈所包含的用于识别线程创建来源的线程创建数据;
其中,在通过钩子监听在预设函数库的线程创建行为之前,包括:
响应于线程创建指令,基于JNI接口调用nativeCreate方法且进一步在所述预设函数库中调用pthread_create方法执行线程创建;
所述通过钩子监听在预设函数库的线程创建行为,包括:
通过所述钩子监听在所述预设函数库中调用pthread_create方法执行的所述线程创建行为;
所述获取所述钩子所捕获的与所述线程创建行为对应的调用栈,包括:
在所述钩子监听到所述pthread_create方法执行时,先通过所述钩子执行getStack方法获取所述调用栈;
基于所述JNI接口调用printstack方法打印所述调用栈。
2.根据权利要求1所述的线程来源获取方法,其特征在于:所述预设函数库包括多个子函数库,在所述获取所述调用栈内所包含的用于识别线程创建来源的线程创建数据之后,包括:
分析所述线程创建数据,进而识别作为所述线程创建来源的所述子函数库。
3.根据权利要求2所述的线程来源获取方法,其特征在于:
在所述分析所述线程创建数据,进而识别作为所述线程创建来源的所述子函数库之后,包括:
对所述线程创建数据对应的线程进行归类处理,以使得同属于相同的所述子函数库的所述线程处于同一分类。
4.根据权利要求2或3所述的线程来源获取方法,其特征在于:
所述子函数库为第三方库,所述第三方库包括第三方动态链接库。
5.根据权利要求1所述的线程来源获取方法,其特征在于:
所述通过钩子监听在预设函数库的线程创建行为,包括:
通过PLT Hook方法使得钩子挂接所述预设函数库,进而使得所述钩子能够监听所述线程创建行为。
6.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有程序数据,所述程序数据能够被所述处理器执行,以实现如权利要求1-5任一项所述的线程来源获取方法。
7.一种计算机可读存储装置,其特征在于:存储有程序数据,所述程序数据能够被处理器执行,以实现如权利要求1-5任一项所述的线程来源获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110247149.XA CN112882902B (zh) | 2021-03-05 | 2021-03-05 | 线程来源获取方法、电子设备以及计算机可读存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110247149.XA CN112882902B (zh) | 2021-03-05 | 2021-03-05 | 线程来源获取方法、电子设备以及计算机可读存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112882902A CN112882902A (zh) | 2021-06-01 |
CN112882902B true CN112882902B (zh) | 2023-02-14 |
Family
ID=76055625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110247149.XA Active CN112882902B (zh) | 2021-03-05 | 2021-03-05 | 线程来源获取方法、电子设备以及计算机可读存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112882902B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003390A (zh) * | 2021-11-16 | 2022-02-01 | 平安养老保险股份有限公司 | 一种确定异常线程的方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463485A (zh) * | 2017-06-26 | 2017-12-12 | 北京五八信息技术有限公司 | 基于方法栈的日志获取方法、装置和终端 |
CN109388537A (zh) * | 2018-08-31 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 运行信息跟踪方法、装置及计算机可读存储介质 |
CN109643269A (zh) * | 2016-06-29 | 2019-04-16 | 贝宝公司 | 网络运营应用程序监测 |
CN112035354A (zh) * | 2020-08-28 | 2020-12-04 | 北京指掌易科技有限公司 | 风险代码的定位方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7334163B1 (en) * | 2004-06-16 | 2008-02-19 | Symantec Corporation | Duplicating handles of target processes without having debug privileges |
US8677491B2 (en) * | 2010-02-04 | 2014-03-18 | F-Secure Oyj | Malware detection |
CN108228770A (zh) * | 2017-12-27 | 2018-06-29 | 青岛海信移动通信技术股份有限公司 | 一种应用文件来源查询的方法及装置 |
CN109542719B (zh) * | 2018-10-26 | 2022-05-13 | 金蝶软件(中国)有限公司 | 线程状态监控方法、装置、计算机设备和存储介质 |
-
2021
- 2021-03-05 CN CN202110247149.XA patent/CN112882902B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643269A (zh) * | 2016-06-29 | 2019-04-16 | 贝宝公司 | 网络运营应用程序监测 |
CN107463485A (zh) * | 2017-06-26 | 2017-12-12 | 北京五八信息技术有限公司 | 基于方法栈的日志获取方法、装置和终端 |
CN109388537A (zh) * | 2018-08-31 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 运行信息跟踪方法、装置及计算机可读存储介质 |
CN112035354A (zh) * | 2020-08-28 | 2020-12-04 | 北京指掌易科技有限公司 | 风险代码的定位方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
java中能否得到当前线程是由哪个对象创建来的;jamxval;《百度知道》;20160517;2 * |
Also Published As
Publication number | Publication date |
---|---|
CN112882902A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11210109B2 (en) | Method and system for loading resources | |
CN106844136B (zh) | 一种程序崩溃信息的收集方法及系统 | |
CN110069572B (zh) | 基于大数据平台的hive任务调度方法、装置、设备及存储介质 | |
CN111124906A (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
CN110457211B (zh) | 脚本性能测试方法、装置和设备及计算机存储介质 | |
US7962899B2 (en) | System for monitoring a target application and method thereof | |
CN108958729B (zh) | 一种数据处理方法、装置及存储介质 | |
CN111209122B (zh) | 接口调用方法、装置、电子设备及存储介质 | |
CN110750315B (zh) | Android系统中的类加载方法、装置、设备和存储介质 | |
CN111930472B (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN111831542B (zh) | Api应用调测方法及装置、存储介质 | |
CN112099800A (zh) | 代码数据的处理方法、装置和服务器 | |
CN107357731A (zh) | 进程产生core dump问题的监控、分析和处理方法 | |
CN110990132A (zh) | 异步任务处理方法、装置、计算机设备和存储介质 | |
CN109359092B (zh) | 文件管理方法、桌面显示方法、装置、终端及介质 | |
CN112214388A (zh) | 内存监控方法、装置、设备及计算机可读存储介质 | |
CN112882902B (zh) | 线程来源获取方法、电子设备以及计算机可读存储装置 | |
CN106383869B (zh) | 一种获取用户行为信息的方法及装置 | |
CN111124627B (zh) | 应用程序的调起者确定方法、装置、终端及存储介质 | |
CN115952491B (zh) | hook目标函数的方法、装置、电子设备及介质 | |
CN110764745A (zh) | 变量的传输和收集方法、装置及计算机可读存储介质 | |
WO2020073200A1 (zh) | 调试程序的方法和系统 | |
CN106708737B (zh) | 一种测试方法及装置 | |
CN113342376B (zh) | 一种针对物联网设备的操作系统进行升级的方法及装置 | |
CN113467879A (zh) | 基于rpa机器人的多系统数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |