CN109086193B - 监控方法、装置及*** - Google Patents

监控方法、装置及*** Download PDF

Info

Publication number
CN109086193B
CN109086193B CN201710445461.3A CN201710445461A CN109086193B CN 109086193 B CN109086193 B CN 109086193B CN 201710445461 A CN201710445461 A CN 201710445461A CN 109086193 B CN109086193 B CN 109086193B
Authority
CN
China
Prior art keywords
executable code
data
monitoring
address
memory
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
Application number
CN201710445461.3A
Other languages
English (en)
Other versions
CN109086193A (zh
Inventor
张超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710445461.3A priority Critical patent/CN109086193B/zh
Publication of CN109086193A publication Critical patent/CN109086193A/zh
Application granted granted Critical
Publication of CN109086193B publication Critical patent/CN109086193B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种监控方法、装置及***,该方法包括步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。本申请实施例可提高定位内存数据故障源的效率,降低定位内存数据故障源的实现成本。

Description

监控方法、装置及***
技术领域
本申请涉及计算机技术领域,尤其是涉及一种监控方法、装置及***。
背景技术
在日常的***运维和调测过程中,内存数据故障导致的问题的来源通常是随机产生的,因而难以定位。类似的问题比如包括:i)踩内存:程序内存由于被异常代码修改而导致错误,但是异常代码源却难以确定;ii)***引用计数错误:由于代码异常,在某些场景中添加了引用计数操作,但是却没有在匹配的场景下减少引用计数。iii);死锁问题:程序在运行过程中,触发死锁后,通常很容易就找到导致死锁的锁(通常为排它锁),但却无法确定导致死锁的锁当前被谁持有。
目前,一般采用排除法或代码分析方法确定内存数据故障源。显然,这样的方式耗时耗力,实现成本高且效率低下。因此实现成本低且效率高的定位内存数据故障源的方案是人们所普遍希望的。
发明内容
本申请实施例的目的在于提供一种监控方法、装置及***,以提高定位内存数据故障源的效率,降低定位内存数据故障源的实现成本。
为达到上述目的,一方面,本申请实施例提供了一种监控方法,包括以下步骤:
确定预定类型的操作访问预定的物理内存地址,则触发中断;
根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;
执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
另一方面,本申请实施例还提供了一种监控装置,包括:
中断触发模块,用于确定预定类型的操作访问预定的物理内存地址,则触发中断;
地址确定模块,用于根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;
数据监控模块,用于执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
再一方面,本申请实施例还提供了一种内存数据监控***,包括:
处理器;
存储器,用于存储监控装置,所述监控装置被所述处理器执行时,执行如下步骤:
确定预定类型的操作访问预定的物理内存地址,则触发中断;
根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;
执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
再一方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下步骤:
确定预定类型的操作访问预定的物理内存地址,则触发中断;
根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;
执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
由此可见,本申请实施例在指定监控范围内的内存地址被访问,且该访问属于预定类型的操作时,触发数据断点;并根据数据断点中的入口地址执行可执行代码,以根据可执行代码中的监控逻辑进行内存数据监控。这样,当需要监控何种类型的内存数据故障,就可以预先配置相应的监控逻辑。因此,与现有技术相比,本申请实施例这种自动定位内存数据故障源的方案提高了定位内存数据故障源的效率,降低了定位内存数据故障源的实现成本。
附图说明
此处所说明的附图用来提供对本申请实施例的进一步理解,构成本申请实施例的一部分,并不构成对本申请实施例的限定。在附图中:
图1为本申请一实施例的数据断点配置流程图;
图2为本申请一实施例的监控方法流程图;
图3为本申请一实施例的页表结构示意图;
图4为本申请一实施例的监控装置的结构框图;
图5为本申请一实施例的监控***的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本申请实施例做进一步详细说明。在此,本申请实施例的示意性实施例及其说明用于解释本申请实施例,但并不作为对本申请实施例的限定。
在实现本申请过程中,本申请的发明人经过长期研究发现:虽然内存数据故障导致的问题难以定位。但是,在当前某块内存区或某个具体的内存地址出现内存数据故障时,如果能通过一个数据断点使当前内存访问停下来就好了,这样就可以方便的抓取关键信息(比如进程pid、堆栈信息等),以便于根据关键信息确定是谁导致的内存数据故障。
基于这种思想,本申请的发明人还发现:比如Linux***等一些操作***支持数据断点的使用,但是,如果想通过数据断点实现内存数据故障源的定位,需要进行内核态编程,即需要编写内核模块并***到操作***中。由于内核模块编写和调试的难度极大,耗时费力,因此,基于这种方式的实现成本相当高,基本不具有可行性。
本申请的发明人进一步研究发现:扩展的伯克利包过滤器(extend berkeleypacket filter,ebpf)是一个由Berkeley提出的用于网络包过滤的过滤器。当用户需要根据预置的某些条件进行包过滤时(如根据网络包的协议类型、源/目的网络地址、包大小),可以自定义正则表达式来设置规则。对应的,正则表达式会被编译成ebpf语言,同时将编译好的数据传递给内核。在内核中,当有网络包到达时,ebpf引擎(即内核中内置的ebpf解释器,ebpf解释器能够加载ebpf可执代码并解析执行)会被调用,并通过执行ebpf可执代码判断当前的网络包是否为用户所需要的,如果是则记录相关信息。基于类似的思想,可考虑在用户态编写针对指定内存地址的内存监控代码,并将其编译成ebpf可执行代码加载到内核中;当内存被访问时,便可通过执行ebpf可执行代码实现针对指定内存地址的监控、过滤和记录,从而发现了一种监控内存数据故障的可行思路。
下面结合附图,对本申请基于上述可行思路的具体实施方式作进一步的详细说明。
本申请实施例中,要实现当数据断点被触发时,可在内核态利用数据断点中指定的用户态代码(即用户在用户态编写的程序代码)获取关键信息(比如进程pid、堆栈信息等),以便于根据这些关键信息确定内存数据故障,就需要预先配置这样的数据断点。参考图1所示,本申请实施例的数据断点配置可以包括如下步骤:
S101、用户根据指定监控的内存地址范围和内存操作类型,编写监控逻辑脚本。
本步骤是在用户态实现的,即用户可在用户态指定监控的内存地址范围和内存操作类型,并可在用户态根据指定监控的内存地址范围和内存操作类型,编写监控逻辑脚本。
本申请一些实施方式中,指定监控的内存地址范围和内存操作类型均可由用户根据需要指定。所述的指定例如可以是用户通过***提供的用户接口实现。其中,所述的用户接口例如可以是命令接口或图形界面接口等等。
在本申请一些示例性实施方式中,指定监控的内存地址范围可通过起始地址+数据长度的方式实现;在本申请另一些示例性实施方式中,指定监控的内存地址范围还可过设定起止地址的方式实现,等等。
本申请一些实施方式中,所述指定监控的内存地址范围可以为指定进程的内存逻辑地址范围、指定进程的内存线性地址范围、内核线性地址范围、内核逻辑地址范围、或者内核符号。其中,指定进程的可通过进程标识(pid,process identifier)识别。
本申请一些实施方式中,一般的,在编程语言中,内核符号指的是一个全局的变量或者函数。更一般地说,内核符号是一个代表着内存中指定空间的名称,这个空间存储着数据(可读或者可写的变量)或者指令(可以执行的函数)。以linux***为例,为了使不同的内核功能单元能够更好地协同工作,linux内核中有着数以千计的内核符号,每个内核符号对应着内存中的指定空间,因此,本申请一些实施方式中可通过指定内核符号的方式来指定监控的内存地址范围。
本申请一些实施方式中,所述预定类型的操作例如可以包括内存读操作、内存写操作和内存读写操作中的一种或多种。
在本申请的一些示例性实施方式中,所述监控逻辑脚本例如可以由用户通过用户接口编辑相应的正则表达式实现。在本申请的另一些示例性实施方式中,监控逻辑脚本还可由用户通过第三方工具(例如BCC(BPF Compiler Collection)等)编写。
在本申请一些实施方式中,所述监控逻辑脚本可以是针对某种或某些内存故障类型的监控逻辑。其中,每种监控逻辑中可包括有数据抓取规则,该数据抓取规则中规定了在发现对应内存数据故障时应记录的数据信息。
在本申请的一个示例性实施方式中,例如当针对踩内存问题进行监控处理时,其监控逻辑可以包括如下内容:
触发中断后,判断指定监控范围内的内存地址的数据是否被错误修改,当指定监控范围内的内存地址的数据被错误修改时,记录当前修内存改地址的进程标识、指令地址以及相关的堆栈信息,以便于后续可以根据这些信息定位故障源。其中,所述错误修改例如可以是:指定监控范围内的内存地址的数据超出用户定义的范围等等。
在本申请的另一个示例性实施方式中,例如当针对死锁问题进行监控处理时,其监控逻辑可以包括如下内容:
当进程进行加锁操作时,数据缓冲寄存器被触发,记录执行加锁的进程标识和堆栈信息。当该锁被释放的时候,也会触发写监控,以将之前对应的记录清除;当进程发生死锁时,读取锁记录找到对应的加锁地址,即可确定该锁是被哪个进程所持有而未被释放。
在本申请的另一个示例性实施方式中,比如当针对引用计数错误问题进行监控处理时,其监控逻辑可以包括如下内容:
当进程对计数进行增加操作时,数据缓冲寄存器被触发,记录执行该加操作的进程标识和堆栈信息;当进程对计数进行减小操作时,同样也会触发写监控,同样的记录执行减少操作的进程标识和堆栈信息;当进程触发引用计数错误时,通过读取以上两个记录,即可分析出导致该计数不平衡的原因。
S102、获取用户编写的监控逻辑脚本、以及用户指定监控的内存地址范围和内存操作类型。
本申请一些实施方式中,步骤S102~S105可以在内核态实现。所述的获取例如可以为将用户编写的监控逻辑脚本、以及用户指定监控的内存地址范围和内存操作类型读取至内存。
S103、将所述监控逻辑脚本转换成ebpf可执行代码。
本申请一些实施方式中,由于ebpf是一种汇编类型的语言,编写难度很高,因此,用户可在用户态采用C语言等易于实现的语言编写监控逻辑脚本。而当采用C语言等编写的脚本时,可通过操作***内置的编译器(例如虚拟解释器)将所述监控逻辑脚本转换成ebpf可执行代码,以便于在内核态实现用户的监控逻辑。在本申请的一个示例性实施方式中,所述虚拟解释器例如可以为低级虚拟机(Low Level Virtual Machine,LLVM)。由此,通过使用ebpf使得用户可以在可在用户态编写监控逻辑,从而避免了陷入复杂而困难的内核态编程及调试,实现成本大大降低。
当然,ebpf仅是作为数据断点被触发时,跳转执行用户预设的监控逻辑的工具之一,当采用其他具有类似功能的工具时,则可将监控逻辑脚本转换成该工具能够执行的可执行代码。
本申请一些实施方式中,所述的内核态是指:当一个进程(任务)执行***调用而陷入内核代码中执行时,一般称该进程处于内核运行态(或简称为内核态);此时处理器处于特权级最高的(0级)内核代码中执行。对应的,当进程在执行用户自己的代码时,则称其处于用户运行态(用户态),此时处理器在特权级最低的(3级)用户代码中运行。
S104、将所述ebpf可执行代码加载至内核地址空间中的指定内存段,并记录所述ebpf可执行代码的入口地址。
本申请一些实施方式中,ebpf可执行代码是在内核态执行,因此,需要在内核地址空间中指定一个内存段,以存储所述ebpf可执行代码。
S105、将所述指定监控的内存地址范围所对应的物理地址信息,以及所述内存操作类型写入数据缓冲寄存器,并在所述数据缓冲寄存器的数据结构(即操作***中对应表征该数据缓冲寄存器的数据结构)中,添加所述ebpf可执行代码的入口地址,从而完成数据断点配置。
本申请一些实施方式中,数据缓冲寄存器对应是一个真实的物理空间,其可以被以直接或间接寻址的方式访问,因此,写入数据缓冲寄存器的内存地址应是物理地址。而一般情况下,用户指定的内存地址范围多为逻辑地址、线性地址等,因而需要对用户指定的内存地址范围进行地址转换,以将这些逻辑地址、线性地址等转换成对应的物理地址信息。
为了便于理解本申请,下面介绍本申请实施例的一种地址转换的过程,具体的:
分页是将作业的逻辑地址划分为一系列同等大小的部分,每一部分称为一页。在分页存储管理中,页的存放可以是连续的,也可以是不连续的,这就增加了逻辑地址到物理地址转换的难度。如何在内存中找到页所对应的物理块(即字节单元)是地址转换的关键。为此,目前的操作***会为每个进程创建一个页表,如图3所示,该页表具有逻辑地址到物理地址映射的作用。由此,在进程逻辑地址空间中的每一页,依次在页表中有一个表项,其中记录了该页对应的物理块号,每个物理块与一个物理地址唯一对应。而在配置了页表之后,通过查找页表就可以很容易地找到该页所对应的物理地址。
本申请一些实施方式中,在所述数据断点的数据结构中,添加所述ebpf可执行代码的入口地址是为了在后续数据断点被触发时,可以根据该入口地址找到对应的ebpf可执行代码。其中,所述的入口地址即为上述步骤S103中内核地址空间中的指定内存段的起止地址。
本申请一些实施方式中,为了确保ebpf可执行代码的可执行性,在将所述ebpf可执行代码加载至内核地址空间中的指定内存段之前,还可以包括如下步骤:
检测所述ebpf可执行代码是否存在指定缺陷;
如果存在指定缺陷,则确认数据断点配置失败,并输出失败提示;如果不存在指定缺陷,则允许将所述ebpf可执行代码加载至内核地址空间中的指定内存段。
本申请一些实施方式中,所述指定缺陷例如可以包括死循环、触发异常和/或触发进程上下文切换的操作。其中,由于ebpf可执行代码是在内核态的中断上下文执行的,因此,需要确保ebpf可执行代码不会产生休眠等可能导致进程上下文切换的操作。
此外,需要说明的是,通常CPU的一个数据缓冲寄存器能够监控的内存地址长度是有上限的。因此,如果CPU只有一个数据缓冲寄存器时,此时,用户指定监控的内存地址范围不允许超过该数据缓冲寄存器的监控上限。而如果CPU有多个数据缓冲寄存器,当用户指定监控的内存地址范围超出一个数据缓冲寄存器的上限时,则可采用配置多个数据缓冲寄存器的方式来覆盖用户指定监控的内存地址范围,其中每个数据缓冲寄存器可被配置成监控用户指定监控的内存地址范围的一部分。这样,就相当于配置了多个数据断点,每个数据断点各司其职。
本申请一些实施方式中,在多核处理器环境下,即当***的处理器为多核处理器时,可对所述多核处理器中每个CPU核心的数据缓冲寄存器配置有相同的数据断点,以监控运行于每个CPU核心上的进程对指定监控范围内的内存地址的操作,避免出现监控遗漏。
参考图2所示,在完成上述数据断点配置的基础上,本申请一些实施方式的内存数据监控方法,可以包括以下步骤:
S201、确定预定类型的操作访问预定的物理内存地址,则触发中断。
一般的,当CPU执行一条指令时,会先将指令从内存取到数据缓冲寄存器(DR寄存器)中,然后再传送至指令寄存器,而指令划分为操作码和地址码字段。因此,在本申请的一些实施方式中,通过指令的地址码,数据缓冲寄存器可以判断出当前访问是否是针对指定监控范围内的内存地址的访问。
在本申请的一些实施方式中,当确认当前访问不是针对指定监控范围内的内存地址的访问时,数据缓冲寄存器结束对当前访问的监控,以进行下一个访问的监控。
指令的操作码则表示指令应进行什么性质的操作(比如读操作、写操作或读写操作)。因此,在本申请的另一些实施方式中,当确认当前访问是针对指定监控范围内的内存地址的访问时,通过指令的操作码,数据缓冲寄存器可进一步判断该访问是否属于预定类型的操作(例如内存读操作、内存写操作等);如果属于预定类型的操作,则数据缓冲寄存器触发中断;否则,数据缓冲寄存器结束对该访问的监控,以便于进行下一个访问的监控。
本申请的一些实施方式中,指定监控范围内的内存地址和预定类型的操作均构成数据断点的一部分;也就是说,数据断点中包含了用户指定的监控对象,监控对象可引起数据缓冲寄存器触发中断。此外,数据断点中还包含用户指定的监控逻辑。触发中断的目的是为了中断对内存的访问,以执行数据断点中用户指定的监控逻辑,从而便于实现内存数据故障的定位。
S202、根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址。
本申请一些实施方式中,参考图1所示的数据断点配置过程,由于数据断点与指定监控的内存地址范围是对应的,当指定监控的内存地址范围的某一或某些内存地址引起数据缓冲寄存器触发中断时,则根据触发所述中断的内存地址的可以很容易的确定数据断点。
S203、执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
本申请一些实施方式中,由于数据断点的数据结构中添加了ebpf可执行代码的入口地址,因此,从查找出的数据断点的数据结构中,可找到对应ebpf可执行代码的入口地址,然后调用ebpf引擎,以根据所述数据结构中的入口地址来执行ebpf可执行代码。
在本申请一些实施方式中,所述根据第一ebpf可执行代码中的监控逻辑进行内存数据监控,可以包括:
判断所述被访问的内存地址是否存在指定类型的内存数据故障;
如果存在,则按照所述监控逻辑中预设的数据抓取规则,实时抓取所述内存地址的状态信息保存至共享内存,以提供给用户。
本申请一些实施方式中,所述指定类型的内存数据故障例如可以为踩内存、内存死锁和/或***引用计数错误等。
本申请一些实施方式中,监控逻辑中预设的数据抓取规则中规定了在发现对应内存数据故障时应记录的数据信息。一般的,记录的数据信息可以包括对应内存地址的状态信息(比如进程标识、指令地址和堆栈信息等等)。需要说明的是,本申请实施例实时抓取的目的是为了能在第一时间抓取到现场信息,以免错失时机。
本申请一些实施方式中,操作***一般会为内核态和用户态分配共享内存,以利于实现双方的信息交互。因此,在内核态执行的ebpf可执行代码将抓取到的内存数据的状态信息保存至共享内存,可以方便提供给用户。当有需要时,一般可由用户态程序读取共享内存,获得所述内存数据的状态信息,以供用户查看分析。
在本申请另一些实施方式中,当用户的监控逻辑可能比较复杂或比较耗时,可考虑预先配置两套ebpf可执行代码(即在数据断点配置过程中,配置两个监控逻辑脚本:中断监控逻辑脚本和软中断监控逻辑脚本),并在数据缓冲寄存器的数据断点中分别添加每套ebpf可执行代码的入口地址。其中,中断监控逻辑用于在中断中模糊命中,以及时抓取通常变化较快的关键信息(比如进程pid、堆栈信息等);而软中断监控逻辑用于在软中断中精确命中,以抓取变化稍慢的信息并对软中断抓取的信息以及中断抓取的信息进行更复杂的处理(比如获取内存快照等)。
因此,当指定监控范围内的内存地址被访问,且该访问属于预定类型的操作时,可先在中断中,执行包含中断监控逻辑的ebpf可执行代码,以实时抓取内存地址的状态信息(比如进程标识、堆栈信息、指令地址等)并将其保存至共享内存,然后再触发软中断,并在软中断中,执行包含软中断监控逻辑的ebpf可执行代码以定位内存数据故障;当然,在执行前要先确定包含软中断监控逻辑的ebpf可执行代码的入口地址。至于软中断的执行时间可以预先指定,比如在中断返回后达到设定时间再执行等。这样,既利用了中断实时性好的特点,实现实时抓取现场数据;又利用了软中断可处理比较复杂或比较耗时的事务的特点,实现处理复杂或耗时的监控逻辑;从实现了在定位内存数据故障的同时,减少CPU被中断的时间,避免因中断过多而影响后台程序的运行。并且,使用软中断还可以稍微放松对相应ebpf可执行代码的限制,比如可以允许包含软中断监控逻辑的ebpf可执行代码执行导致CPU休眠的指令等。
本申请一些实施方式中,在根据所述第一ebpf可执行代码中的监控逻辑定位内存数据故障源之后,还可以包括:
当接收到用户发送的数据断点删除指令时,重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的ebpf可执行代码,此外还可以删除相关的数据断点维护数据等。一般的,当用户在确认完成了内存数据监控任务后,可主动通过***提供的用户接口发送数据断点删除指令,以避免占用***资源。
在本申请另一些实施方式中,为避免用户在完成内存数据监控任务后,仍然继续占用***资源,而造成的资源浪费,可强制性设定数据断点的生存时间。比如所述数据断点的生存时间可从用户完成数据断点配置后开始计时,并判断数据断点是否达到预设的生存时间;如果达到,则重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的ebpf可执行代码。
在本申请另一些实施方式中,在上述判断数据断点是否达到预设的生存时间之后,还可以包括:当所述数据断点达到所述生存时间前的设定时间时,向所述数据断点的用户返回生存时间到期提醒,以提示用户尽快删除即将到期的数据断点。
虽然上文描述的过程流程包括以特定顺序出现的多个操作,但是,应当清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。此外,在本申请说明书及权利要求当中所提及的“包括”为一开放式用语,故应解释成“包括但不限定于”。
参考图4所示,本申请一些实施方式的监控装置可以包括:
中断触发模块41,可以用于确定预定类型的操作访问预定的物理内存地址,则触发中断;
地址确定模块42,可以用于根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;
数据监控模块43,可以用于执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
本申请上述实施例的监控装置与图2所示的内存数据监控方法对应,因此,有关于本申请上述实施例的监控装置的细节内容,请参见图2所示的内存数据监控方法实施例,在此不再赘述。
参考图5所示,本申请实施例的内存数据监控***在硬件层面可以包括处理器、内部总线、存储器和内存,当然还可能包括其他业务所需要的硬件。处理器从存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成监控装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。其中,所述监控装置被所述处理器执行时,可以执行如下步骤:
确定预定类型的操作访问预定的物理内存地址,则触发中断;
根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;
执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
至于上述执行步骤的细节内容,请参见图2所示的内存数据监控方法实施例,在此不再赘述。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (18)

