一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种信息采集方法、装置及相关设备与流程

2022-09-14 19:52:32 来源:中国专利 TAG:


1.本发明实施例涉及计算机测试领域,具体涉及一种信息采集方法、装置及相关设备。


背景技术:

2.协处理器是一种协助主处理器完成其无法执行或执行效率低的处理工作而开发和应用的处理器。常用的协处理器例如通用图形处理器(general-purpose computing on graphics processing units,简称gpgpu),是一种用于计算原本由中央处理器处理的通用计算任务的图形处理器,由于其强大的并行处理能力和可编程流水线,在进行数据块并行处理算法上具有较大的优势。
3.在协处理器处理计算任务时,符合协处理器硬件架构特点的算法能够有效提升任务处理效率。然而,如何确定执行并行计算任务的算法是否符合协处理器硬件架构特点,是本领域亟待解决的问题。


技术实现要素:

4.有鉴于此,本发明实施例提供一种信息采集方法、装置及相关设备,能够确定执行并行计算任务的算法是否符合协处理器硬件架构特点。
5.为实现上述目的,本发明实施例提供如下技术方案。
6.第一方面,本发明实施例提供一种信息采集方法,应用于调试器,包括:
7.为目标程序中的协程序设置断点信息,以在所述协程序的运行过程中,控制调试代理基于所述断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;所述断点信息用于标记信息采集的起止位置,所述协程序为运行在协处理器上的程序;其中,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息;
8.获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。
9.第二方面,本发明实施例还提供一种信息采集方法,应用于调试代理,包括:
10.在目标程序中的协程序的运行过程中,基于所述协程序中的断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;其中,所述目标程序中的协程序为运行在协处理器上的程序,所述断点信息用于标记信息采集的起止位置,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息;
11.将所采集的信息发送至调试器,以使调试器得到所述协程序在硬件的运行数据。
12.第三方面,本发明实施例还提供一种信息采集装置,包括:
13.断点设置模块,用于为目标程序中的协程序设置断点信息,以在所述协程序的运行过程中,控制调试代理基于所述断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;所述断点信息用于标记信息采集的起止位置,所述协程序为运行在协处理器上的程序;其中,所述线程通道的硬件信息包括所述线程通道的
硬件标识和所述线程通道的状态信息;
14.信息获取模块,用于获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。
15.第四方面,本发明实施例还提供一种信息采集装置,包括:
16.信息采集模块,用于在目标程序中的协程序的运行过程中,基于所述协程序中的断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;其中,所述目标程序中的协程序为运行在协处理器上的程序,所述断点信息用于标记信息采集的起止位置,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息;
17.信息发送模块,用于将所采集的信息发送至调试器,以使调试器得到所述协程序在硬件的运行数据。
18.第五方面,本发明实施例还提供一种计算机设备,包括:至少一个存储器和至少一个处理器;所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行第一方面提供的信息采集方法,和/或,执行第二方面提供的信息采集方法。
19.第六方面,本发明实施例还提供一种存储介质,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令用于执行第一方面提供的信息采集方法,和/或,执行第二方面提供的信息采集方法。
20.本发明实施例提供了一种信息采集方法、装置及相关设备,所述信息采集方法包括:为目标程序中的协程序设置断点信息,以在所述协程序的运行过程中,控制调试代理基于所述断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;所述断点信息用于标记信息采集的起止位置,所述协程序为运行在协处理器上的程序;其中,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息;获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。
21.可以看出,本发明实施例通过设置断点信息确定需进行信息采集的起止位置,并基于该断点信息,控制协处理器采集所述目标程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息,从而准确反映底层硬件在处理任务过程中的实际运行情况,进而确定执行并行计算任务的算法是否与硬件架构特点相符合,从而为提高并行计算任务的处理效率提供基础。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
23.图1为一种计算任务的分解方式示意图;
24.图2为本发明实施例提供的gpgpu的结构示意图;
25.图3为本发明实施例提供的并行计算单元的可选结构图;
26.图4为本发明实施例提供的调试架构数据流的可选示意图;
27.图5为本发明实施例提供的一种信息采集方法的可选流程示意图;
28.图6为本发明实施例提供的一种信息采集方法的另一可选流程示意图;
29.图7为本发明实施例提供的一种图形信息的展示示例;
30.图8为本发明实施例提供的一种图形信息的展示示例中的线程展示示例;
31.图9为本发明实施例提供的步骤s10的可选流程图;
32.图10为本发明实施例提供的一种信息采集方法的又一可选流程图;
33.图11为本发明实施例提供的步骤s10的另一可选流程图;
34.图12为本发明实施例提供的信息采集装置的框图;
35.图13为本发明实施例提供的另一信息采集装置的框图;
36.图14为本发明实施例提供的计算机设备的框图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.以协处理器为gpgpu为例,在分配gpgpu处理一个计算任务时,可以将计算任务分解为相应的任务项,进而使得gpgpu中用于进行数据处理的各部件,基于各个任务项,执行相应的计算。
39.图1示例性的示出了一种计算任务的分解方式示意图。其中,一个计算任务可以用一个线程网格(grid)来代表,一个线程网格可以被分解成多个工作组(workgroup),一个工作组可以被分解为多个工作项(work item),其中,工作项可以理解为工作组内定义的最小计算单元。在进行具体的运算过程中,针对一个工作项的操作处理可以看作一个线程块,且线程块可以进一步分解为多个线程束(也称为线程组、wave或warp)。线程束是gpgpu硬件上一次最小并行执行的多个线程的集合,一个线程束可以包括64个线程(thread,thread是gpgpu中执行的最小粒度)。
40.图2示例性的示出了gpgpu的结构示意图,如图2所示,该图形处理器可以包括计算内核(也称为计算单元cu,compute-unit)11和工作组调度模块12。
41.其中,计算内核11通常为多个,在图形处理器处理计算任务时,一个工作组会被分配到一个计算内核上执行。工作组调度模块12用于进行工作组的分配和调度。
42.继续参考图2,计算内核11包括指令调度模块13,以及多个并行计算单元(parallel unit,图中标记为pu)14。并行计算单元14是gpgpu中执行并行计算的最小单元,一个并行计算单元14上可以分配一个线程块,并依次处理线程块中的线程束。指令调度模块13用于调度各线程束的执行进程,管理各线程块对应的线程束队列。
43.并行计算单元14可以为单指令多数据流结构,具体的,参考图3所示的并行计算单元的可选结构图,并行计算单元可以包括矢量通用寄存器片、算术逻辑单元(alu,arithmetic and logic unit)和本地数据共享存储器,一算术逻辑单元alu用于处理一个线程,可以理解为一个线程通道,不同线程通道共用并行计算单元中的共享硬件资源,如矢量通用寄存器片和本地数据共享存储器等。
44.在本发明实施例中,可以为所述线程通道指定唯一的标号作为所述线程通道的硬件标识,从而可以基于所述硬件标识,确定用于处理所述线程的线程通道,进而能够确定进行并行处理的各线程对应的线程通道的硬件信息,为准确反映底层硬件在处理任务过程中的实际运行情况提供基础。
45.在一个可选的示例中,以进行并行数据运算的程序为目标程序为例,目标程序可以包括用于运行在主处理器上的主程序和用于运行在协处理器上的协程序(例如在gpgpu中的gpu kernel程序)。在运行该目标程序时,主程序控制主处理器将协程序的指令和数据写入协处理器,协处理器则基于这些指令和数据进行具体的运算。基于此,本发明实施例提供了一种可选的调试架构,参考图4示出的调试架构数据流的可选示意图,所述调试架构包括位于主处理器端的调试器,以及,位于协处理器端的调试代理。其中,调试器用于对目标程序进行调试分析,调试代理用于对协程序进行调试分析,从而基于两端的交互配合进行数据的采集,确定底层硬件在处理任务过程中的实际运行情况。
46.基于上述调试架构,本发明实施例进一步提供了一种信息采集方法、装置及相关设备,所述信息采集方法包括:为目标程序中的协程序设置断点信息,以在所述协程序的运行过程中,控制调试代理基于所述断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;所述断点信息用于标记信息采集的起止位置,所述协程序为运行在协处理器上的程序;其中,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息;获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。
47.可以看出,本发明实施例通过设置断点信息确定需进行信息采集的起止位置,并基于该断点信息,控制协处理器采集所述目标程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息,从而准确反映底层硬件在处理任务过程中的实际运行情况,进而确定执行并行计算任务的算法是否与硬件架构特点相符合,从而为提高并行计算任务的处理效率提供基础。
48.下面,结合具体的示例,对本发明实施例提供的信息采集方案进行进一步的说明。
49.在一个可选的示例中,参考图5提供的一种信息采集方法的可选流程示意图,所述信息采集方法可以包括:
50.步骤s10:调试器为目标程序中的协程序设置断点信息,所述断点信息用于标记信息采集的起止位置;
51.其中,所述目标程序为需要执行并行数据运算的程序,所述目标程序可以包括协程序和主程序,所述主程序为运行在主处理器上的程序,所述协程序为运行在协处理器上的程序。
52.可以理解的是,在进行信息采集之前,通过为目标程序中的协程序设置断点信息,以确定具体的信息采集的起止位置,从而可以基于该断点信息进行信息的采集。可选的,断点信息还可以通过在主处理器和协处理器间触发消息交互流程,从而向两端(主处理器端和协处理器端)表明信息采集的起止时间。具体的,断点信息例如可以为用于执行向主处理器发送中断消息的中断代码,也可以为触发主处理器和协处理器交互的陷阱指令,本发明在此不做具体的限定。
53.需要说明的是,所述断点信息设置在所述目标程序的协程序中,从而可以在协程
序的执行过程中基于断点信息进行信息的采集。
54.步骤s11:在所述协程序的运行过程中,调试代理基于所述协程序中的断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;
55.其中,在所述目标程序的运行过程中,可以控制协程序的运行。具体的,所述目标程序可以在调试器的控制下运行,也可以由其他事件触发运行,例如,基于用户的指令触发等,在目标程序的运行过程中,在需要协处理器进行执行并行计算任务时,目标程序会将协程序(具体可以为一组指令数据)发送至协处理器,并通知协处理器运行所述协程序。
56.相应的,在协程序的运行过程中,运行至所述断点信息时,可以对该对应的节点进行标记,从而标记进行信息采集的起止位置。可选的,所述断点信息,可以包括起始断点信息和终止断点信息,所述起始断点信息用于标记进行信息采集的起始节点,终止断点信息用于标记进行信息采集的终止节点。
57.在一个可选的示例中,在协处理器运行协程序至断点信息时,断点信息可以触发主处理器和协处理器间的消息交互流程,使得主处理器端的协程序驱动和调试器能够得知协程序已运行至断点信息标记的节点,相应的,调试器和调试代理进入交互模式。其中,用于触发主处理器和协处理器间的消息交互流程的可以是起始断点信息,也可以是终止断点信息。
58.可以理解的是,在信息采集的起始节点,即协程序运行至所述起始断点信息时,则调试代理基于该起始断点信息,开启对协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息的采集。
59.其中,线程组内各线程的运行信息可以包括所述线程组在所述线程通道的发射和完成时间戳,以及,执行协程序各指令的时间戳等。
60.其中,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息。所述线程通道的硬件标识可以为线程通道指定唯一的标号,所述硬件标识可以对应于所述线程通道所在的硬件处理单元(该硬件处理单元例如可以为并行计算单元,或具体的单指令多数据处理器),进而可以基于该硬件标识,同时确定线程通道及其所属的硬件处理单元。所述线程通道的状态信息,用于标识所述线程通道的状态,例如可以标识所述线程通道是否为空闲状态、停滞状态、执行状态、特殊指令状态等。
61.步骤s12:调试代理将所采集的信息发送至调试器;
62.其中,通过将所采集的信息发送至调试器,以使调试器得到所述协程序在硬件的运行数据。
63.步骤s13:调试器获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。
64.在调试器发送所采集的信息后,相应的,调试器可以获取所述调试代理采集的信息,进而使得调试器能够基于所采集的信息,分析协程序在硬件层面的运行情况,进而确定协程序所采用的算法是否与硬件架构特点相符合,为提高并行计算任务的处理效率提供基础。
65.在一个可选的示例中,所述协处理器可以包括显存,所述调试代理在采集运行信息后,将所述运行信息存储在显存中。相应的,在步骤s13中,所述调试器可以通过访问所述协处理器的显存,获取所述调试代理采集的运行信息。相应的,调试代理基于所述调试及对
所述协处理器的显存的访问,将所采集的信息发送至调试器。
66.可以理解的是,在显存中存储的数据,可以基于相应的指令进行直接的处理,例如对显存中所存储的运行信息进行解析、显示等。相应的,参考图6所示的一种信息采集方法的另一可选流程示意图,在本示例中,在执行步骤s13后,还进一步包括:
67.步骤s14:向所述显存发送解析指令,以将所述显存中的运行信息解析为图形信息;
68.其中,对所述运行信息的解析步骤,可以由主处理器执行,也可以为协处理器执行,本发明在此不做具体的限定。可以理解的是,主处理器或协处理器可以根据具体的解析指令,实现对运行信息的解析。可选的,若所述协处理器的调试代理执行对所述运行信息的解析,则可以通过获取所述解析指令,将所述显存中的运行信息解析为图形信息。
69.通过将显存中的运行信息解析为图形信息,为展示所述运行信息提供基础。
70.步骤s15:向所述显存发送展示指令,以将所述图形信息展示至预设设备;
71.对所述图形信息的展示步骤,由协处理器执行。具体的,可以通过获取所述展示指令,将所述图形信息展示至预设设备。其中,所述预设设备可以为显示设备或带有显示功能的终端设备等,本发明在此不做具体的限定。
72.在一个可选的示例中,参考图7示出的一种图形信息的展示示例,其中,基于不同的线程通道,展示有对应的线程组及线程组内线程(图中示为thread),例如,线程通道0对应执行的为线程组0内的thread0,图中示为“thread0/线程组0”,其在图中的位置可以用于展示一线程通道内各线程的执行顺序以及不同线程通道内各线程的执行顺序,例如,基于图7中的显示,线程通道0内首先执行“thread0/线程组0”,之后,执行“thread0/线程组1”,线程通道0内“thread0/线程组0”的执行时间先于相对于线程通道1内的“thread1/线程组0”。在进一步的可选示例中,图7中用于展示线程的部分(即图中的虚线框出的部分)还可以进一步展示对应该线程的其他信息,参考图8示出的一种线程展示示例,该部分还可以进一步展示对应该线程的矢量算术指令、张量算术指令和通道状态指示等。
73.通过将所述运行信息进行直观地展示,以使得用户判断目标程序在协处理器中的运行状况,确定执行并行计算任务的算法是否符合协处理器的硬件架构特点。
74.在一个可选的示例中,所述断点信息可以为中断代码,所述中断代码用于向主处理器发送中断消息,相应的,参考图9示出的步骤s10的可选流程图,所述步骤s10可以包括:
75.步骤s101:进入协程序的调试模式;
76.其中,所述调试器可以启动协程序进而调试模式,或者,将调试器附加到协程序的进程,从而进而协程序的调试模式。
77.进入协程序的调试模式,从而可以实现对协程序的调试,包括对代码的变更、调整等。
78.步骤s102:在协程序的断点处插入中断代码,以使所述协程序运行至断点位置时,向处理器发送中断消息。
79.所述协程序的断点可以理解为协程序代码中需要进行信息采集和无需进行信息采集的边界点,可以理解的是,所述协程序的断点,可以为进行信息采集的起始点,也可以为进行信息采集的终止点。
80.在进行协程序的调试过程中,可以在协程序的断点处插入中断代码,从而可以在
调试器和调试代理中完成断点注册。在一个具体的示例中,所述调试器可以基于监控指令(例如ptrace指令),修改所述协程序中的指令,从而在所述协程序中插入中断代码。
81.可以理解的是,协程序在运行至断点位置时,可以触发调试代理的信息采集流程,同时可以向主处理器发送中断消息,将协程序的运行进度通知调试器,进而使得调试器确定是否进入与调试代理的交互模式。
82.可选的,所述调试器可以基于起始断点信息进入与调试代理的交互模式,也可以基于终止断点信息进入与调试代理的交互模式。其中,所述调试器可以在接收到对应所述终止断点信息的中断消息后,进入与调试代理的交互模式,相应的,调试器在交互模式下,控制所述调试代理执行所述将所采集的信息发送至调试器,以使调试器获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。或者,所述调试器在接收到对应所述起始断点信息的中断消息后,所述调试器进入与调试代理的交互模式;在交互模式下,调试器控制所述调试代理基于所述断点信息,采集所述目标程序的线程组在线程通道的运行信息,并将所采集的信息发送至调试器,以使调试器获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。
83.在一个可选的示例中,调试器基于起始断点信息进入交互模式时,还可以控制调试代理进入单步调试模式,从而可以控制调试代理对所执行的协程序的指令进行逐一控制,并控制调试代理采集所执行的指令对应的线程组内各线程的运行信息及其所对应的线程通道的硬件信息,进而实现对协程序的精细调控。
84.在一个可选的示例中,调试器可以基于用户输入的调试命令(例如gdb(gnu debugger)的单步调试命令stepi)控制调试代理进入单步调试模式。
85.具体的,在单步调试模式,调试代理可以控制协处理器每执行一条协程序的指令,均触发中断消息并暂停协程序的执行,其中,中断消息用于通知主处理端的调试器所述协程序的处理节点,相应的,调试器进一步基于与调试代理的交互,实现对调试代理的控制,进而实现对协程序的控制。
86.需要说明的是,在调试代理基于起始断点信息,开启信息采集流程,在单步调试模式下,所述调试代理可以基于已执行的指令逐一进行信息的采集,并将所采集的信息发送至调试器。其中,协处理器每执行一指令,该指令即可理解为已执行的上一指令。
87.相应的,参考图10示出的一种信息采集方法的又一可选流程图,在单步调试模式下,步骤s11中调试代理采集相应的信息,具体可以为:
88.步骤s111:采集已执行的上一指令对应的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;
89.可以理解的是,在一指令执行完毕后,即可理解为已执行的上一指令。从而,调试代理可以采集该已执行的上一指令对应的线程组内各线程的运行信息及其所对应的线程通道的硬件信息。
90.相应的,在采集上述信息后,步骤s12将所采集的信息发送给调试器,进而使得调试器获取调试代理采集的已执行的上一指令对应的线程组内各线程的运行信息及其所对应的线程通道的硬件信息。
91.对应的,调试器在步骤s13中,可以包括:
92.步骤s131:获取所述调试代理所采集的已执行的上一指令对应的线程组内各线程
的运行信息及其所对应的线程通道的硬件信息;
93.步骤s132:根据所获取的信息,更新所述协程序在硬件的运行数据;
94.其中,所述协程序在硬件的运行数据为所获取的采集数据的总和。
95.可以理解的是,逐一获取已执行的指令的运行信息后,通过将对应的运行信息进行汇总更新,从而可以得到协程序在硬件的完整的运行数据。
96.在另一个可选的示例中,所述目标程序中可以插入有调试符信息(比如dwarf),所述调试符信息中包含有目标程序中各行源代码在目标程序中的位置和/或目标程序中的各函数的入口在目标程序中的位置。相应的,参考图11示出的步骤s10的另一可选流程图,步骤s10可以包括:
97.步骤s103:加载目标程序中的调试符号信息;
98.可以理解的是,在目标程序源代码的编译过程中,可以指定调试编译选项在目标程序中插入调试符号信息。调试符号信息中可以包含每一行源代码所对应的目标程序中的地址以及各函数(包括cpu函数和kernel函数)的入口在目标程序中的地址。在调试器启动后,可以加载所述调试符号信息。
99.步骤s104:根据所述调试符号信息,查找所述目标程序的断点对应的加载地址;
100.具体的,在需要为目标程序设置断点时,可以查找断点对应在目标程序在内存中的加载地址。所述断点,可以为具体的源代码行号,也可以为函数的函数名。
101.步骤s105:将所查找的加载地址的指令替换为陷阱指令,以使所述陷阱指令作为所述目标程序的断点信息;
102.在确定断点具体的加载地址后,可以将所查找的加载地址的指令进行替换。其中,所述陷阱程序与程序的类型相对应。在所述目标程序的主程序部分的陷阱指令(下称主程序陷阱指令)对应主程序的程序类型,在所述目标程序的协程序部分的陷阱指令(下称协程序陷阱指令)对应协程序的程序类型。相应的,在执行本步骤中,可以在所述目标程序中的主程序中,将所查找的加载地址的指令替换为主程序陷阱指令;在所述目标程序中的协程序中,将所查找的加载地址的指令替换为协程序陷阱指令。
103.其中,在一个具体的示例中,若断点为行号为15的c 源代码,在c 源代码被c 编译器编译后,生成可以执行的机器代码。相应的,行号15为的c 源代码在编译后表现为elf(一种linux系统二进制文件格式)文件里的一段机器代码。其中,所述断点对应的加载地址则可以理解为将该段机器代码加载到内存中的地址,而相应的替换过程则是将该地址的第一条指令替换为陷阱指令。可以理解的是,调试器可以自动根据目标程序的加载信息和elf里提供的信息找到断点对应的加载地址完成替换。
104.在目标程序(包括协程序和主程序)运行至陷阱指令时,会使硬件执行陷阱处理,进而会保存当前运行状态信息并同时通过中断机制发送中断消息至调试器。
105.下面对本发明实施例提供的信息采集装置进行介绍,该信息采集装置可以理解为调试器内的装置,下文描述的装置内容可以认为是计算机设备为实现本发明实施例提供的信息采集方法所需设置的功能模块。下文描述的装置内容可与上文描述的方法内容相互对应参照。
106.图12示出了本发明实施例提供的信息采集装置的框图。如图12所示,该装置可以包括:
107.断点设置模块200,用于为目标程序中的协程序设置断点信息,以在所述协程序的运行过程中,控制调试代理基于所述断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;所述断点信息用于标记信息采集的起止位置,所述协程序为运行在协处理器上的程序;其中,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息;
108.信息获取模块210,用于获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据。
109.在一些实施例中,所述运行信息包括:所述线程组在所述线程通道的发射和完成时间戳,以及,执行所述协程序各指令的时间戳;所述硬件标识对应于所述线程通道所在的硬件处理单元。
110.在一些实施例中,所述断点信息为中断代码,所述中断代码用于向主处理器发送中断消息,所述断点设置模块200,用于为目标程序中的协程序设置断点信息,包括:
111.进入所述协程序的调试模式;
112.在所述协程序的断点处插入中断代码,以使所述协程序运行至断点位置时,向主处理器发送中断消息。
113.在一些实施例中,所述断点设置模块200,用于在协程序的断点处插入中断代码,包括:
114.基于监控指令,修改所述协程序中的指令,以在所述协程序中插入中断代码。
115.在一些实施例中,所述断点信息包括起始断点信息和终止断点信息;
116.其中,在接收到对应所述终止断点信息的中断消息后,所述调试器进入与调试代理的交互模式;在交互模式下,所述信息获取模块210,执行获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据的步骤;
117.或者,在接收到对应所述起始断点信息的中断消息后,所述调试器进入与调试代理的交互模式;在交互模式下,调试器执行所述控制调试代理基于所述断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息,以及,信息获取模块210,执行所述获取所述调试代理采集的信息,得到所述协程序在硬件的运行数据的步骤。
118.在一些实施例中,所述在交互模式下,调试器执行所述控制调试代理基于所述断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息的步骤,具体为,在交互模式下,控制所述调试代理进入单步调试模式,以对所执行的协程序的指令进行逐一控制,并控制调试代理采集所执行的指令对应的线程组内各线程的运行信息及其所对应的线程通道的硬件信息。
119.在一些实施例中,在所述调试代理为单步调试模式时,所述信息获取模块210,用于获取所述调试代理采集的信息,包括:
120.获取调试代理采集的已执行的上一指令对应的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;
121.根据所获取的信息,更新所述协程序在硬件的运行数据;其中,所述协程序在硬件的运行数据为所获取的采集数据的总和。
122.在一些实施例中,所述协处理器包括显存,所述调试代理在采集运行信息后,将所
述运行信息存储在显存中;所述信息获取模块210,用于获取所述调试代理采集的运行信息,包括:
123.访问所述协处理器的显存,获取所述调试代理采集的运行信息;
124.在一些实施例中,所述信息采集装置,还包括:
125.解析指令发送模块220,用于向所述显存发送解析指令,以将所述显存中的运行信息解析为图形信息;
126.展示指令发送模块230,用于向所述显存发送展示指令,以将所述图形信息展示至预设设备。
127.在一些实施例中,所述目标程序中插入有调试符号信息;所述调试符号信息包含有目标程序中各行源代码在目标程序中的位置和/或目标程序中的各函数的入口在目标程序中的位置;
128.所述断点设置模块200,用于为目标程序中的协程序设置断点信息,包括:
129.加载目标程序中的所述调试符号信息;
130.根据所述调试符号信息,查找所述目标程序的断点对应的加载地址;
131.将所查找的加载地址的指令替换为陷阱指令,以使所述陷阱指令作为所述目标程序的断点信息。
132.在一些实施例中,所述断点设置模块200,用于将所查找的加载地址的指令替换为陷阱指令,包括:
133.在所述目标程序中的主程序中,将所查找的加载地址的指令替换为主程序陷阱指令;
134.在所述目标程序中的协程序中,将所查找的加载地址的指令替换为协程序陷阱指令。
135.下面对本发明实施例提供的另一信息采集装置进行介绍,该信息采集装置可以理解为调试代理内的装置,下文描述的装置内容可以认为是计算机设备为实现本发明实施例提供的信息采集方法所需设置的功能模块。下文描述的装置内容可与上文描述的方法内容相互对应参照。
136.图13示出了本发明实施例提供的另一信息采集装置的框图。如图13所示,该装置可以包括:
137.信息采集模块300,用于在目标程序中的协程序的运行过程中,基于所述协程序中的断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息;其中,所述目标程序中的协程序为运行在协处理器上的程序,所述断点信息用于标记信息采集的起止位置,所述线程通道的硬件信息包括所述线程通道的硬件标识和所述线程通道的状态信息;
138.信息发送模块310,用于将所采集的信息发送至调试器,以使调试器得到所述协程序在硬件的运行数据。
139.在一些实施例中,所述运行信息包括:所述线程组在所述线程通道的发射和完成时间戳,以及,执行所述协程序各指令的时间戳;所述硬件标识对应于所述线程通道所在的硬件处理单元。
140.在一些实施例中,所述断点信息包括起始断点信息和终止断点信息;
141.所述调试器在接收到对应所述终止断点信息的中断消息后,进入与调试代理的交互模式;在交互模式下,所述信息发送模块310将所采集的信息发送至调试器,以使调试器得到所述协程序在硬件的运行数据;
142.或者,所述调试器在接收到对应所述起始断点信息的中断消息后,进入与调试代理的交互模式;在交互模式下,所述信息采集模块300基于所述协程序中的断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息,以及,所述信息发送模块310将所采集的信息发送至调试器,以使调试器得到所述协程序在硬件的运行数据。
143.在一些实施例中,所述信息采集模块300,用于基于所述协程序中的断点信息,采集所述协程序的线程组内各线程的运行信息及其所对应的线程通道的硬件信息,具体为,在交互模式下,所述调试代理进入单步调试模式,所述信息采集模块300对所执行的协程序的指令进行逐一控制,并采集已执行的上一指令对应的线程组内各线程的运行信息及其所对应的线程通道的硬件信息。
144.在一些实施例中,所述信息采集装置,还包括:
145.信息存储模块320,用于将所述运行信息存储在所述显存中;
146.所述信息发送模块310,用于将所采集的信息发送至调试器,具体为,所述信息发送模块310,基于所述调试器对所述协处理器的显存的访问,将所采集的信息发送至调试器。
147.在一些实施例中,所述信息采集装置,还包括:
148.解析指令获取模块330,用于获取所述调试器向所述显存发送的解析指令,将所述显存中的运行信息解析为图形信息;
149.展示指令获取模块340,用于获取所述调试器向所述显存发送的展示指令,将所述图形信息展示至预设设备。
150.在一些实施例中,所述目标程序中插入有陷阱指令,以所述陷阱指令作为所述目标程序的断点信息。
151.本发明实施例还提供一种计算机设备,该计算机设备可以包括:至少一个存储器和至少一个处理器;所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行本发明实施例提供的应用于调试器的信息采集方法,和/或,执行本发明实施例提供的应用于调试代理的信息采集方法。
152.可选的,图14示出了本发明实施例提供的计算机设备的框图,如图14所示,该移动终端可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
153.在本发明实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;显然,图示的处理器1、通信接口2、存储器3和通信总线4的通信连接示意仅是可选的;
154.可选的,通信接口2可以为用于进行网络通信的通信模块的接口;
155.处理器1可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
156.存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
157.其中,存储器3存储一条或多条计算机可执行指令,处理器1调用所述一条或多条计算机可执行指令,以执行本发明实施例提供的应用于调试器的信息采集方法,和/或,执行本发明实施例提供的应用于调试代理的信息采集方法。
158.本发明实施例还提供一种存储介质,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令用于执行本发明实施例提供的应用于调试器的信息采集方法,和/或,执行本发明实施例提供的应用于调试代理的信息采集方法。
159.上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
160.虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献