CN113051166A - ***追踪方法、装置、设备及存储介质 - Google Patents
***追踪方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113051166A CN113051166A CN202110343174.8A CN202110343174A CN113051166A CN 113051166 A CN113051166 A CN 113051166A CN 202110343174 A CN202110343174 A CN 202110343174A CN 113051166 A CN113051166 A CN 113051166A
- Authority
- CN
- China
- Prior art keywords
- event
- trace
- tracking
- program
- script
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 239000000523 sample Substances 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 27
- 238000004458 analytical method Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 11
- 230000001360 synchronised effect Effects 0.000 claims description 5
- 238000003780 insertion Methods 0.000 claims description 2
- 230000037431 insertion Effects 0.000 claims description 2
- 238000000926 separation method Methods 0.000 abstract description 5
- 238000001514 detection method Methods 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- VQLYBLABXAHUDN-UHFFFAOYSA-N bis(4-fluorophenyl)-methyl-(1,2,4-triazol-1-ylmethyl)silane;methyl n-(1h-benzimidazol-2-yl)carbamate Chemical compound C1=CC=C2NC(NC(=O)OC)=NC2=C1.C=1C=C(F)C=CC=1[Si](C=1C=CC(F)=CC=1)(C)CN1C=NC=N1 VQLYBLABXAHUDN-UHFFFAOYSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了一种***追踪方法、装置、设备及存储介质,所述方法包括:确定追踪对象在源程序中的第一位置;根据所述追踪对象的配置文件生成第一脚本,并根据所述第一脚本和预先生成的探针脚本生成追踪程序代码;将所述追踪程序代码***所述源程序中的所述第一位置;接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件。在不改变源***代码以及源***的状态的情况下,保证了追踪程序代码所对应的程序不影响***的逻辑正确性,达到追踪程序代码与***的分离,实现***运行时的动态插桩,且简化了探测的复杂度,易于实现。
Description
技术领域
本公开涉及计算机视觉技术,尤其涉及一种***追踪方法、装置、设备及存储介质。
背景技术
分布式***中性能瓶颈的定位与分析是分布式***的研究难点之一。目前常用做法是对***的关键部分进行显式代码插桩,以搜集***运行期间的关键信息。然而该种方式需要对***的模块代码进行更改并对整个***进行重新部署,无法应用于线上运行***。因此,需要开发一种无需对被追踪的***做显示代码级更改的***追踪方案。
发明内容
本公开提供一种***追踪方案,以至少解决相关技术中***追踪需要对模块代码进行更改并对***进行重新部署的问题。本公开的技术方案如下:
根据本发明的一方面,提出一种***追踪方法,所述方法包括:确定追踪对象在源程序中的第一位置;根据所述追踪对象的配置文件生成第一脚本,并根据所述第一脚本和预先生成的探针脚本生成追踪程序代码;将所述追踪程序代码***所述源程序中的所述第一位置;接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件。
结合本公开提供的任一实施方式,所述根据对所述追踪对象进行配置的配置文件生成第一脚本,包括:通过配置接口接收指定所述追踪对象的指令;根据所述指令生成配置文件;通过编译所述配置文件生成所述第一脚本。
结合本公开提供的任一实施方式,在根据所述追踪对象的配置文件生成第一脚本之前,所述方法还包括:检测所述配置文件的合法性。
结合本公开提供的任一实施方式,所述接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件,包括:在源程序运行至所述追踪程序代码时,使所运行的追踪程序接收所述源程序的控制流;所述方法还包括:在记录所述追踪事件后,使所述控制流返回至所述源程序中的第一位置。
结合本公开提供的任一实施方式,所述接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件,包括:通过事件记录内核线程接收所述追踪对象产生的追踪事件,其中,所述事件记录内核线程由装载在内核中的事件记录内核模块启动;将所述追踪事件存储在事件队列中。
结合本公开提供的任一实施方式,所述方法还包括:通过所述事件记录内核模块向用户空间导出内核接口,以使用户态程序通过所述内核接口读取所述事件队列,并将所述事件队列转换为设定格式后发送至日志分析***,以使所述日志分析***对所述追踪事件进行分析处理。
结合本公开提供的任一实施方式,所述方法还包括,对于所述追踪事件,标定产生所述追踪事件的追踪对象,和/或标定所述追踪事件的父事件。
结合本公开提供的任一实施方式,所述***包括分布式***,所述追踪对象包括函数、远程调用指令、模块中的一项或多项。
结合本公开提供的任一实施方式,利用IEEE1588协议对所述分布式***中的节点时间进行同步。
根据本公开的一方面,提出一种***追踪装置,所述装置包括:确定单元,用于确定追踪对象在源程序中的第一位置;生成单元,用于根据所述追踪对象的配置文件生成第一脚本,并根据所述第一脚本和预先生成的探针脚本生成追踪程序代码;***单元,用于将所述追踪程序代码***所述源程序中的所述第一位置;记录单元,用于接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件。
结合本公开提供的任一实施方式,所述生成单元在用于根据所述追踪对象的配置文件生成第一脚本时,具体用于:通过配置接口接收指定所述追踪对象的指令;根据所述指令生成配置文件;通过编译所述配置文件生成所述第一脚本。
结合本公开提供的任一实施方式,所述装置还包括检测单元,用于在根据所述追踪对象的配置文件生成第一脚本之前,检测所述配置文件的合法性。
结合本公开提供的任一实施方式,所述记录单元具体用于:在源程序运行至所述追踪程序代码时,使所运行的追踪程序接收所述源程序的控制流;所述装置还包括:返回单元,用于在记录所述追踪事件后,使所述控制流返回至所述源程序中的第一位置。
结合本公开提供的任一实施方式,所述记录单元具体用于:通过事件记录内核线程接收所述追踪对象产生的追踪事件,其中,所述事件记录内核线程由装载在内核中的事件记录内核模块启动;将所述追踪事件存储在事件队列中。
结合本公开提供的任一实施方式,所述装置还包括内核接口导出单元,用于通过所述事件记录内核模块向用户空间导出内核接口,以使用户态程序通过所述内核接口读取所述事件队列,并将所述事件队列转换为设定格式后发送至日志分析***,以使所述日志分析***对所述追踪事件进行分析处理。
结合本公开提供的任一实施方式,所述装置还包括标定单元,用于对于所述追踪事件,标定产生所述追踪事件的追踪对象,和/或标定所述追踪事件的父事件。
结合本公开提供的任一实施方式,所述***包括分布式***,所述追踪对象包括函数、远程调用指令、模块中的一项或多项。
结合本公开提供的任一实施方式,利用IEEE1588协议对所述分布式***中的节点时间进行同步。
根据本公开的一方面,提出一种电子设备,包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现本公开任一实施方式所述的方法。
根据本公开的一方面,提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开任一实施方式所述的方法。
根据本公开的一方面,提出一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本公开任一实施方式所述的方法。
在本公开实施例中,根据所述追踪对象的配置文件所生成的第一脚本和预先生成的探针脚本生成追踪程序代码,将所述追踪程序代码***所述源程序中所棕追踪对象所在的第一位置,接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件,在不改变源***代码以及源***的状态的情况下,保证了追踪程序代码所对应的程序不影响***的逻辑正确性,达到追踪程序代码与***的分离,实现***运行时的动态插桩,且简化了探测的复杂度,易于实现。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开至少一个实施例提供的一种***追踪方法的流程图;
图2为本公开至少一个实施例提供的一种***追踪方法中函数调用的示意图;
图3为本公开至少一个实施例提供的一种***追踪装置的结构示意图;
图4为本公开至少一个实施例提供的一种电子设备的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
相关技术中,对于分布式***的追踪,通常是直接将追踪程序代码写在所要追踪的***中,例如在调用函数func()之前记录事件的时间戳,产生事件的ID、继承该事件的父ID等,因此需要更改源***,无法应用于线上运行***。
有鉴于此,本公开提出了一种***追踪方法,可应用于服务器和/或分布式***中的节点。图1为本公开至少一个实施例提供的一种***追踪方法的流程图。如图1所示,该方法包括步骤101~步骤104。
在步骤101中,确定追踪对象在源程序中的第一位置。
在本公开实施例中,进行追踪的***可以是分布式***,例如lustre分布式文件***等等。
对于分布式***的追踪,所述追踪对象可以包括函数、远程调用指令(RemoteProcedure Call,RPC)、模块中的一项或多项。其中,所述模块为运行时可添加到内核中的代码,例如linux***中文件***的驱动代码模块。
确定追踪对象在源程序中的第一位置,也即确定追踪对象在源程序的代码中的位置,例如所述追踪对象在源程序代码中的第几行。
在步骤102中,根据所述追踪对象的配置文件生成第一脚本,并根据所述第一脚本和预先生成的探针脚本生成追踪程序代码。
在本公开实施例中,可以利用专用设计的编译器对配置文件进行编译,以生成对应的第一脚本,该第一脚本例如为tapscript脚本。所述探针脚本可以是针对进行追踪的***专用设计的探针脚本,例如同样为tapscript脚本。通过将所述第一脚本和所述探针脚本进行编译,可以生成追踪程序代码。所述程序追踪代码可以是一种用于追踪事件生成与记录的功能代码。
在一个示例中,可以通过内核探测工具systemtap,对所述第一脚本和所述探针脚本进行综合编译,以生成linux内核模块,通过该内核模块实现事件生成与记录功能。
在步骤103中,将所述追踪程序代码***所述源程序中的所述第一位置。
在本公开实施例中,可以利用所述追踪程序代码替换所述第一位置处的指令,在源程序运行至所述追踪程序代码时,所述追踪程序接收所述源程序的控制流。在所述追踪程序运行完毕,并记录所述追踪之后,使所述控制流至所述原程中的第一位置,也即返回所述追踪对象原本的位置(第一位置)。也即是说,在本公开实施例中,通过将追踪程序代码动态***到追踪对象,例如函数、RPC、模块等等,使追踪程序仅记录***的状态信息,不更改***的状态。
在步骤104中,接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件。
通过将所述追踪程序代码***至所述追踪对象中,在源程序运行至所述追踪对象时,对于执行所述位置处的针对所述追踪对象的指令所产生的事件,可以进行追踪,并记录所述追踪事件。
以图2所示的函数调用为例,其中,追踪对象为函数Func()。在调用函数Func()的情况下,首先向服务器发送RPC请求;服务器接收客户端发送的RPC请求,执行所述函数,并返回RPC确认;客户端接收所述RPC确认,并返回所述函数Func()。在上述调用函数Func()过程中所产生的事件,即是需要追踪的事件。
在一些实施例中,执行所述追踪程序代码所运行的追踪程序可以将追踪事件发送至服务器和/或节点的内核线程,所述服务器和/或节点通过内核线程接收所述追踪对象产生的追踪事件。
在本公开实施例中,根据所述追踪对象的配置文件所生成的第一脚本和预先生成的探针脚本生成追踪程序代码,将所述追踪程序代码***所述源程序中所棕追踪对象所在的第一位置,接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件,在不改变源***代码以及源***的状态的情况下,保证了追踪程序代码所对应的程序不影响***的逻辑正确性,达到追踪程序代码与***的分离,实现***运行时的动态插桩,且简化了探测的复杂度,易于实现。
在一些实施例中,可以通过以下方式生成第一脚本。
首先,通过配置接口接收指定追踪对象的指令生成配置文件。
以通过内核探测工具systemtap进行插桩为例,相关技术中通常需要用户直接编写追踪程序,例如tapscript程序,而一旦用户编写的程序出现缺陷会导致源***崩溃退出。鉴于用户的行为是不可控的,在本公开实施例中向用户屏蔽编写追踪程序的操作权限,通过向用户导出一组配置接口,也即用户只需要按照要求编写配置文件,例如输入指定的追踪对象,无需编写追踪程序。
接下来,通过编译所述配置文件生成所述第一脚本。
在本公开实施例中,通过向用户导出配置接口,以接收用户指定追踪对象的指令,根据所述指令生成配置文件,并通过编译所述配置文件生成第一脚本,避免了用户的误操作而导致的***崩溃问题。
在一些实施例中,还可以在编译所述配置文件之前,检测所述配置文件的合法性。从而进一步保障了用户输入指令的准确性,避免了用户的误操作所引起的问题。
在一些实施例中,在执行所述追踪程序代码所运行的追踪程序可以将追踪事件发送至服务器和/或节点的内核线程,所述服务器和/或节点通过内核线程接收所述追踪对象产生的追踪事件的情况下,并将所述追踪事件存储在事件队列中。其中,所述追踪事件的接收以及记录,可以通过内核模块执行。
在一些实施例中,可以通过用户态转发程序,将内核模块所记录的追踪事件转发至专用的日志分析***进行分析。
在一个示例中,可以通过将所述第一脚本和预先获得的探针脚本编译成内核模块,并将所述内核模块装载至内核,建立所追踪的***与外部探针***的接口。
其中,所述探针脚本可以是针对所追踪的***专用设计的,例如针对lustre分布式***专用设计的隐式探针tapscript脚本;可以通过systemtap将所述第一脚本和所述探针脚本综合编译成内核模块,并下载至内核中。
在本公开实施例中,所建立的内核接口包括探针(prob)接口、追踪(tracing)接口、事件(event)接口中的一种或多种。
在一些实施例中,可以向用户空间导出所述内核接口,以使用户态程序通过所述内核接口读取所述事件队列,并将所述事件队列转换为设定格式,例如json格式,之后发送至日志分析***,以使所述日志分析***对所述追踪事件进行事件时序重建、事件汇总、事件存储、事件解析、追踪对象的可视化、追踪对象的查询、事件采样频率控制等等中的一项或多项。
在所追踪的***为分布式***的情况下,分布式***中的各个节点都在不断的记录事件,并将事件发送至所述日志分析***。
例如,可以通过http模块或socket模块,对所述设定格式的事件队列进行发送,所述日志分析***可以以其他的语言格式,例如python、go等等,对所述追踪事件进行分析。
在一些实施例中,所述日志分析***可以是具有web前端的***,例如基于zipkin基础平台进行改造,使得能够支持函数、RPC、模块等追踪对象的***。
在本公开实施例中,通过具有web前端的日志分析***,对追踪事件进行分析、汇总、存储、重建等操作,可以实现对分布式***的追踪与性能分析,并且便于用户查看以及操作。
在本公开实施例中,所述方法还包括对于所述追踪事件,标定产生所述追踪事件的追踪对象,和/或标定所述追踪事件的父事件,以使所述日志分析***能够重建追踪对象所产生的所有事件的时序。仍以图2所示的函数调用为例,客户端的函数调用Func()产生函数调用事件,同时在该函数的调用过程中又产生发送RPC事件,在服务端产生了针对该RPC的接收事件,同时服务端又产生其他的函数调用,之后产生向客户端发送RPC确认(RPCack)事件,客户端接收到对应的RPC确认后产生接收RPC确认事件,最后客户端产生返回Func()事件。上述事件都对应于Func()追踪对象。
在本示例中,对于每一个事件一方面标记所要追踪的对象Func(),另一方面标记所述事件的父事件,比如图2中接收RPC的父事件是发送RPC事件,发送RPC的父事件是函数调用事件。
在本公开实施例中,通过对于追踪事件标定产生该事件的追踪对象,和/或标定所述追踪事件的父事件,能够使日志分析***快速、高效地重建追踪对象所产生的追踪事件的时序。
在对分布式***运行时的行为追踪的过程中,延迟是重要的参考指标。通过延迟可以定位当前***中较运行较慢的部件。单机***中定位***中较慢部分的方式可以通过直接获取***运行时间得到,比如通过对函数的调用以及返回加入时间戳后可以获取对应函数的运行时间。然而对于分布式***,节点(机器)之间的时间可能存在偏差,导致通过时间戳的方式无法精确确定某个操作的时间延迟。
仍以图2所示的函数调用为例,图2中t2时刻向服务器端发送RPC请求,t3时刻服务端接收到客户端发来的RPC请求。在客户端与服务器端时间是同步的情况下,可以通过t3-t2获得RPC通信的延迟;然而,在客户端与服务端时间不同步的情况下,是无法直接获取PRC通信的延迟的。比如,t2相对于客户端的时刻为100,RPC通信延迟为10,则t3的时刻应为110,但由于时间的不同步,实际上测量得到的t3为80,可见通过计算t3-t2来获得RPC通信延迟是不可行的,因此需要构建分布式***的同步***。
相关技术中通常使用NTP同步协议来构建分布式***的同步***,然后该方法得到的延迟粒度过粗,通常为数十毫秒级的延迟,无法满足分布式***实时追踪的需求。
在本公开实施例中,可以利用IEEE1588协议对所述分布式***中的节点时间进行同步,以将分布式***中的主机同步在纳秒级。
图3为本公开至少一个实施例提供的一种***追踪装置的结构示意图,如图3所示,所述装置包括:确定单元301,用于确定追踪对象在源程序中的第一位置;生成单元302,用于根据所述追踪对象的配置文件生成第一脚本,并根据所述第一脚本和预先生成的探针脚本生成追踪程序代码;***单元303,用于将所述追踪程序代码***所述源程序中的所述第一位置;记录单元304,用于接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件。
在一些实施例中,所述生成单元在用于根据所述追踪对象的配置文件生成第一脚本时,具体用于:通过配置接口接收指定所述追踪对象的指令;根据所述指令生成配置文件;通过编译所述配置文件生成所述第一脚本。
在一些实施例中,所述装置还包括检测单元,用于在根据所述追踪对象的配置文件生成第一脚本之前,检测所述配置文件的合法性。
在一些实施例中,所述记录单元具体用于:在源程序运行至所述追踪程序代码时,使所运行的追踪程序接收所述源程序的控制流;所述装置还包括:返回单元,用于在记录所述追踪事件后,使所述控制流返回至所述源程序中的第一位置。
在一些实施例中,所述记录单元具体用于:通过事件记录内核线程接收所述追踪对象产生的追踪事件,其中,所述事件记录内核线程由装载在内核中的事件记录内核模块启动;将所述追踪事件存储在事件队列中。
在一些实施例中,所述装置还包括内核接口导出单元,用于通过所述事件记录内核模块向用户空间导出内核接口,以使用户态程序通过所述内核接口读取所述事件队列,并将所述事件队列转换为设定格式后发送至日志分析***,以使所述日志分析***对所述追踪事件进行分析处理。
在一些实施例中,所述装置还包括标定单元,用于对于所述追踪事件,标定产生所述追踪事件的追踪对象,和/或标定所述追踪事件的父事件。
在一些实施例中,所述***包括分布式***,所述追踪对象包括函数、远程调用指令、模块中的一项或多项。
在一些实施例中,利用IEEE1588协议对所述分布式***中的节点时间进行同步。
图4为本公开至少一个实施例提供的电子设备,包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现本说明书任一实施例所述的***追踪方法。
本公开至少一个实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本说明书任一实施例所述的***追踪方法。
本公开至少一个实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本公开任一实施方式所述的***追踪方法。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、***或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书实施例还提供一种计算机可读存储介质,该存储介质上可以存储有计算机程序,所述程序被处理器执行时实现本说明书任一实施例描述的驾驶员注视区域的检测方法的步骤,和/或,实现本说明书任一实施例描述的驾驶员注视区域的神经网络的训练方法的步骤。其中,所述的“和/或”表示至少具有两者中的其中一个,例如,“A和/或B”包括三种方案:A、B、以及“A和B”。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位***(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种***模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和***通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (13)
1.一种***追踪方法,其特征在于,所述方法包括:
确定追踪对象在源程序中的第一位置;
根据所述追踪对象的配置文件生成第一脚本,并根据所述第一脚本和预先生成的探针脚本生成追踪程序代码;
将所述追踪程序代码***所述源程序中的所述第一位置;
接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件。
2.根据权利要求1所述的方法,其特征在于,所述根据对所述追踪对象进行配置的配置文件生成第一脚本,包括:
通过配置接口接收指定所述追踪对象的指令;
根据所述指令生成配置文件;
通过编译所述配置文件生成所述第一脚本。
3.根据权利要求2所述的方法,其特征在于,在根据所述追踪对象的配置文件生成第一脚本之前,所述方法还包括:
检测所述配置文件的合法性。
4.据权利要求1至3任一项所述的方法,其特征在于,所述接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件,包括:
在源程序运行至所述追踪程序代码时,使所运行的追踪程序接收所述源程序的控制流;
所述方法还包括:
在记录所述追踪事件后,使所述控制流返回至所述源程序中的第一位置。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件,包括:
通过事件记录内核线程接收所述追踪对象产生的追踪事件,其中,所述事件记录内核线程由装载在内核中的事件记录内核模块启动;
将所述追踪事件存储在事件队列中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过所述事件记录内核模块向用户空间导出内核接口,以使用户态程序通过所述内核接口读取所述事件队列,并将所述事件队列转换为设定格式后发送至日志分析***,以使所述日志分析***对所述追踪事件进行分析处理。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括,对于所述追踪事件,标定产生所述追踪事件的追踪对象,和/或标定所述追踪事件的父事件。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述***包括分布式***,所述追踪对象包括函数、远程调用指令、模块中的一项或多项。
9.根据权利要求8所述的方法,其特征在于,利用IEEE1588协议对所述分布式***中的节点时间进行同步。
10.一种***追踪装置,其特征在于,所述装置包括:
确定单元,用于确定追踪对象在源程序中的第一位置;
生成单元,用于根据所述追踪对象的配置文件生成第一脚本,并根据所述第一脚本和预先生成的探针脚本生成追踪程序代码;
***单元,用于将所述追踪程序代码***所述源程序中的所述第一位置;
记录单元,用于接收执行所述追踪程序代码时生成的追踪事件并记录所述追踪事件。
11.一种电子设备,其特征在于,包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现权利要求1至9任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至9任一项所述的方法。
13.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110343174.8A CN113051166A (zh) | 2021-03-30 | 2021-03-30 | ***追踪方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110343174.8A CN113051166A (zh) | 2021-03-30 | 2021-03-30 | ***追踪方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113051166A true CN113051166A (zh) | 2021-06-29 |
Family
ID=76516918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110343174.8A Pending CN113051166A (zh) | 2021-03-30 | 2021-03-30 | ***追踪方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113051166A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108091A (zh) * | 2022-12-26 | 2023-05-12 | 小米汽车科技有限公司 | 数据处理方法、事件追踪分析方法、装置、设备及介质 |
CN116450120A (zh) * | 2023-06-06 | 2023-07-18 | 北京翼辉信息技术有限公司 | 实时操作***内核分析方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722434A (zh) * | 2012-05-24 | 2012-10-10 | 兰雨晴 | 一种针对Linux进程调度的性能测试方法和工具 |
CN105074671A (zh) * | 2013-03-27 | 2015-11-18 | 英特尔公司 | 用于在内核模块和设备驱动程序中检测并发编程错误的方法和*** |
CN105577480A (zh) * | 2016-02-01 | 2016-05-11 | 新浪网技术(中国)有限公司 | 一种网络连接性能的监测方法及装置 |
CN109284115A (zh) * | 2017-07-20 | 2019-01-29 | 北京国双科技有限公司 | 一种生成追踪器脚本的方法及装置 |
CN111597089A (zh) * | 2020-05-18 | 2020-08-28 | 广州锦行网络科技有限公司 | 一种Linux***调用事件采集和缓存装置及方法 |
-
2021
- 2021-03-30 CN CN202110343174.8A patent/CN113051166A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722434A (zh) * | 2012-05-24 | 2012-10-10 | 兰雨晴 | 一种针对Linux进程调度的性能测试方法和工具 |
CN105074671A (zh) * | 2013-03-27 | 2015-11-18 | 英特尔公司 | 用于在内核模块和设备驱动程序中检测并发编程错误的方法和*** |
CN105577480A (zh) * | 2016-02-01 | 2016-05-11 | 新浪网技术(中国)有限公司 | 一种网络连接性能的监测方法及装置 |
CN109284115A (zh) * | 2017-07-20 | 2019-01-29 | 北京国双科技有限公司 | 一种生成追踪器脚本的方法及装置 |
CN111597089A (zh) * | 2020-05-18 | 2020-08-28 | 广州锦行网络科技有限公司 | 一种Linux***调用事件采集和缓存装置及方法 |
Non-Patent Citations (2)
Title |
---|
DAVID CALAVERA等: "Linux内核观测技术BPF", 31 December 2020, 北京航空航天大学出版社, pages: 147 - 152 * |
肖支才等: "自动测试技术", 北京航空航天大学出版社, pages: 147 - 152 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108091A (zh) * | 2022-12-26 | 2023-05-12 | 小米汽车科技有限公司 | 数据处理方法、事件追踪分析方法、装置、设备及介质 |
CN116108091B (zh) * | 2022-12-26 | 2024-01-23 | 小米汽车科技有限公司 | 数据处理方法、事件追踪分析方法、装置、设备及介质 |
CN116450120A (zh) * | 2023-06-06 | 2023-07-18 | 北京翼辉信息技术有限公司 | 实时操作***内核分析方法、装置、设备及介质 |
CN116450120B (zh) * | 2023-06-06 | 2023-11-28 | 北京翼辉信息技术有限公司 | 实时操作***内核分析方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8205120B2 (en) | Intelligent test framework | |
Sambasivan et al. | Principled workflow-centric tracing of distributed systems | |
CN110083543B (zh) | 回归测试方法、装置、电子设备及存储介质 | |
US9146831B2 (en) | Sampling based runtime optimizer for efficient debugging of applications | |
US9634825B2 (en) | Apparatus and method for correcting time stamps of transactions performed by multiple servers | |
US10761964B2 (en) | Object monitoring in code debugging | |
CN113051166A (zh) | ***追踪方法、装置、设备及存储介质 | |
US9355003B2 (en) | Capturing trace information using annotated trace output | |
US10176078B1 (en) | Debugging process | |
US20160224461A1 (en) | Injected instrumentation application monitoring and management | |
US8826060B2 (en) | Correlation of log information in a distributed computing environment using relative timestamps | |
US10042745B2 (en) | Enhancing the debugger stack with recently reported errors under debug | |
US20060271345A1 (en) | Debugging a circuit using a circuit simulation verifier | |
US9697101B1 (en) | Detecting errors in web application runtime environments | |
US9141512B2 (en) | System and method for cluster debugging | |
US10824549B1 (en) | System and method for regression testing of an application programming interface | |
US20130275811A1 (en) | Devices for indicating a physical layer error | |
Goel et al. | Gretel: Lightweight fault localization for openstack | |
CN112702231B (zh) | 一种网络延时的测量方法及*** | |
US20110161716A1 (en) | Systems, methods, and apparatuses for providing access to real time information | |
WO2018020338A1 (en) | System, method, and apparatus for crowd-sourced gathering of application execution events for automatic application testing and replay | |
KR20150062654A (ko) | 소프트웨어 성능 측정 방법 및 장치 | |
US20230088503A1 (en) | Methods and apparatus to simulate metastability for circuit design verification | |
JP2015121531A (ja) | トレース情報とセンサ・データをリンク付けするためのシステムおよび方法 | |
CN110569184B (zh) | 一种测试方法及终端设备 |
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 |