1.一种监控方法,其特征在于,包括以下步骤:
确定预定类型的操作访问预定的物理内存地址,则触发中断;
根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;其中,所述第一可执行代码包括扩展的伯克利包过滤器ebpf可执行代码;
执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
2.根据权利要求1所述的监控方法,其特征在于,所述根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址,包括:
根据触发所述中断的物理内存地址,确定对应的数据断点;
确定所述数据断点中的第一可执行代码的入口地址。
3.根据权利要求1所述的监控方法,其特征在于,所述对所述预定的物理内存地址进行数据监控,包括:
判断所述物理内存地址是否存在指定类型的内存数据故障;
如果存在,则按照所述第一可执行代码中的监控逻辑,实时抓取所述物理内存地址的状态信息保存至共享内存,以提供给用户。
4.根据权利要求3所述的监控方法,其特征在于,在所述按照所述第一可执行代码中的监控逻辑,实时抓取所述物理内存地址的状态信息保存至共享内存之后,还包括:
触发软中断,并确定第二可执行代码的入口地址;其中,所述第二可执行代码包括扩展的伯克利包过滤器ebpf可执行代码;
执行所述第二可执行代码,以根据所述第二可执行代码中的监控逻辑定位内存数据故障源。
5.根据权利要求2所述的监控方法,其特征在于,所述数据断点预先通过以下步骤配置于数据缓冲寄存器中:
获取监控逻辑脚本、以及用户指定监控的内存地址范围和内存操作类型;
将所述监控逻辑脚本转换成对应的可执行代码;
将该可执行代码加载至内核地址空间中的指定内存段,并记录该可执行代码的入口地址;
将所述指定监控的内存地址范围所对应的物理地址信息,以及所述内存操作类型写入数据缓冲寄存器,并在所述数据缓冲寄存器的数据结构中,添加该可执行代码的入口地址。
6.根据权利要求5所述的监控方法,其特征在于,所述将所述监控逻辑脚本转换成对应的可执行代码,包括:
通过虚拟解释器将所述监控逻辑脚本转换成对应的可执行代码。
7.根据权利要求5所述的监控方法,其特征在于,所述内存地址范围包括以下中的一种:
指定进程的内存逻辑地址范围;
指定进程的内存线性地址范围;
内核线性地址范围;
内核逻辑地址范围;以及,
内核符号。
8.根据权利要求5所述的监控方法,其特征在于,所述预定类型的操作包括以下中的至少一种:
内存读操作、内存写操作和内存读写操作。
9.根据权利要求5所述的监控方法,其特征在于,所述监控逻辑脚本包括以下中的至少一种:
踩内存监控逻辑;
死锁监控逻辑;以及,
***引用计数错误监控逻辑;
其中,每种监控逻辑中包括在发现对应内存数据故障时的数据抓取规则。
10.根据权利要求2所述的监控方法,其特征在于,还包括:
当接收到数据断点删除指令时,重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的可执行代码。
11.根据权利要求2所述的监控方法,其特征在于,还包括:
判断数据断点是否达到预设的生存时间;
如果达到,则重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的可执行代码。
12.根据权利要求11所述的监控方法,其特征在于,在所述判断数据断点是否达到预设的生存时间之后,还包括:
当所述数据断点达到所述生存时间前的设定时间时,向所述数据断点的用户返回生存时间到期提醒。
13.根据权利要求5所述的监控方法,其特征在于,在将所述第一可执行代码加载至内核地址空间中的指定内存段之前,还包括:
检测可执行代码是否存在指定缺陷;
如果存在,则确认数据断点配置失败,并输出失败提示。
14.根据权利要求13所述的监控方法,其特征在于,所述的指定缺陷包括死循环、触发异常和/或触发进程上下文切换的操作。
15.根据权利要求5所述的监控方法,其特征在于,在多核处理器环境下,所述多核处理器中每个CPU核心的数据缓冲寄存器配置有相同的数据断点。
16.一种监控装置,其特征在于,包括:
中断触发模块,用于确定预定类型的操作访问预定的物理内存地址,则触发中断;
地址确定模块,用于根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;其中,所述第一可执行代码包括扩展的伯克利包过滤器ebpf可执行代码;
数据监控模块,用于执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
17.一种监控***,其特征在于,包括:
处理器;
存储器,用于存储监控装置,所述监控装置被所述处理器执行时,执行如下步骤:
确定预定类型的操作访问预定的物理内存地址,则触发中断;
根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;其中,所述第一可执行代码包括扩展的伯克利包过滤器ebpf可执行代码;
执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如下步骤:
确定预定类型的操作访问预定的物理内存地址,则触发中断;
根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;其中,所述第一可执行代码包括扩展的伯克利包过滤器ebpf可执行代码;
执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。
CN201710445461.3A 2017-06-13 2017-06-13 监控方法、装置及*** Active CN109086193B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710445461.3A CN109086193B (zh) 2017-06-13 2017-06-13 监控方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710445461.3A CN109086193B (zh) 2017-06-13 2017-06-13 监控方法、装置及***

