CN117724985B - 一种内存访问行为监控方法、装置、存储介质及电子设备 - Google Patents
一种内存访问行为监控方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN117724985B CN117724985B CN202410175692.7A CN202410175692A CN117724985B CN 117724985 B CN117724985 B CN 117724985B CN 202410175692 A CN202410175692 A CN 202410175692A CN 117724985 B CN117724985 B CN 117724985B
- Authority
- CN
- China
- Prior art keywords
- address
- breakpoint
- target monitoring
- mask
- memory access
- 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
- 238000012544 monitoring process Methods 0.000 title claims abstract description 178
- 230000006399 behavior Effects 0.000 title claims abstract description 82
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000005856 abnormality Effects 0.000 claims abstract description 7
- 238000012545 processing Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012806 monitoring device Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提出一种内存访问行为监控方法、装置、存储介质及电子设备,包括:获取用户设置的目标监控地址和目标监控长度;在目标监控长度大于8字节的情况下,通过对目标监控地址和目标监控长度进行转换,确定断点地址和地址掩码,再将断点地址写入断点地址寄存器,将地址掩码写入掩码寄存器,基于断点地址寄存器中存储的断点地址和掩码寄存器中存储的地址掩码,对触发断点异常的内存访问行为进行监控,可以对长度超过8字节的区间(或数据结构)的内存访问行为进行监控,从而更好、更全面地监控内存访问行为。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种内存访问行为监控方法、装置、存储介质及电子设备。
背景技术
随着嵌入式技术的飞速发展,嵌入式内核功能复杂性日益提高,使得代码调试成本变得越来越高。代码开发调试过程中需要进行各种测试。其中涉及内存的相关测试问题较为棘手,内存相关的问题存在定位困难的难点,通常需要通过对内存访问行为进行监控,来解决相关问题。
因此,本领域技术人员开始关注如何更好、更全面地监控内存访问。
发明内容
本申请的目的在于提供一种内存访问行为监控方法、装置、存储介质及电子设备,以至少部分改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种内存访问行为监控方法,所述方法包括:
获取用户设置的目标监控地址和目标监控长度;
在所述目标监控长度大于8字节的情况下,根据所述目标监控地址和所述目标监控长度确定断点地址和地址掩码;
将所述断点地址写入断点地址寄存器,将所述地址掩码写入掩码寄存器;
基于所述断点地址寄存器中存储的所述断点地址和所述掩码寄存器中存储的所述地址掩码,对触发断点异常的内存访问行为进行监控。
第二方面,本申请实施例提供一种内存访问行为监控装置,所述装置包括:
第一处理单元,用于获取用户设置的目标监控地址和目标监控长度;
所述第一处理单元还用于在所述目标监控长度大于8字节的情况下,根据所述目标监控地址和所述目标监控长度确定断点地址和地址掩码;
所述第一处理单元还用于将所述断点地址写入断点地址寄存器,将所述地址掩码写入掩码寄存器;
第二处理单元,用于基于所述断点地址寄存器中存储的所述断点地址和所述掩码寄存器中存储的所述地址掩码,对触发断点异常的内存访问行为进行监控。
第三方面,本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的方法。
第四方面,本申请实施例提供一种电子设备,所述电子设备包括:处理器和存储器,所述存储器用于存储一个或多个程序;当所述一个或多个程序被所述处理器执行时,实现上述的方法。
相对于现有技术,本申请实施例所提供的一种内存访问行为监控方法、装置、存储介质及电子设备,包括:获取用户设置的目标监控地址和目标监控长度;在目标监控长度大于8字节的情况下,通过对目标监控地址和目标监控长度进行转换,确定断点地址和地址掩码,再将断点地址写入断点地址寄存器,将地址掩码写入掩码寄存器,基于断点地址寄存器中存储的断点地址和掩码寄存器中存储的地址掩码,对触发断点异常的内存访问行为进行监控,可以对长度超过8字节的区间(或数据结构)的内存访问行为进行监控,从而更好、更全面地监控内存访问行为。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的电子设备的结构示意图;
图2为本申请实施例提供的内存访问行为监控方法的流程示意图之一;
图3为本申请实施例提供的S140的子步骤示意图;
图4为本申请实施例提供的内存访问行为监控方法的流程示意图之二;
图5为本申请实施例提供的内存访问行为监控装置的单元示意图。
图中:10-处理器;11-存储器;12-总线;13-通信接口;201-第一处理单元;202-第二处理单元。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
在一种可选的实施方式中,可以使用硬件断点功能来对内存访问行为进行监控。但是内核现有的硬件断点功能在监控内存访问行为时,只能选择性监控内存中的一个小区间(1~8字节)。而内核里通常被监控的数据结构又很大,是超出8字节的。如果想监控整个数据结构,就要计算偏移地址,并且设置多个硬件断点来实现,但是硬件断点有数量限制,导致该方式可能无法全面地监控数据结构。
本申请实施例提供了一种电子设备,可以是手机设备、电脑设备以及服务器设备等等。请参照图1,电子设备的结构示意图。电子设备包括处理器10、存储器11、总线12。处理器10、存储器11通过总线12连接,处理器10用于执行存储器11中存储的可执行模块,例如计算机程序。
处理器10可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,内存访问行为监控方法的各步骤可以通过处理器10中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器10可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit ,简称ASIC)、现场可编程门阵列(Field-Programmable GateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器11可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
总线12可以是ISA(Industry Standard Architecture)总线、PCI(PeripheralComponent Interconnect)总线或EISA(Extended Industry Standard Architecture)总线等。图1中仅用一个双向箭头表示,但并不表示仅有一根总线12或一种类型的总线12。
存储器11用于存储程序,例如内存访问行为监控装置对应的程序。内存访问行为监控装置包括至少一个可以软件或固件(firmware)的形式存储于存储器11中或固化在电子设备的操作系统(operating system,OS)中的软件功能模块。处理器10在接收到执行指令后,执行所述程序以实现内存访问行为监控方法。
可选地,本申请实施例提供的电子设备还包括通信接口13。通信接口13通过总线与处理器10连接。
应当理解的是,图1所示的结构仅为电子设备的部分的结构示意图,电子设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例提供的一种内存访问行为监控方法,可以但不限于应用于图1所示的电子设备,具体的流程,请参考图2,内存访问行为监控方法包括:S110、S120、S130以及S104,具体阐述如下。
S110,获取用户设置的目标监控地址和目标监控长度。
其中,目标监控地址为电子设备的内存中的地址,目标监控地址为用户期望监控的地址,又称为ADDR,目标监控长度为用户期望监控的长度,又称为LEN,目标监控地址和目标监控长度对应的目标监控区域为用户期望监控的区域,目标监控区域为目标监控地址及其后目标监控长度的区域。
例如,目标监控地址为第100位,目标监控长度为16字节,则目标监控区域为第100位到第116位。
在本申请方案中,目标监控长度可以大于8字节,进而可以基于目标监控长度确定对应的监控模式,具体地,请参考下文。
S120,在目标监控长度大于8字节的情况下,根据目标监控地址和目标监控长度确定断点地址和地址掩码。
S130,将断点地址写入断点地址寄存器,将地址掩码写入掩码寄存器。
可选地,断点地址寄存器和掩码寄存器为CPU的内部寄存器。
S140,基于断点地址寄存器中存储的断点地址和掩码寄存器中存储的地址掩码,对触发断点异常的内存访问行为进行监控。
本申请方案中,在目标监控长度大于8字节的情况下,通过对目标监控地址和目标监控长度进行转换,确定断点地址和地址掩码,再将断点地址写入断点地址寄存器,将地址掩码写入掩码寄存器,基于断点地址寄存器中存储的断点地址和掩码寄存器中存储的地址掩码,对触发断点异常的内存访问行为进行监控,可以对长度超过8字节的区间(或数据结构)的内存访问行为进行监控。
可选地,CPU中还部署有断点长度寄存器,在目标监控长度大于8字节的情况下,将断点长度寄存器设置为0。在此基础上,内存访问行为监控方法还包括:S150、S160以及S170,图中未示出,具体阐述请参考下文。
S150,在目标监控长度小于或等于8字节的情况下,将目标监控地址确定为端点地址,将目标监控长度确定为断点长度。
S160,将断点地址写入断点地址寄存器,将断点长度写入断点长度寄存器。
可选地,在目标监控长度小于或等于8字节的情况下,将掩码寄存器设置为0。
S170,基于断点地址寄存器中存储的断点地址和断点长度寄存器中存储的断点长度,对触发断点异常的内存访问行为进行监控。
可选地,S170,基于断点地址寄存器中存储的断点地址和断点长度寄存器中存储的断点长度,对触发断点异常的内存访问行为进行监控的步骤,包括:S171、S172、S173、S174以及S175,图中为示出,具体阐述如下。
S171,基于断点地址和断点长度确定实际监控范围。
可选地,将断点长度确定为实际监控长度,将断点地址作为实际监控的起始地址,基于实际监控的起始地址和实际监控长度可以确定实际监控范围。
S172,确定内存访问行为的访问首地址是否处于实际监控范围。若是,则执行S173;若否,则退出。
当CPU执行内存访问行为时,判断内存访问行为的访问首地址是否处于实际监控范围内,若处于,则说明CPU运行触发断点异常,则执行S173;若否,则退出。
S173,在内存访问行为的访问首地址处于实际监控范围的情况下,确定内存访问行为触发断点异常。
S174,将内存访问行为的访问首地址确定为断点触发地址。
S175,若断点触发地址处于目标监控区域,获取断点触发特征信息。
其中,断点触发特征信息包括CPU寄存器信息、触发类型、断点触发地址以及访问次数中的任意一种或多种。
在图2的基础上,关于S140中内容,本申请实施例还提供了一种可选的实施方式,请参考图3,S140,基于断点地址寄存器中存储的断点地址和掩码寄存器中存储的地址掩码,对触发断点异常的内存访问行为进行监控的步骤,包括:S141、S142、S143、S144、S145以及S146,具体阐述如下。
S141,基于断点地址和地址掩码确定实际监控范围。
可选地,基于地址掩码确定实际监控长度,将断点地址作为实际监控的起始地址,基于实际监控的起始地址和实际监控长度可以确定实际监控范围。
S142,确定内存访问行为的访问首地址是否处于实际监控范围。若是,则执行S143;若否,则退出。
当CPU执行内存访问行为时,判断内存访问行为的访问首地址是否处于实际监控范围内,若处于,则说明CPU运行触发断点异常,则执行S143;若否,则退出。
S143,在内存访问行为的访问首地址处于实际监控范围的情况下,确定内存访问行为触发断点异常。
S144,将内存访问行为的访问首地址确定为断点触发地址。
S145,确定断点触发地址是否处于目标监控区域。若是,则执行S146;若否,则退出。
可选地,确定断点触发地址是否大于或等于目标监控地址,并且小于或等于目标监控地址+目标监控长度,若满足,则确定断点触发地址处于目标监控区域,反之,则断点触发地址未处于目标监控区域。
需要说明的是,经过转换后的实际监控范围可能大于目标监控区域,为了保障能够准确地对目标监控区域进行监控,提升监控结果的准确性,需要执行S145,确定断点触发地址是否处于目标监控区域。若是,则执行S146,进一步获取断点触发特征信息;若否,则退出。
S146,若断点触发地址处于目标监控区域,获取断点触发特征信息。
其中,断点触发特征信息包括CPU寄存器信息、触发类型、断点触发地址以及访问次数中的任意一种或多种。
在图3的基础上,关于S146和S175中的内容,如何获取断点触发特征信息,本申请实施例还提供了一种可选的实施方式,以S146为例,请参考下文,S146,获取断点触发特征信息的步骤,包括:S146-1、S146-2、S146-3以及S146-4,具体阐述如下。
S146-1,记录CPU异常码。
其中, CPU异常码(又称为,CPU异常属性ESR)与内存访问行为的触发类型匹配,触发类型可以为读触发或写触发。
S146-2,基于CPU异常码对访问次数进行更新。
可选地,S146-2,访问次数包括断点写访问次数和断点读访问次数,基于CPU异常码对访问次数进行更新的步骤,包括:S146-2A、S146-2B以及S146-2C,具体阐述如下。
S146-2A,确定CPU异常码的第六位是否为1。若是,则执行S146-2B;若否,则执行S146-2C。
S146-2B,令断点写访问次数增加1次。
S146-2C,令断点读访问次数增加1次。
S146-3,获取触发断点异常时的CPU寄存器信息。
可选地,CPU寄存器信息包括通用寄存器信息、链接寄存器信息(链接寄存器用于保存子程序返回地址)、程序计数器信息(程序计数器用于存储将要执行的指令地址)以及状态寄存器信息(状态寄存器用于存储当前CPU的运行状态信息)中的任意一种或多种。
S146-4,生成包括CPU寄存器信息、触发类型、断点触发地址以及访问次数的断点触发特征信息。
需要说明的是,断点触发特征信息可以用于帮助用户对问题进行分析。
关于在获取断点触发特征信息之后,如何快速进行调试,本申请实施例还提供了一种可选的实施方式,请参考图4,在获取断点触发特征信息之后,内存访问行为监控方法还包括:S180,具体阐述如下。
S180,将断点触发特征信息传入预先配置的用户回调函数。
可选地,将收集到的断点触发特征信息作为参数,传入预先配置的用户回调函数,执行用户回调函数。切换到内核程序调试器(Kernel GNU symbolic debugger,简称KGDB)调试状态,等待用户进一步操作,该操作包括但不限于设置目标监控地址、目标监控长度、转储(简称,DUMP)内存、单步调试、查询变量内容等。
需要说明的是,通过KGDB的应用,在访问行为发生时,可以便利的进行内存DUMP和单步调试等操作,在不连接外置调试器和不破坏现场的情况下,进行程序的动态跟踪。
在图2的基础上,关于S120中的内容,本申请实施例还提供了一种可选的实施方式,请参考下文,S120,根据目标监控地址和目标监控长度确定断点地址和地址掩码的步骤,包括:S121、S122、S123、S124以及S125,具体阐述如下。
S121,以2为底,对目标监控长度取对数,从而确定低位地址掩码。
可选地,低位地址掩码的算式为:
Mask=Log2(LEN);
其中,Mask表示低位地址掩码,LEN表示目标监控长度。
S122,通过对低位地址掩码进行与或运算,确定初阶起始地址和初阶结束地址。
可选地,通过对低位地址掩码进行与或运算,将目标监控地址的低位地址掩码置0或置1得到初阶起始地址(又称为,STARTADDR)和初阶结束地址(又称为,ENDADDR)。
例如,Mask = 7,ADDR为64位,则跟ADDR进行与运算的值为0xFFFFFFFFFFFFFF80,即将0xFFFFFFFFFFFFFFFF的低7位置0,STARTADDR =ADDR&0xFFFFFFFFFFFFFF80;跟ADDR进行或运算的值为0x0000000000007F,即将0x00000000000000的低7位置1, ENDADDR=ADDR|0x0000000000007F。
S123,确定初阶结束地址是否超出目标监控区域。若否,则执行S124;若是,则执行S125。
其中,目标监控区域为目标监控地址及其后目标监控长度的区域。
S124,令低位地址掩码自增1。
在S124之后,重复执行S122,通过对低位地址掩码进行与或运算,确定初阶起始地址和初阶结束地址。
S125,将当前的初阶起始地址确定为断点地址,将当前的低位地址掩码确定为最终的地址掩码。
需要说明的是,初阶结束地址超出目标监控区域表示已经完全覆盖了目标监控区域。
在本申请方案中,在目标监控长度大于8字节的情况下,将目标监控地址和目标监控长度转换为断点地址和地址掩码,并基于断点地址和地址掩码的解析结果对内存访问行为进行监控,极大的扩大了硬件断点的监控范围。由原先的1~8Bytes,扩大至1~2GBytes的内存访问行为监控。可以使用一个断点监控CPU对整个数据结构的访问,极大提升了调试及内存问题定位效率和体验。
请参阅图5,图5为本申请实施例提供的一种内存访问行为监控装置,可选的,该内存访问行为监控装置被应用于上文所述的电子设备。
内存访问行为监控装置包括:第一处理单元201和第二处理单元202。
第一处理单元201,用于获取用户设置的目标监控地址和目标监控长度;
第一处理单元201还用于在目标监控长度大于8字节的情况下,根据目标监控地址和目标监控长度确定断点地址和地址掩码;
第一处理单元201还用于将断点地址写入断点地址寄存器,将地址掩码写入掩码寄存器;
第二处理单元202,用于基于断点地址寄存器中存储的断点地址和掩码寄存器中存储的地址掩码,对触发断点异常的内存访问行为进行监控。
可选地,第一处理单元201可以执行上述的S110、S120、S130、S150以及S160,第二处理单元202可以执行上述的S140、S170以及S180。
需要说明的是,本实施例所提供的内存访问行为监控装置,其可以执行上述方法流程实施例所示的方法流程,以实现对应的技术效果。为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
本申请实施例还提供了一种存储介质,该存储介质存储有计算机指令、程序,该计算机指令、程序在被读取并运行时执行上述实施例的内存访问行为监控方法。该存储介质可以包括内存、闪存、寄存器或者其结合等。
下面提供一种电子设备,可以是手机设备、电脑设备以及服务器设备等等,该电子设备如图1所示,可以实现上述的内存访问行为监控方法;具体的,该电子设备包括:处理器10,存储器11、总线12。处理器10可以是CPU。存储器11用于存储一个或多个程序,当一个或多个程序被处理器10执行时,执行上述实施例的内存访问行为监控方法。
综上所述,本申请实施例提供的一种内存访问行为监控方法、装置、存储介质及电子设备,包括:获取用户设置的目标监控地址和目标监控长度;在目标监控长度大于8字节的情况下,通过对目标监控地址和目标监控长度进行转换,确定断点地址和地址掩码,再将断点地址写入断点地址寄存器,将地址掩码写入掩码寄存器,基于断点地址寄存器中存储的断点地址和掩码寄存器中存储的地址掩码,对触发断点异常的内存访问行为进行监控,可以对长度超过8字节的区间(或数据结构)的内存访问行为进行监控,从而更好、更全面地监控内存访问行为。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (8)
1.一种内存访问行为监控方法,其特征在于,所述方法包括:
获取用户设置的目标监控地址和目标监控长度;
在所述目标监控长度大于8字节的情况下,根据所述目标监控地址和所述目标监控长度确定断点地址和地址掩码;
将所述断点地址写入断点地址寄存器,将所述地址掩码写入掩码寄存器;
基于所述断点地址寄存器中存储的所述断点地址和所述掩码寄存器中存储的所述地址掩码,对触发断点异常的内存访问行为进行监控;
所述基于所述断点地址寄存器中存储的所述断点地址和所述掩码寄存器中存储的所述地址掩码,对触发断点异常的内存访问行为进行监控的步骤,包括:基于所述断点地址和所述地址掩码确定实际监控范围;在所述内存访问行为的访问首地址处于所述实际监控范围的情况下,则确定所述内存访问行为触发断点异常;将所述内存访问行为的访问首地址确定为断点触发地址;确定所述断点触发地址是否处于目标监控区域,其中,所述目标监控区域为所述目标监控地址及其后所述目标监控长度的区域;若所述断点触发地址处于所述目标监控区域,获取断点触发特征信息,其中,所述断点触发特征信息包括CPU寄存器信息、触发类型、所述断点触发地址以及访问次数中的任意一种或多种;
所述根据所述目标监控地址和所述目标监控长度确定断点地址和地址掩码的步骤,包括:以2为底,对所述目标监控长度取对数,从而确定低位地址掩码;通过对所述低位地址掩码进行与或运算,确定初阶起始地址和初阶结束地址,其中,所述初阶起始地址为将所述目标监控地址的低位地址掩码置0对应的地址,所述初阶结束地址为将所述目标监控地址的低位地址掩码置1对应的地址;确定所述初阶结束地址是否超出目标监控区域,其中,所述目标监控区域为所述目标监控地址及其后所述目标监控长度的区域;若否,则令所述低位地址掩码自增1,并重复通过对所述低位地址掩码进行与或运算,确定初阶起始地址和初阶结束地址;直至所述初阶结束地址超出目标监控区域,将当前的初阶起始地址确定为所述断点地址,将当前的低位地址掩码确定为最终的所述地址掩码。
2.如权利要求1所述的内存访问行为监控方法,其特征在于,所述获取断点触发特征信息的步骤,包括:
记录CPU异常码,其中,所述CPU异常码与所述内存访问行为的所述触发类型匹配;
基于所述CPU异常码对所述访问次数进行更新;
获取触发断点异常时的所述CPU寄存器信息;
生成包括所述CPU寄存器信息、所述触发类型、所述断点触发地址以及所述访问次数的所述断点触发特征信息。
3.如权利要求2所述的内存访问行为监控方法,其特征在于,所述访问次数包括断点写访问次数和断点读访问次数,所述基于所述CPU异常码对所述访问次数进行更新的步骤,包括:
确定所述CPU异常码的第六位是否为1;
若是,则令所述断点写访问次数增加1次;
若否,则令所述断点读访问次数增加1次。
4.如权利要求1所述的内存访问行为监控方法,其特征在于,所述CPU寄存器信息包括通用寄存器信息、链接寄存器信息、程序计数器信息以及状态寄存器信息中的任意一种或多种。
5.如权利要求1所述的内存访问行为监控方法,其特征在于,在所述获取断点触发特征信息之后,所述方法还包括:
将所述断点触发特征信息传入预先配置的用户回调函数。
6.一种内存访问行为监控装置,其特征在于,所述装置包括:
第一处理单元,用于获取用户设置的目标监控地址和目标监控长度;
所述第一处理单元还用于在所述目标监控长度大于8字节的情况下,根据所述目标监控地址和所述目标监控长度确定断点地址和地址掩码;
所述第一处理单元还用于将所述断点地址写入断点地址寄存器,将所述地址掩码写入掩码寄存器;
第二处理单元,用于基于所述断点地址寄存器中存储的所述断点地址和所述掩码寄存器中存储的所述地址掩码,对触发断点异常的内存访问行为进行监控;
所述基于所述断点地址寄存器中存储的所述断点地址和所述掩码寄存器中存储的所述地址掩码,对触发断点异常的内存访问行为进行监控,包括:基于所述断点地址和所述地址掩码确定实际监控范围;在所述内存访问行为的访问首地址处于所述实际监控范围的情况下,则确定所述内存访问行为触发断点异常;将所述内存访问行为的访问首地址确定为断点触发地址;确定所述断点触发地址是否处于目标监控区域,其中,所述目标监控区域为所述目标监控地址及其后所述目标监控长度的区域;若所述断点触发地址处于所述目标监控区域,获取断点触发特征信息,其中,所述断点触发特征信息包括CPU寄存器信息、触发类型、所述断点触发地址以及访问次数中的任意一种或多种;
所述根据所述目标监控地址和所述目标监控长度确定断点地址和地址掩码,包括:以2为底,对所述目标监控长度取对数,从而确定低位地址掩码;通过对所述低位地址掩码进行与或运算,确定初阶起始地址和初阶结束地址,其中,所述初阶起始地址为将所述目标监控地址的低位地址掩码置0对应的地址,所述初阶结束地址为将所述目标监控地址的低位地址掩码置1对应的地址;确定所述初阶结束地址是否超出目标监控区域,其中,所述目标监控区域为所述目标监控地址及其后所述目标监控长度的区域;若否,则令所述低位地址掩码自增1,并重复通过对所述低位地址掩码进行与或运算,确定初阶起始地址和初阶结束地址;直至所述初阶结束地址超出目标监控区域,将当前的初阶起始地址确定为所述断点地址,将当前的低位地址掩码确定为最终的所述地址掩码。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
8.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器用于存储一个或多个程序;当所述一个或多个程序被所述处理器执行时,实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410175692.7A CN117724985B (zh) | 2024-02-08 | 2024-02-08 | 一种内存访问行为监控方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410175692.7A CN117724985B (zh) | 2024-02-08 | 2024-02-08 | 一种内存访问行为监控方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117724985A CN117724985A (zh) | 2024-03-19 |
CN117724985B true CN117724985B (zh) | 2024-04-30 |
Family
ID=90200168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410175692.7A Active CN117724985B (zh) | 2024-02-08 | 2024-02-08 | 一种内存访问行为监控方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724985B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675820A (ja) * | 1992-08-26 | 1994-03-18 | Yokogawa Electric Corp | マルチプロセッサシステムにおける割り込み装置 |
US5581482A (en) * | 1994-04-26 | 1996-12-03 | Unisys Corporation | Performance monitor for digital computer system |
US6052801A (en) * | 1995-05-10 | 2000-04-18 | Intel Corporation | Method and apparatus for providing breakpoints on a selectable address range |
CN1885275A (zh) * | 2005-06-20 | 2006-12-27 | 中兴通讯股份有限公司 | 一种嵌入式系统及其实时内存监控处理方法 |
CN101561775A (zh) * | 2009-05-12 | 2009-10-21 | 华为技术有限公司 | 内存监控方法和装置 |
CN101777021A (zh) * | 2010-01-21 | 2010-07-14 | 北京龙芯中科技术服务中心有限公司 | 微处理器中精确数据断点的实现装置及其方法 |
CN103827815A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 |
CN104239201A (zh) * | 2013-06-20 | 2014-12-24 | 上海博达数据通信有限公司 | 一种软单步系统中内存读写监控方法 |
CN104375946A (zh) * | 2013-08-16 | 2015-02-25 | 华为技术有限公司 | 一种数据处理的方法及装置 |
CN106326130A (zh) * | 2015-06-16 | 2017-01-11 | 联芯科技有限公司 | 寄存器地址空间的控制方法、控制器及片上系统 |
CN107005496A (zh) * | 2014-12-27 | 2017-08-01 | 英特尔公司 | 用于在高性能网络结构中进行可扩展本地寻址的技术 |
CN108335707A (zh) * | 2018-02-09 | 2018-07-27 | 盛科网络(苏州)有限公司 | 一种带掩码的高速存储器设计方法及装置 |
CN112445616A (zh) * | 2020-11-25 | 2021-03-05 | 海光信息技术股份有限公司 | 资源分配方法以及装置 |
CN115658837A (zh) * | 2022-11-11 | 2023-01-31 | 北京易华录信息技术股份有限公司 | 地址数据处理方法和装置、电子设备和存储介质 |
CN116820852A (zh) * | 2023-06-27 | 2023-09-29 | 南京奕泰微电子技术有限公司 | 一种可快速遍历中断位的中断测试方法 |
CN117112215A (zh) * | 2023-08-25 | 2023-11-24 | 北京火山引擎科技有限公司 | 内存分配方法、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010774B2 (en) * | 2006-03-13 | 2011-08-30 | Arm Limited | Breakpointing on register access events or I/O port access events |
US8275972B2 (en) * | 2006-08-23 | 2012-09-25 | Ati Technologies, Inc. | Write data mask method and system |
-
2024
- 2024-02-08 CN CN202410175692.7A patent/CN117724985B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675820A (ja) * | 1992-08-26 | 1994-03-18 | Yokogawa Electric Corp | マルチプロセッサシステムにおける割り込み装置 |
US5581482A (en) * | 1994-04-26 | 1996-12-03 | Unisys Corporation | Performance monitor for digital computer system |
US6052801A (en) * | 1995-05-10 | 2000-04-18 | Intel Corporation | Method and apparatus for providing breakpoints on a selectable address range |
CN1885275A (zh) * | 2005-06-20 | 2006-12-27 | 中兴通讯股份有限公司 | 一种嵌入式系统及其实时内存监控处理方法 |
CN101561775A (zh) * | 2009-05-12 | 2009-10-21 | 华为技术有限公司 | 内存监控方法和装置 |
CN101777021A (zh) * | 2010-01-21 | 2010-07-14 | 北京龙芯中科技术服务中心有限公司 | 微处理器中精确数据断点的实现装置及其方法 |
CN103827815A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 |
CN104239201A (zh) * | 2013-06-20 | 2014-12-24 | 上海博达数据通信有限公司 | 一种软单步系统中内存读写监控方法 |
CN104375946A (zh) * | 2013-08-16 | 2015-02-25 | 华为技术有限公司 | 一种数据处理的方法及装置 |
CN107005496A (zh) * | 2014-12-27 | 2017-08-01 | 英特尔公司 | 用于在高性能网络结构中进行可扩展本地寻址的技术 |
CN106326130A (zh) * | 2015-06-16 | 2017-01-11 | 联芯科技有限公司 | 寄存器地址空间的控制方法、控制器及片上系统 |
CN108335707A (zh) * | 2018-02-09 | 2018-07-27 | 盛科网络(苏州)有限公司 | 一种带掩码的高速存储器设计方法及装置 |
CN112445616A (zh) * | 2020-11-25 | 2021-03-05 | 海光信息技术股份有限公司 | 资源分配方法以及装置 |
CN115658837A (zh) * | 2022-11-11 | 2023-01-31 | 北京易华录信息技术股份有限公司 | 地址数据处理方法和装置、电子设备和存储介质 |
CN116820852A (zh) * | 2023-06-27 | 2023-09-29 | 南京奕泰微电子技术有限公司 | 一种可快速遍历中断位的中断测试方法 |
CN117112215A (zh) * | 2023-08-25 | 2023-11-24 | 北京火山引擎科技有限公司 | 内存分配方法、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于基地址寄存器映射的数据缓存研究;沈秀红;赵朝君;孟建熠;项晓燕;;计算机工程;20130515(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117724985A (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8386851B2 (en) | Functional coverage using combinatorial test design | |
US10733077B2 (en) | Techniques for monitoring errors and system performance using debug trace information | |
US9262283B2 (en) | Method for reading kernel log upon kernel panic in operating system | |
US9459991B2 (en) | Heap dump object identification in a heap dump analysis tool | |
US20110055777A1 (en) | Verification of Soft Error Resilience | |
CN112149136A (zh) | loT设备固件漏洞的检测方法、系统及电子设备 | |
US20200183809A1 (en) | Usage amount monitoring method and monitoring unit of electronic control unit for vehicle | |
CN115563914A (zh) | 验证方法及装置、计算设备、计算机可读存储介质 | |
CN110879781A (zh) | 程序调试方法、装置、电子设备及计算机可读存储介质 | |
CN112560372B (zh) | 一种芯片原型验证方法、装置、设备及介质 | |
CN113282513A (zh) | 接口测试案例的生成方法、装置、计算机设备及存储介质 | |
CN115686961A (zh) | 处理器测试方法、装置及电子设备 | |
CN117724985B (zh) | 一种内存访问行为监控方法、装置、存储介质及电子设备 | |
CN114660437A (zh) | 一种波形文件生成方法及装置 | |
CN110908869B (zh) | 一种应用程序数据监控方法、装置、设备及储存介质 | |
US12072789B2 (en) | Resumable instruction generation | |
CN118152298A (zh) | 内存的访问检测方法及其装置、电子设备以及计算机存储介质 | |
CN111338864A (zh) | 内存问题检测方法、装置、计算机设备及存储介质 | |
CN116401989A (zh) | 基于芯片设计源码的信号检查方法、电子设备和介质 | |
CN115964237A (zh) | 一种针对中央处理器cpu的功能及性能测试方法及装置 | |
CN115756935A (zh) | 嵌入式软件系统的异常故障定位方法、装置及设备 | |
CN111352825B (zh) | 数据接口的测试方法、装置及服务器 | |
CN112506806A (zh) | 用于调试程序的方法、电子设备及存储介质 | |
CN117971604B (zh) | 一种静态电流预测方法、装置、存储介质及电子设备 | |
CN112015640B (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 |