CN113961452A - 硬中断方法和相关装置 - Google Patents
硬中断方法和相关装置 Download PDFInfo
- Publication number
- CN113961452A CN113961452A CN202111138176.XA CN202111138176A CN113961452A CN 113961452 A CN113961452 A CN 113961452A CN 202111138176 A CN202111138176 A CN 202111138176A CN 113961452 A CN113961452 A CN 113961452A
- Authority
- CN
- China
- Prior art keywords
- address
- breakpoint
- control block
- debugging
- instruction
- 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 186
- 230000008569 process Effects 0.000 claims abstract description 142
- 238000004886 process control Methods 0.000 claims abstract description 44
- 230000015654 memory Effects 0.000 claims description 97
- 238000004590 computer program Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 14
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 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/362—Software debugging
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/327—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开公开了一种进程硬中断方法和相关装置,该进程的进程控制块内预先写入断点地址,该硬中断方法包括:在进程被调度到运行状态时,从进程控制块内获取断点地址;将获取的断点地址写入已清空的调试地址寄存器内,以便调试单元在进程的运行过程中基于调试地址寄存器内存储的断点地址执行硬中断。本公开使得处理器即使在调试单元里未设置scontext的情况下也能对单个进程执行硬中断。
Description
技术领域
本公开涉及程序调试的技术领域,具体涉及一种进程硬中断方法和相关装置。
背景技术
调试器能够随心所欲地停止程序执行,主要在于软件断点和硬件断点。软件断点体现为添加在程序中的断点指令,程序执行到断点指令则停止(即软件中断)。硬件断点体现为调试地址寄存器内存储的断点地址,调试单元(trigger module)监控到程序执行到断点地址则控制程序中断(亦称硬中断)。
调试单元,具体地,包括上述调试地址寄存器、控制寄存器和调试控制器,其中,调试地址寄存器的数量为四个,分别用于存储一个断点地址;控制寄存器的数量为一个,用于存储各个硬件断点的状态,例如断点类型和断点长度等;调试控制器用于监测取指令单元的取指地址并判断所述取指地址是否为断点地址,若是则生成中断指令以控制指令执行单元中断程序的执行。针对某种架构的处理器,其在调试单元内未设置保存情景信息(情景信息用于标记硬件断点是为哪个进程设置的)的scontext的情况下,则无法区分各硬件断点是为哪个进程设置的,因而各硬件断点会配置给所有执行时从其断点地址内取指令的进程,即存在无法为单个进程设置硬件断点的技术问题。
发明内容
为了解决上述技术问题,本公开提供了一种进程硬中断方法和相关装置,使得处理器即使在调试单元里未设置scontext的情况下也能对单个进程执行硬中断。
根据本公开第一方面,提供了一种进程硬中断方法,所述进程的进程控制块内预先写入断点地址,所述进程硬中断方法包括:
在所述进程被调度到运行状态时,从所述进程控制块内获取断点地址;
将获取的断点地址写入已清空的调试地址寄存器内,以便调试单元在所述进程的运行过程中基于所述调试地址寄存器内存储的断点地址执行硬中断。
可选地,所述进程在属于被调试进程的情况下,所述进程控制块内才会预先写入断点地址,所述进程硬中断方法还包括:
判断所述进程控制块内是否存在断点地址;
其中,若所述进程控制块内存在断点地址,则从所述进程控制块内获取断点地址。
可选地,所述进程控制块内的断点地址是通过gdb这一调试工具内的“hbreak”命令被预先写入的。
可选地,所述进程硬中断方法还包括:在所述进程被调度出运行状态时,擦除所述调试地址寄存器内存储的断点地址。
可选地,所述进程在属于被调试进程的情况下,所述进程控制块内才会预先写入断点地址,所述进程硬中断方法还包括:
判断所述进程控制块内是否存在断点地址;
其中,若所述进程控制块内存在断点地址,则擦除所述调试地址寄存器内存储的断点地址。
可选地,所述进程硬中断方法还包括:在所述进程运行前,删除所述进程控制块内预先写入的个别断点地址或全部断点地址。
可选地,所述进程控制块内的断点地址是通过gdb这一调试工具内的“deletebreak”命令被删除的。
可选地,所述进程硬中断方法还包括:在所述进程的运行过程中,擦除个别所述调试地址寄存器内存储的断点地址或全部所述调试地址寄存器内存储的断点地址。
根据本公开第二方面,提供了一种电子设备,包括:处理器和存储器,其中,所述存储器内存储有可被所述处理器执行的程序,所述程序被所述处理器执行时实现如第一方面所述的任一种方法的步骤。
根据本公开第三方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的任一种方法的步骤。
本公开的有益效果:
本公开中,进程的进程控制块内预先写入了断点地址,在进程被调度到运行状态时,从进程控制块内获取断点地址并将获取的断点地址写入已清空的调试地址寄存器内,这样使得进程在运行过程中调试地址寄存器内只存储该进程的断点地址,因而能够针对进程设置硬件断点,从而使得处理器即使在调试单元里未设置scontext的情况下也能对单个进程执行硬中断。
应当说明的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1示出本公开实施例提供的电子设备的示意图;
图2示出本公开实施例提供的存储器和处理器的示意图;
图3示出本公开实施例提供的一种进程硬中断方法流程图;
图4示出本公开实施例提供的另一种进程硬中断方法流程图;
图5示出本公开实施例提供的又一种进程硬中断方法流程图。
具体实施方式
为了便于理解本公开,下面将参照相关附图对本公开进行更全面的描述。附图中给出了本公开的较佳实施例。但是,本公开可以通过不同的形式来实现,并不限于本文所描述的实施例。相反的,提供这些实施例的目的是使对本公开的公开内容的理解更加透彻全面。
系统概述
图1示出本公开实施例中的电子设备的示意性框图。该电子设备10可基于目前市场上各种型号的处理器构建,并由WINDOWSTM操作系统版本、UNIX操作系统、Linux操作系统等操作系统驱动。此外,电子设备10可以是PC机、台式机、笔记本、服务器和移动通信装置等硬件。
如图1所示,本公开实施例的电子设备10可以包括一个或多个处理器12,以及存储器14。
存储器14可以是主存储器(简称为主存或内存)。用于存储由数据信号表示的指令信息和/或数据信息,例如存放处理器12提供的数据(例如为运算结果),也可以用于实现处理器12与外部存储设备17(或称为辅助存储器或外部存储器)之间的数据交换。
在一些情形下,处理器12可能需要访问存储器14,以获取存储器14中的数据或对存储器14中的数据进行修改。由于存储器14的访问速度较慢,为了缓解处理器12与存储器14之间的速度差距,电子设备10还包括与总线11耦合的高速缓冲存储器18,高速缓冲存储器18用于对存储器14中的一些可能会被反复调用的程序数据或者报文数据等数据进行缓存。高速缓冲存储器18例如由静态随机存储器(Static Random Access Memory,简称为SRAM)等类型的存储装置实现。高速缓冲存储器18可以为多级结构,例如具有一级缓存(L1Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)的三级缓存结构,也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器18的一部分(例如一级缓存,或一级缓存和二级缓存)可以集成在处理器12内部或与处理器12集成于同一片上系统中。
处理器12可以包括指令执行单元121、内存管理单元122等部分。指令执行单元121在执行一些需要修改内存(例如修改内存中存储的进程控制块)的指令时发起写访问请求,该写访问请求指定了需要写入内存中的写入数据和相应的物理地址;内存管理单元122用于将这些指令指定的虚拟地址转译为该虚拟地址映射的物理地址,写访问请求指定的物理地址与相应指令指定的物理地址可以一致。
存储器14和高速缓冲存储器18之间的信息交互通常按块来组织。在一些实施例中,高速缓冲存储器18和存储器14可以按照相同的空间尺寸被划分成数据块,数据块可以作为高速缓冲存储器18和存储器14之间的数据交换的最小单位(包括预设长度的一个或多个数据)。为了表述简洁清晰,下面将高速缓冲存储器18中的各个数据块简称为缓存块(可以称为cacheline或高速缓存线),且不同的缓存块具有不同的缓存块地址;将存储器14中的各个数据块简称为内存块,且不同的内存块具有不同的内存块地址。缓存块地址例如包括用于定位数据块的物理地址标签。
由于受到空间和资源的限制,高速缓冲存储器18无法对存储器14中的全部内容都进行缓存,即高速缓冲存储器18的存储容量通常小于存储器14,高速缓冲存储器18提供的各个缓存块地址无法对应存储器14提供的全部内存块地址。处理器12在需要访问内存时,首先经总线11访问高速缓冲存储器18,以判断所要访问的内容是否已被存储于高速缓冲存储器18中,如果是,则高速缓冲存储器18命中,此时处理器12直接从高速缓冲存储器18中调用所要访问的内容;如果处理器12需要访问的内容不在高速缓冲存储器18中,则处理器12需要经总线11访问存储器14,以在存储器14中查找相应的信息。因为高速缓冲存储器18的存取速率非常快,因此当高速缓冲存储器18命中时,处理器12的效率可以显著提高,进而也使整个电子设备10的性能和效率得以提升。
此外,电子设备10还可以包括存储设备17、显示设备13、音频设备15、鼠标/键盘16等输入/输出设备。存储设备17例如是通过相应接口与总线11耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备13例如经相应的显卡与总线11耦合,用于根据总线11提供的显示信号进行显示。
电子设备10通常还包括通信设备19,因此可以通过各种方式与网络或其他设备通信。通信设备19例如可以包括一种或多种通信模块,作为示例,通信设备19可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备19可以包括WLAN模块,用于实现符合电气和电子工程师协会(IEEE)制定的802.11标准的Wi-FiTM通信;通信设备19也可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信;通信设备19还可以包括蓝牙模块等采用其它协议的通信模块,或其它自定义类型的通信模块;通信设备19也可以是用于串行传输数据的端口。
当然,不同的电子设备10根据主板、操作系统和指令集架构的不同,其结构也可能有所变化。例如目前很多电子设备10设置有连接在总线11和各个输入/输出设备之间的输入/输出控制中心,且该输入/输出控制中心可以集成于处理器12之内或独立于处理器12。
处理器
图2是本公开实施例中处理器12的示意性框图。
在一些实施例中,每个处理器12可以包括用于处理指令的一个或多个处理器核120,指令的处理和执行是可以被用户(例如通过应用程序)和/或系统平台控制的。在一些实施例中,每个处理器核120可以用于处理特定的指令集。在一些实施例中,指令集可以支持复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(Reduced Instruction Set Computing,RISC)或基于超长指令字(Very LongInstruction Word,VLIW)的计算。不同的处理器核120可以各自处理不同或相同的指令集。在一些实施例中,处理器核120还可以包括其他处理模块,例如数字信号处理器(DigitalSignal Processor,DSP)等。作为一种示例,图2中示出了处理器核1至m,m是非0的自然数。
在一些实施例中,图1示出的高速缓冲存储器18可以被全部或部分集成于处理器12中。且根据不同架构,高速缓冲存储器18可以是位于各个处理器核120之内和/或之外的单个或多级的内部高速高速缓冲存储器(如图2示出的3级高速高速缓冲存储器L1至L3,图2中统一标识为18),也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。在一些实施例中,处理器12中的各个部件可以共享至少一部分的高速缓冲存储器,如图2所示,处理器核1至m例如共用第三级高速高速缓冲存储器L3。处理器12还可以包括外部高速缓存(未示出),其他高速缓存结构也可以作为处理器12的外部高速缓存。
在一些实施例中,如图2所示,处理器12可以包括寄存器堆126(Register File),寄存器堆126可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆126可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆126中的寄存器可以选用通用寄存器来实现,也可以根据处理器12的实际需求采用特定的设计。
处理器12可以包括内存管理单元(Memory Management Unit,MMU)122,用于实现虚拟地址到物理地址的转译。内存管理单元122中缓存有了页表中的一部分表项,内存管理单元122也可以从内存中获取未被缓存的表项。每个处理器核120中可以设置一个或多个内存管理单元122,不同处理器核120中的内存管理单元120也可以与位于其他处理器或处理器核中的内存管理单元120实现同步,使得每个处理器12或处理器核120可以共享统一的虚拟存储系统。
处理器12用于执行指令序列(即程序)。处理器12执行每个指令的过程包括:从存放指令的存储器中取出指令、对取出的指令进行译码、执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到停机指令(例如针对软件中断在程序序列中设置的断点指令,或者调试单元123关于硬件断点发送的中断指令)。
为了实现上述过程,处理器12可以包含取指令单元124、指令译码单元125、指令发射单元127、指令执行单元121和指令引退单元128等。
取指令单元124作为处理器12的启动引擎,用于将指令从存储器14中搬运到指令寄存器(可以是图2示出的寄存器堆26中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,处理器12进入指令译码阶段,指令译码单元125按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元121的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元127通常存在于高性能的处理器12中,位于指令译码单元125与指令执行单元121之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元121,使得多个指令的并行操作成为可能。指令经取指、译码并被调度到相应的指令执行单元121之后,相应的指令执行单元121开始执行该指令,即执行该指令所指示的操作、实现相应的功能(例如向调试单元123包括的调试地址寄存器内写入断点地址或擦除调试地址寄存器内已写入的断点地址)。
指令引退单元128(或称为指令写回单元)主要用于负责将指令执行单元121产生的执行结果写回到相应的存储位置(例如为处理器12内部的寄存器)中,以使后续指令能够从该存储位置处快速获取相应的执行结果。
对于不同类别的指令,可以在处理器12中相应地设置不同的指令执行单元121。指令执行单元121可以是运算单元(例如包含算术逻辑单元,矢量运算单元等,用于根据操作数进行运算并输出运算结果)、内存执行单元(例如用于根据指令访问内存以读取内存中的数据或向内存写入指定的数据或擦除内存中已存储数据等)以及协处理器等。在处理器12中,各个指令执行单元121可以并行运行并输出相应的执行结果。
指令执行单元121在执行某类指令(例如访存指令)时,需要访问存储器14,以获取存储器14中存储的信息或提供需要写入存储器14中的数据。
需要说明的是,用于执行访存指令的指令执行单元121也可以简称称为内存执行单元,该内存执行单元例如为加载存储单元(Load Store Unit,LSU)和/或其他用于内存访问的单元。
访存指令被取指令单元124获取之后,指令译码单元125可以对访存指令进行译码处理,使得访存指令的源操作数可被获取。译码处理后的访存指令被提供至相应的指令执行单元121中,该指令执行单元121可以对访存指令的源操作数进行相应的运算(例如由算术逻辑单元对存储于寄存器中的源操作数进行运算)以获得访存指令对应的地址信息,并根据该地址信息发起相应的请求,例如地址转译请求、写访问请求等。
访存指令的源操作数通常包括地址操作数,指令执行单元121对该地址操作数进行运算以获得访存指令对应的虚拟地址或物理地址。当内存管理单元122被禁用时,指令执行单元121可以直接通过逻辑运算获得访存指令的物理地址。当内存管理单元122被启用时,相应的指令执行单元121根据访存指令对应的虚拟地址发起地址转译请求,该地址转译请求包括与访存指令的地址操作数对应的虚拟地址;内存管理单元122响应地址转译请求,并根据与该虚拟地址匹配的表项将地址转译请求中的虚拟地址转换为物理地址,使得指令执行单元121可以根据转译后的物理地址访问高速缓冲存储器18和/或存储器14。
根据功能的不同,访存指令可包括加载指令和存储指令。加载指令的执行过程通常不需要对存储器14或高速缓冲存储器18中的信息进行修改,指令执行单元121只需要根据加载指令的地址操作数读取存储于存储器14、高速缓冲存储器18或外部的存储设备中的数据。
不同于加载指令,存储指令的源操作数不仅包括地址操作数,还包括数据信息,存储指令的执行过程通常需要对存储器14和/或高速缓冲存储器18进行修改。存储指令的数据信息可以指向写入数据,该写入数据的来源可以是运算指令、加载指令等指令的执行结果,也可以是处理器12中的寄存器或其他存储单元提供的数据、还可以是立即数。
程序在编写过程中,往往有调试的需求,因而处理器12中还设置了调试单元123。调试单元123包括调试地址寄存器、控制寄存器和调试控制器,其中,调试地址寄存器的数量为四个,分别用于存储一个断点地址,因而进程的硬件断点不可以无限设置;控制寄存器的数量为一个,用于存储各个硬件断点的状态,例如断点类型和断点长度等;调试控制器用于监测取指令单元124的取指地址并判断所述取指地址是否为断点地址,若是则生成中断指令以控制指令执行单元121中断程序的执行。
进程硬中断方法
在一些处理器中,调试单元里设置有存储在控制寄存器内的scontext,scontext用来保存情景信息(context id),情景信息标记硬件断点是为哪个进程设置的,因而硬件断点只有在其情景信息标记的特定进程中有效。对于调试单元123内未设置scontext的处理器12来说,现有技术对单个进程执行硬件中断较为困难。鉴于此,本公开提供了一种进程硬中断方法,该方法通过处理器12执行存储在存储器14内的程序来执行,相关程序也可以是存储在计算机可读存储介质上然后被读入到存储器14中。
图3所示为进程硬中断方法的流程图。参见图3,进程的进程控制块内预先写入断点地址,该进程硬中断方法包括:
步骤S120,在进程被调度到运行状态时,从进程控制块内获取断点地址。
步骤S140,将获取的断点地址写入已清空的调试地址寄存器内,以便调试单元123在进程的运行过程中基于调试地址寄存器内存储的断点地址执行硬中断。
需要说明的是,进程控制块(Processing Control Block,简称PCB),是系统为了管理进程而设置的一个专门的数据结构,被装载在存储器14中。在linux中,内核的进程控制块是task_struct结构体。PCB被用来记录进程的外部特征,描述进程的运动变化过程,同时可以用来控制和管理进程。进程控制块内通常包括程序计数器(即接着要运行的指令地址)和存储器管理信息(如标签页表)等,因而,上述步骤S120和S140的执行顺序可以设定为在对应进程被调度到运行状态时,且进程控制块内预先写入的断点地址可以被指定为写到已清空的调试地址寄存器内。
具体地,处理器12从存储器14中读取出中断地址并写到已清空的调试地址寄存器内,是一种处理器12从存储器14中读取出数据并写到寄存器内的过程,该过程通过取指令单元124、指令译码单元125、指令发射单元127和指令执行单元121相结合实现,可参照如上对处理器12的相关描述,这里不再赘述。
上述调试单元123在进程的运行过程中基于调试地址寄存器内存储的断点地址执行硬中断,是采用现有技术,可参照如上对调试单元123的相关描述,这里也不再赘述。
本公开实施例中,在进程被调度到运行状态时,通过处理器12执行程序的方式向已清空的调试地址寄存器内写入中断地址,因而进程的运行过程中调试地址寄存器内为针对该进程存储的中断地址,即调试地址寄存器内的数据和进程进行了绑定,这样调试单元123根据调试地址寄存器内的中断地址则执行针对当前进程的硬中断,从而实现了对单个进程的硬中断,解决了调试单元123未设置scontext就不能针对单个进程设置硬中断的技术问题。
一些示例中,处理器12执行的所有进程包括需要调试的进程和不需要调试的进程,只有需要调试的进程才有硬中断的需求。鉴于此,进程属于被调试进程的情况下,进程控制块内才会预先写入断点地址,参见图4,进程硬中断方法包括:步骤S110,判断进程控制块内是否存在断点地址,其中,若存在则表示进程属于被调试的进程,执行步骤S120;若不存在则表示进程不属于被调试的进程,处理器12对进程硬中断方法的执行过程无需停滞在步骤S120,直接结束即可。
具体地,进程控制块内的断点地址是通过gdb这一调试工具内的“hbreak”命令被预先写入的。“hbreak”命令有以下几种使用方式:
1)hbreak x.cpp:y,即在程序x.cpp的第y行加入断点;
2)hbreak 0xN,即在地址N处加入断点,其中,N必须为一个有效的程序段地址;
3)hbreak x.cpp:func,即在程序x.cpp的func函数入口处加入断点;
通过“hbreak”命令的上述使用方式,可见预先在进程控制块内设置的断点地址是在程序中指定的。
本公开的一个可选实施例中,参见图5,进程硬中断方法还包括:步骤S160,在进程被调度出运行状态时,擦除调试地址寄存器内存储的断点地址,即在一个进程执行完及时清空调试地址寄存器内的数据,这样确保下一个进程执行是调试地址寄存器处于已清空状态。
同样考虑到处理器12执行的所有进程可能既包括需要调试的进程又包括不需要调试的进程,只有需要调试的进程才有硬中断的需求,因而进程属于被调试进程的情况下进程控制块内才会预先写入断点地址,随后步骤S140的执行使得调试地址寄存器内写入断点地址。鉴于此,进程硬中断方法还包括:在进程被调度出运行状态时先判断进程控制块内是否存在断点地址,其中,若存在则执行步骤S160;若不存在则表示调试地址寄存器内没有针对当前进程写入断点地址,因而不进行步骤S160的无效执行,直接结束。
本公开的另一个可选实施例中,进程硬中断方法还包括:在进程运行前,删除进程控制块内预先写入的个别断点地址或全部断点地址,该步骤多用于进程运行前实现对进程内硬件断点的调整。
具体地,进程控制块内的断点地址是通过gdb这一调试工具内的“delete break”命令被删除的。“delete break”命令执行“hbreak”命令的逆操作,使用方式可参见以上“hbreak”命令的使用方式。
本公开的另一个可选实施例中,进程硬中断方法还包括:在进程的运行过程中,擦除个别调试地址寄存器内存储的断点地址或全部调试地址寄存器内存储的断点地址。该步骤多用于进程运行过程中实现对进程内硬件断点的调整。应当理解的是,由于本公开实施例设置的硬件断点只在当前运行进程内有效,因而在进程运行过程中调整硬件断点也是调整当前运行进程的硬件断点,这样擦除的调试地址寄存器是进程未运行到其内断点地址的一些调试地址寄存器。
上述无论是擦除进程控制块内的数据还是擦除调试地址寄存器内的数据,皆是通过内存执行单元这种指令执行单元121执行的,具体参照如上关于处理器12的相关描述,这里不再赘述。
需要领会,以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
Claims (10)
1.一种进程硬中断方法,其特征在于,所述进程的进程控制块内预先写入断点地址,所述硬中断方法包括:
在所述进程被调度到运行状态时,从所述进程控制块内获取断点地址;
将获取的断点地址写入已清空的调试地址寄存器内,以便调试单元在所述进程的运行过程中基于所述调试地址寄存器内存储的断点地址执行硬中断。
2.根据权利要求1所述的进程硬中断方法,其特征在于,所述进程在属于被调试进程的情况下,所述进程控制块内才会预先写入断点地址,所述进程硬中断方法还包括:
判断所述进程控制块内是否存在断点地址;
其中,若所述进程控制块内存在断点地址,则从所述进程控制块内获取断点地址。
3.根据权利要求2所述的进程硬中断方法,其特征在于,所述进程控制块内的断点地址是通过gdb这一调试工具内的“hbreak”命令被预先写入的。
4.根据权利要求1所述的进程硬中断方法,其特征在于,还包括:在所述进程被调度出运行状态时,擦除所述调试地址寄存器内存储的断点地址。
5.根据权利要求4所述的进程硬中断方法,其特征在于,所述进程在属于被调试进程的情况下,所述进程控制块内才会预先写入断点地址,所述进程硬中断方法还包括:
判断所述进程控制块内是否存在断点地址;
其中,若所述进程控制块内存在断点地址,则擦除所述调试地址寄存器内存储的断点地址。
6.根据权利要求1所述的进程硬中断方法,其特征在于,还包括:在所述进程运行前,删除所述进程控制块内预先写入的个别断点地址或全部断点地址。
7.根据权利要求6所述的进程硬中断方法,其特征在于,所述进程控制块内的断点地址是通过gdb这一调试工具内的“delete break”命令被删除的。
8.根据权利要求1所述的进程硬中断方法,其特征在于,还包括:在所述进程的运行过程中,擦除个别所述调试地址寄存器内存储的断点地址或全部所述调试地址寄存器内存储的断点地址。
9.一种电子设备,其特征在于,包括:处理器和存储器,其中,所述存储器内存储有可被所述处理器执行的程序,所述程序被所述处理器执行时实现如权利要求1-8中任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111138176.XA CN113961452A (zh) | 2021-09-27 | 2021-09-27 | 硬中断方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111138176.XA CN113961452A (zh) | 2021-09-27 | 2021-09-27 | 硬中断方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961452A true CN113961452A (zh) | 2022-01-21 |
Family
ID=79462475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111138176.XA Pending CN113961452A (zh) | 2021-09-27 | 2021-09-27 | 硬中断方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961452A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115048145A (zh) * | 2022-06-14 | 2022-09-13 | 海光信息技术股份有限公司 | 一种信息采集方法、装置及相关设备 |
-
2021
- 2021-09-27 CN CN202111138176.XA patent/CN113961452A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115048145A (zh) * | 2022-06-14 | 2022-09-13 | 海光信息技术股份有限公司 | 一种信息采集方法、装置及相关设备 |
CN115048145B (zh) * | 2022-06-14 | 2023-04-25 | 海光信息技术股份有限公司 | 一种信息采集方法、装置及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9652230B2 (en) | Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines | |
TWI722010B (zh) | 用以減少核心至核心資料轉移最佳化指令之性能反轉的低負擔硬體預測器、設備及方法 | |
JP5027669B2 (ja) | マイクロプロセッサ、集積回路、システム及び方法 | |
US9367311B2 (en) | Multi-core processor system, synchronization control system, synchronization control apparatus, information generating method, and computer product | |
KR100933820B1 (ko) | 메모리 속성들을 사용하기 위한 기술 | |
US10552153B2 (en) | Efficient range-based memory writeback to improve host to device communication for optimal power and performance | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
EP3547146A1 (en) | System, method, and apparatus for detecting repetitive data accesses and automatically loading data into local cache | |
US5617553A (en) | Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer | |
US20140129784A1 (en) | Methods and systems for polling memory outside a processor thread | |
JP2015516602A (ja) | ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
US20060149940A1 (en) | Implementation to save and restore processor registers on a context switch | |
US9817763B2 (en) | Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
US9405545B2 (en) | Method and apparatus for cutting senior store latency using store prefetching | |
CN113961452A (zh) | 硬中断方法和相关装置 | |
US10303504B2 (en) | Systems, methods, and apparatuses for resource monitoring | |
CN115934584A (zh) | 设备私有存储器中的存储器访问跟踪器 | |
CN113672555B (zh) | 处理器核、处理器、片上系统和调试系统 | |
JP2000353092A (ja) | 情報処理装置及びそのレジスタファイル切替方法 | |
CN114924793A (zh) | 处理单元、计算设备和指令处理方法 | |
CN113885943A (zh) | 处理单元、片上系统、计算装置及方法 | |
CN113672554B (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 | ||
CB02 | Change of applicant information |
Address after: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, economic and Technological Development Zone, Daxing District, Beijing Applicant after: Beijing ESWIN Computing Technology Co.,Ltd. Address before: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, economic and Technological Development Zone, Daxing District, Beijing Applicant before: Beijing yisiwei Computing Technology Co.,Ltd. |
|
CB02 | Change of applicant information |