Publications (2)

Publication Number Publication Date
CN109086193A CN109086193A (zh) 2018-12-25
CN109086193B true CN109086193B (zh) 2022-01-21

Family

ID=64838795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710445461.3A Active CN109086193B (zh) 2017-06-13 2017-06-13 监控方法、装置及***

Country Status (1)

Country Link
CN (1) CN109086193B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815140A (zh) * 2019-01-05 2019-05-28 咪付(广西)网络技术有限公司 一种嵌入式c语言实现的自动化测试***及方法
CN112559437A (zh) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 一种调试单元及处理器
CN110971482B (zh) * 2019-11-05 2021-07-23 北京字节跳动网络技术有限公司 基于ebpf的后端服务器检测方法、装置及电子设备
CN111506426B (zh) * 2020-04-17 2021-05-04 翱捷科技(深圳)有限公司 内存管理方法、装置及电子设备
CN112199668B (zh) * 2020-09-01 2024-03-01 中国科学院信息工程研究所 一种检测容器中应用层消耗CPU的DoS攻击的方法和装置
CN113297111B (zh) * 2021-06-11 2023-06-23 上海壁仞智能科技有限公司 人工智能芯片及其操作方法
CN114780283B (zh) * 2022-06-20 2022-11-01 新华三信息技术有限公司 一种故障处理的方法及装置
CN115658511B (zh) * 2022-10-27 2023-08-29 豫章师范学院 一种源代码的执行行为的监控方法和***
CN116016702A (zh) * 2022-12-26 2023-04-25 浪潮云信息技术股份公司 一种应用可观测数据采集处理方法、装置及介质
CN116881086B (zh) * 2023-09-05 2023-12-05 统信软件技术有限公司 应用运行时内存监控方法、装置、计算设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3565987B2 (ja) * 1996-05-28 2004-09-15 株式会社ルネサステクノロジ エミュレータ装置
US20030217355A1 (en) * 2002-05-16 2003-11-20 International Business Machines Corporation System and method of implementing a virtual data modification breakpoint register
CN100375060C (zh) * 2005-06-20 2008-03-12 中兴通讯股份有限公司 一种嵌入式***及其实时内存监控处理方法
GB2461716A (en) * 2008-07-09 2010-01-13 Advanced Risc Mach Ltd Monitoring circuitry for monitoring accesses to addressable locations in data processing apparatus that occur between the start and end events.
CN101561775B (zh) * 2009-05-12 2010-09-15 华为技术有限公司 内存监控方法和装置
CN102819527B (zh) * 2011-06-08 2017-02-01 中兴通讯股份有限公司 在移动通信***中匹配规则的方法和***
US9678816B2 (en) * 2012-06-29 2017-06-13 Vmware, Inc. System and method for injecting faults into code for testing thereof
CN102866951B (zh) * 2012-09-21 2015-07-15 武汉烽火网络有限责任公司 嵌入式***内存越界错误快速定位方法
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices

Also Published As

Publication number Publication date
CN109086193A (zh) 2018-12-25

Similar Documents

Publication Publication Date Title
CN109086193B (zh) 监控方法、装置及***
US8261130B2 (en) Program code trace signature
US10331545B2 (en) Debugging system
US10761966B2 (en) Generating program analysis data for analysing the operation of a computer program
WO2018072493A1 (zh) 编译方法和编译***
JP5523872B2 (ja) プログラムの動的分析方法及びその装置
TWI684916B (zh) 函式選取方法和伺服器
US7793160B1 (en) Systems and methods for tracing errors
CN110955598B (zh) 一种内核态程序的断点处理方法及装置
US20120151267A1 (en) System for extending use of a data address break point register to implement multiple watch points
US11366740B2 (en) Debugging shared memory errors
CN106997313B (zh) 一种应用程序的信号处理方法、***及终端设备
CN109582542B (zh) 一种嵌入式***核心转储的方法
WO2011089478A1 (en) Debugger system, method and computer program product for debugging instructions
CN110928720A (zh) 基于Linux***的core dump文件生成方法及装置
CN105095079B (zh) 一种热点模块指令跟踪的方法及设备
US10372902B2 (en) Control flow integrity
CN112965845A (zh) 延迟分析方法、电子设备及存储介质
CN115061837B (zh) 一种调度跟踪和获取用户空间调用栈的方法和装置
CN116909819A (zh) 一种处理器调试方法、装置、计算机设备及处理器
CN108197005B (zh) Ios应用的底层运行性能监测方法、介质、设备及***
CN116450398A (zh) 异常回溯方法、装置、设备和介质
CN111078435A (zh) 业务处理方法、装置及电子设备
WO2020073200A1 (zh) 调试程序的方法和***
CN114840427A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230529

Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Aliyun Computing Co.,Ltd.

Address before: Cayman Islands, Grand Cayman

Patentee before: ALIBABA GROUP HOLDING Ltd.

TR01 Transfer of patent right