进程调试方法、装置及存储介质与流程

文档序号:32427165发布日期:2022-12-03 00:10阅读:55来源:国知局
进程调试方法、装置及存储介质与流程

1.本技术涉及计算机软件领域,尤其涉及一种进程调试方法、装置及存储介质。


背景技术:

2.在linux操作系统下的软件开发过程中,相关技术通常采用gdb(gnu symbolic debugger)调试工具或者在待调试的程序中添加打印函数(例如printf函数)对程序进行调试。
3.在通过gdb调试工具对程序进行调试的方案中,相关人员需要先通过gdb调试工具在待调试的程序中的指定位置处设置断点。该程序运行到断点处时会中断运行,此时,相关人员可以通过gdb调试工具对该程序进行调试。该方案会使得程序的中止时间过长,无法识别出时延敏感的问题,导致调试效率低下。
4.在通过添加打印函数对程序进行调试的方案中,相关人员需要在程序源码的指定位置处增加打印函数,并重新编译该程序源码。程序运行至指定位置时会通过打印函数输出调试结果。该方案需要相关人员反复修改程序源码并重新编译,调试效率低下。


技术实现要素:

5.本技术提供一种进程调试方法、装置及存储介质,能够提高进程调试效率。
6.为达到上述目的,本技术采用如下技术方案:
7.第一方面,本技术提供一种进程调试方法,该方法包括:在目标进程处于运行状态时,获取针对目标进程的调试指令;调试指令包括目标进程中待调试的数据参数以及数据参数对应的调试值;暂停目标进程的运行,直至根据数据参数对应的调试值对目标进程在寄存器中的数据参数的参数值进行修改完毕,恢复目标进程的运行;在确定目标进程根据修改后的数据参数运行完毕后,获取目标进程的调试结果。
8.基于上述技术方案,在目标进程处于运行状态时,进程调试装置可以获取针对目标进程的调试指令。该调试指令中包括待调试的数据参数以及对应的调试值。该进程调试装置会在修改目标进程的数据参数的期间暂停目标进程的运行,并在修改完毕后恢复该目标进程的运行,当目标进程基于修改后的数据参数运行完毕后。进程调试装置获取该目标进程的调试结果。相比于相关技术,本技术中的技术方案仅需在修改目标进程的数据参数的期间暂停该目标进程,降低了调试过程中目标程序的实际暂停时间,因此能够及时发现对时延敏感的问题。此外,本技术中的技术方案无需多次修改程序源代码并编译,能够实时调试目标进程,提高了进程调试效率。
9.结合上述第一方面,在一种可能的实现方式中,该方法还包括:向目标进程发送第一指令;第一指令用于暂停目标进程的运行;将在寄存器中的数据参数的参数值设置为调试值;向目标进程发送第二指令;第二指令用于恢复目标进程的运行。
10.结合上述第一方面,在一种可能的实现方式中,该方法还包括:备份每个寄存器中数据参数当前的参数值;根据备份的每个寄存器中的参数值,将目标进程的数据参数恢复
至调试之前。
11.结合上述第一方面,在一种可能的实现方式中,该方法还包括:当目标进程满足第一预设条件时,确定目标进程根据修改后的数据参数运行完毕;第一预设条件包括:目标进程中存在子进程终止时的状态码为目标状态码;将目标寄存器当前存储的值作为目标进程的调试结果;目标寄存器为存储目标进程根据修改后的数据参数运行完毕后的运行结果的寄存器。
12.结合上述第一方面,在一种可能的实现方式中,该方法还包括:获取目标进程的进程标识;根据进程标识,获取目标进程中数据参数的参数信息;数据参数的参数信息包括数据参数的标识、数据参数的参数值以及数据参数的大小中的至少一项。
13.第二方面,本技术提供一种进程调试装置,该装置包括:处理单元;处理单元,用于在目标进程处于运行状态时,获取针对目标进程的调试指令;调试指令包括目标进程中待调试的数据参数以及数据参数对应的调试值;处理单元,还用于暂停目标进程的运行,直至根据数据参数对应的调试值对目标进程在寄存器中的数据参数的参数值进行修改完毕,恢复目标进程的运行;处理单元,还用于在确定目标进程根据修改后的数据参数运行完毕后,获取目标进程的调试结果。
14.结合上述第二方面,在一种可能的实现方式中,该装置还包括通信单元;通信单元,用于向目标进程发送第一指令;第一指令用于暂停目标进程的运行;处理单元,还用于将在寄存器中的数据参数的参数值设置为调试值;通信单元,还用于向目标进程发送第二指令;第二指令用于恢复目标进程的运行。
15.结合上述第二方面,在一种可能的实现方式中,处理单元,还用于备份每个寄存器中数据参数当前的参数值;处理单元,还用于根据备份的每个寄存器中的参数值,将目标进程的数据参数恢复至调试之前。
16.结合上述第二方面,在一种可能的实现方式中,处理单元用于:当目标进程满足第一预设条件时,确定目标进程根据修改后的数据参数运行完毕;第一预设条件包括:目标进程中存在子进程终止时的状态码为目标状态码;将目标寄存器当前存储的值作为目标进程的调试结果;目标寄存器为存储目标进程根据修改后的数据参数运行完毕后的运行结果的寄存器。
17.结合上述第二方面,在一种可能的实现方式中,处理单元用于:获取目标进程的进程标识;根据进程标识,获取目标进程中数据参数的参数信息;数据参数的参数信息包括数据参数的标识、数据参数的参数值以及数据参数的大小中的至少一项。
18.第三方面,本技术提供了一种进程调试装置,该装置包括:处理器和通信接口;通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的进程调试方法。
19.第四方面,本技术提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在终端上运行时,使得终端执行如第一方面和第一方面的任一种可能的实现方式中描述的进程调试方法。
20.第五方面,本技术提供一种包含指令的计算机程序产品,当计算机程序产品在进程调试装置上运行时,使得进程调试装置执行如第一方面和第一方面的任一种可能的实现方式中所描述的进程调试方法。
21.第六方面,本技术提供一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的进程调试方法。
22.具体的,本技术中提供的芯片还包括存储器,用于存储计算机程序或指令。
23.需要说明的是,上述计算机指令可以全部或者部分存储在计算机可读存储介质上。其中,计算机可读存储介质可以与装置的处理器封装在一起的,也可以与装置的处理器单独封装,本技术对此不作限定。
24.第七方面,本技术提供一种进程调试系统,包括:进程调试装置和电子设备,该电子设备运行有目标进程,其中进程调试装置用于执行如第一方面和第一方面的任一种可能的实现方式中所描述的进程调试方法。
25.本技术中第二方面至第七方面的描述,可以参考第一方面的详细描述;并且,第二方面至第七方面的描述的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。
26.在本技术中,上述进程调试装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本技术类似,属于本技术权利要求及其等同技术的范围之内。
27.本技术的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
28.图1为本技术实施例提供的一种进程调试系统的架构示意图;
29.图2为本技术实施例提供的一种进程调试方法的流程图;
30.图3为本技术实施例提供的另一种进程调试方法的流程图;
31.图4为本技术实施例提供的另一种进程调试方法的流程图;
32.图5为本技术实施例提供的另一种进程调试方法的流程图;
33.图6为本技术实施例提供的另一种进程调试方法的流程图;
34.图7为本技术实施例提供的一种进程调试装置的结构示意图;
35.图8为本技术实施例提供的另一种进程调试装置的结构示意图。
具体实施方式
36.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
37.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
38.本技术的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
39.此外,本技术的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地
area networks,wlan)等。
53.存储器,存储器可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路与处理器相连接。存储器也可以和处理器集成在一起。
54.目标设备102用于运行一个或多个进程。
55.其中,该一个或多个进程可以为包括目标进程103。
56.当进程调试装置101为功能模块时,该一个或多个进程还可以包括进程调试装置101。
57.进程调试装置101用于获取针对目标进程103的调试指令。
58.其中,调试指令包括目标进程103中待调试的数据参数以及数据参数对应的调试值。
59.需要说明的是,待调试的数据参数可以为一个或多个。
60.示例性的,数据参数可以为目标进程103中的传递参数、全局变量、局部变量以及功能函数等。传递参数、全局变量、局部变量对应的调试值可以为该变量修改后的参数值,功能函数对应的调试值可以为该功能函数对应的地址信息。该地址信息可以为内存中的物理地址,也可以为与该物理地址相对应的虚拟地址。
61.一种可能的实现方式中,进程调试装置101用于在调试之前,以链表形式存储目标进程103中的各个数据参数的参数信息。
62.其中,数据参数的参数信息包括数据参数的标识、数据参数的参数值以及数据参数的大小中的至少一项。如此一来,进程调试装置101可以基于该参数信息执行后续调试操作。
63.进程调试装置101还用于暂停目标进程103的运行,直至根据数据参数对应的调试值对目标进程103在寄存器中的数据参数的参数值进行修改完毕,恢复目标进程的运行。
64.其中,当目标进程103处于运行状态时,该目标进程103会将待执行操作所需的数据参数存储在处理器中的寄存器内。处理器中可以包括一个或多个寄存器,每个寄存器可以存储相应的数据参数。
65.进程调试装置101在修改寄存器中的数据参数时,需要将该目标进程103暂停运行,以避免寄存器中的数据参数发生变动,并在修改完毕后恢复目标进程103的运行。
66.目标进程103用于在恢复运行后,基于修改后的数据参数执行后续操作。
67.进程调试装置101还用于在确定目标进程103根据修改后的数据参数运行完毕后,获取目标进程103的调试结果。
68.进程调试装置101还用于输出目标进程103的调试结果,以便于相关人员针对该调试结果分析目标进程103是否存在问题。
69.需要指出的是,本技术各实施例之间可以相互借鉴或参考,例如,相同或相似的步骤,方法实施例、系统实施例和装置实施例之间,均可以相互参考,不予限制。
70.图2为本技术实施例提供的一种进程调试方法的流程图。如图2所示,该方法包括以下步骤:
71.步骤201、进程调试装置在目标进程处于运行状态时,获取针对目标进程的调试指令。
72.其中,调试指令包括目标进程中待调试的数据参数以及数据参数对应的调试值。待调试的数据参数可以为一个或多个。
73.示例性的,数据参数可以为目标进程中的传递参数、全局变量、局部变量以及功能函数等。传递参数、全局变量、局部变量对应的调试值可以为该变量修改后的参数值,功能函数对应的调试值可以为该功能函数对应的地址信息。该地址信息可以为内存中的物理地址,也可以为与该物理地址相对应的虚拟地址。
74.一种可能的实现方式中,该进程调试装置所在的电子设备中的输入设备响应于用户的第一目标操作,向进程调试装置发送调试指令信息。相应的,进程调试装置接收电子设备发送的调试指令信息,并根据该调试指令信息确定对应的调试指令。
75.示例性的,该调试指令信息用于指示目标进程查看、修改目标进程中的数据参数。
76.步骤202、进程调试装置暂停目标进程的运行,直至根据数据参数对应的调试值对目标进程在寄存器中的数据参数的参数值进行修改完毕,恢复目标进程的运行。
77.其中,当目标进程处于运行状态时,该目标进程会将待执行操作所需的数据参数存储在处理器中的寄存器内。处理器中可以包括一个或多个寄存器,每个寄存器存储可以相应的数据参数。
78.需要说明的是,不同处理器架构的处理器中的寄存器的存储功能并不相同,目前的处理器架构包括x86架构、x64架构、arm64架构以及armhf架构等。以arm64(一种64位处理器架构)处理器为例,该处理器包括8个用于存储目标进程的传递参数的通用寄存器,分别为寄存器reg[0]、寄存器reg[1]、寄存器reg[2]、寄存器reg[3]、寄存器reg[4]、寄存器reg[5]、寄存器reg[6]、寄存器reg[7]。该处理器还可以包括堆栈指针寄存器(stack pointer register,sp register)与程序计数寄存器(program counter register,pc register)。其中,sp寄存器用于存储目标进程的堆栈地址。pc寄存器用于存储目标进程的下一条指令。
[0079]
进程调试装置在修改寄存器中的数据参数时,需要将该目标进程暂停运行,以避免寄存器中的数据参数发生变动,并在修改完毕后恢复目标进程的运行。
[0080]
需要说明的是,由于本技术中进程调试装置在目标进程的暂停期间仅需执行对目标进程在寄存器中的数据参数进行修改的操作,其所需时长由目标进程所在电子设备的硬件性能确定,显著少于相关人员输入调试指令所需的时长。
[0081]
结合上述示例,当调试指令中的传递参数的数量超过处理器中用于存储目标进程的传递参数的寄存器的数量时,进程调试装置可以将超出的传递参数写入sp寄存器指向的堆栈中,局部变量与功能函数的调试值可以写入pc寄存器中。
[0082]
步骤203、进程调试装置在确定目标进程根据修改后的数据参数运行完毕后,获取目标进程的调试结果。
[0083]
其中,调试结果为目标进程根据修改后的数据参数运行得到的返回值。
[0084]
示例性的,当进程调试装置根据数据参数对应的调试值对目标进程在寄存器中的数据参数的参数值进行修改完毕后,目标进程恢复正常运行,并根据修改后的数据参数执行下一步操作。
[0085]
当下一步操作执行完毕后,目标进程会将该操作执行完毕后的返回值存储在目标寄存器中。进程调试装置确定该目标寄存器中存储的返回值即为目标进程的调试结果。
[0086]
结合上述步骤201中的示例,该目标寄存器可以为寄存器reg[0]。
[0087]
一种可能的实现方式中,在获取目标进程的调试结果之后,进程调试装置可以输出目标进程的调试结果,以便于相关人员针对该调试结果分析目标进程是否存在问题。
[0088]
以上为本技术提供的一种进程调试方法,需要说明的是,进程调试装置可以多次执行上述步骤201-步骤203,从而实现针对目标进程的多次调试。由于本技术中提供的进程调试方法无需重新启动目标进程或者修改目标进程的源代码,因此调试效率较高。
[0089]
同时,由于本技术上述进程调试装置在进程调试的过程中,仅需在修改目标进程的数据参数的期间暂停该目标进程,对目标进程的运行影响较小,因此能够识别出对时延敏感的程序问题。
[0090]
例如,待调试的目标进程需要按照顺序执行操作a与操作b两个操作,而该目标进程在操作a执行完毕之前便开始执行操作b将会导致该目标进程产生异步操作,从而出现操作b运行出错的问题。
[0091]
而相关技术在针对目标进程的操作b中的问题进行调试时,需要在操作b中的指定位置设置断点,目标进程运行到该断点处会中断运行,等待相关人员进一步的调试操作。这会使得在调试过程中,操作a总是能够在操作b之前执行完毕,从而无法暴露该问题,导致调试效率低下。
[0092]
基于上述技术方案,在目标进程处于运行状态时,进程调试装置可以获取针对目标进程的调试指令。该调试指令中包括待调试的数据参数以及对应的调试值。该进程调试装置会在修改目标进程的数据参数的期间暂停目标进程的运行,并在修改完毕后恢复该目标进程的运行,当目标进程基于修改后的数据参数运行完毕后。进程调试装置获取该目标进程的调试结果。相比于相关技术,本技术中的技术方案仅需在修改目标进程的数据参数的期间暂停该目标进程,降低了调试过程中目标程序的实际暂停时间,因此能够及时发现时延敏感的问题。此外,本技术中的技术方案无需多次修改程序源代码并编译,能够实时调试目标进程,提高了进程调试效率。
[0093]
以下,对进程调试装置修改目标进程在寄存器中的数据参数的过程进行介绍。
[0094]
作为本技术的一种可能的实施例,结合图2,如图3所示,在上述步骤202还可以通过以下步骤301-步骤303实现。
[0095]
步骤301、进程调试装置向目标进程发送第一指令。相应的,目标进程接收进程调试装置发送的第一指令。
[0096]
其中,第一指令用于暂停目标进程的运行。
[0097]
一种可能的实现方式中,进程调试装置可以通过进程暂停接口暂停目标进程的运行。
[0098]
例如该进程暂停接口可以为waitpid(pid,null,wuntraced)接口。其中,wuntraced指该接口的功能为暂停目标进程的运行,直至目标进程中的子进程的状态发生
改变。由于此处无需检测目标进程中的子进程的状态,因此子进程的状态码设置为空值null。pid为目标进程的进程标识。
[0099]
示例性的,第一指令可以携带在sigusr1信号中,该sigusr1信号用于与目标进程进行通信。
[0100]
步骤302、进程调试装置将在寄存器中的数据参数的参数值设置为调试值。
[0101]
当数据参数为传递参数时,进程调试装置可以将该传递参数对应的寄存器中的数值设置为对应的调试值。
[0102]
当数据参数为功能函数时,进程调试装置可以将该功能函数对应的寄存器中的地址信息设置为对应的调试值。
[0103]
数据参数可以为一个或多个,当数据参数为多个时,进程调试装置可以分别将在寄存器中的每个数据参数的参数值设置为对应的调试值。
[0104]
一种可能的实现方式中,进程调试装置可以通过数据写入接口对目标进程在寄存器中的数据参数进行修改。
[0105]
以linux系统为例,写入接口可以为ptrace(ptrace_pokedata,pid,addr,data)接口。其中,ptrace_pokedata指该接口的功能为向寄存器中写入数据参数,pid是指对应的进程标识,addr是指数据参数对应的地址信息,data是指数据参数的调试值。
[0106]
步骤303、进程调试装置向目标进程发送第二指令。相应的,目标进程接收进程调试装置发送的第二指令。
[0107]
其中,第二指令用于恢复目标进程的运行。
[0108]
一种可能的实现方式中,进程调试装置可以通过进程恢复接口恢复目标进程的运行。
[0109]
例如该进程恢复接口可以为ptrace(ptrace_cont,pid,null,null)。其中,ptrace_cont指该接口的功能为恢复目标进程的运行。pid为目标进程的进程标识。null为空值。
[0110]
基于上述技术方案,本技术中的进程调试装置通过向目标进程发送第一指令,以使得该目标进程暂停运行,并在目标进程暂停运行的期间内对待调试的数据参数进行修改,修改完毕后,进程调试装置通过向目标进程发送第二指令,以使得该目标进程恢复运行。如此一来,进程调试装置能够避免在修改时寄存器中的数据参数发送变动而导致修改错误的问题,同时,本技术中进程调试装置在上述过程中的修改操作所消耗的时长由目标进程所在电子设备的硬件性能确定,显著少于相关人员输入调试指令所需的时长,降低了调试过程对目标进程造成的影响,有利于识别目标进程中对时延敏感的问题。
[0111]
以下,对进程调试装置备份以及恢复目标进程在调试前的状态的过程进行介绍。
[0112]
作为本技术的一种可能的实施例,结合图3,如图4所示,在上述步骤302之前,该方法还包括以下步骤401。
[0113]
步骤401、进程调试装置备份每个寄存器中数据参数当前的参数值。
[0114]
一种可能的实现方式中,进程调试装置可以通过寄存器信息获取接口获取每个寄存器中当前的参数值,并存储该每个寄存器的参数值。
[0115]
示例性的,该寄存器信息获取接口可以为ptrace(ptrace_getreg set,pid)接口。其中,ptrace_getregset是指该接口的功能为获取寄存器中的参数值。pid为目标进程的进
程标识。
[0116]
需要说明的是,此时进程调试装置存储的每个寄存器中当前的参数值为目标进程修改前的参数值,因此能够表征该目标进程调试前的参数状态。
[0117]
在上述步骤203之后,该方法还包括以下步骤402。
[0118]
步骤402、进程调试装置根据备份的每个寄存器中的参数值,将目标进程的数据参数恢复至调试之前。
[0119]
一种可能的实现方式中,进程调试装置可以通过数据写入接口将每个寄存器中的数据参数修改为备份的参数值。
[0120]
相关描述可参考上述步骤302中的描述,此处不再赘述。
[0121]
基于上述技术方案,本技术中的进程调试装置可以在对寄存器中的数据参数进行修改之前,备份每个寄存器中数据参数当前的参数值,并在调试完成后通过备份的参数值,将目标进程的数据参数恢复至调试之前。如此一来,进程调试装置可以消除调试过程对目标进程的影响,以便于后续可以继续调试该目标进程,提高了进程调试效率。
[0122]
以下,对进程调试装置获取目标进程的调试结果的过程进行介绍。
[0123]
作为本技术的一种可能的实施例,结合图2,如图5所示,在上述步骤203还可以通过以下步骤501-步骤502实现。
[0124]
步骤501、当目标进程满足第一预设条件时,进程调试装置确定目标进程根据修改后的数据参数运行完毕。
[0125]
其中,第一预设条件包括:目标进程中存在子进程终止时的状态码为目标状态码。
[0126]
一种可能的实现方式中,进程调试装置可以通过状态检测接口获取目标进程中终止的子进程的状态码。
[0127]
当目标进程中存在子进程的状态码为目标状态码时,进程调试装置确定目标进程满足第一预设条件。
[0128]
例如该状态检测接口可以为waitpid(pid,pstatus,wuntraced)接口。其中,wuntraced指该接口的功能为暂停目标进程的运行,直至目标进程中的子进程的状态发生改变。pid是指目标进程的进程标识,pstatus指示该目标进程的子进程的状态码。
[0129]
步骤502、进程调试装置将目标寄存器当前存储的值作为目标进程的调试结果。
[0130]
其中,目标寄存器为存储目标进程根据修改后的数据参数运行完毕后的运行结果的寄存器。
[0131]
需要说明的是,当目标进程根据修改后的数据参数运行完毕后,目标进程会得到根据修改后的数据参数运行相应操作的运行结果,并将该运行结果作为参数值存储在目标寄存器中。
[0132]
因此,进程调试装置可以将目标寄存器当前存储的值作为目标进程的调试结果。
[0133]
一种可能的实现方式中,进程调试装置可以通过寄存器信息获取接口获取每个寄存器中当前的参数值,并将其中的目标寄存器中当前存储的值作为目标进程的调试结果。
[0134]
相关描述可参考上述步骤401中的描述,此处不再赘述。
[0135]
基于上述技术方案,本技术中的进程调试装置可以在确定目标进程根据修改后的数据参数运行完毕后,将目标寄存器当前存储的值作为该目标进程的调试结果,以便于后续根据该调试结果分析目标进程是否存在问题。
[0136]
以下,对进程调试装置获取目标进程中数据参数的参数信息的过程进行介绍。
[0137]
作为本技术的一种可能的实施例,结合图2,如图6所示,在上述步骤201之前,该方法还包括以下步骤601-步骤602。
[0138]
步骤601、进程调试装置获取目标进程的进程标识。
[0139]
当目标进程启动后,电子设备中会生成与该目标进程对应的进程标识。
[0140]
一种可能的实现方式中,该进程调试装置所在的电子设备中的输入设备响应于用户的第二目标操作,向进程调试装置发送进程指令信息。相应的,进程调试装置接收电子设备发送的进程指令信息,并根据该进程指令信息确定目标进程的进程标识。
[0141]
步骤602、进程调试装置根据进程标识,获取目标进程中数据参数的参数信息。
[0142]
其中,数据参数的参数信息包括数据参数的标识、数据参数的参数值以及数据参数的大小中的至少一项。
[0143]
一种可能的实现方式中,进程调试装置根据进程标识,从进程目录下获取该进程标识对应的运行空间中存储的参数信息,并存储获取的参数信息。其中,该参数信息即为目标进程中数据参数的参数信息。
[0144]
以linux系统为例,进程调试装置从/proc/pid/maps目标中确定目标进程的进程标识对应的运行空间,并将该运行空间中存储的数据参数的标识、数据参数的参数值以及数据参数的大小等信息作为目标进程中的数据参数的参数信息。
[0145]
基于上述技术方案,本技术中的进程调试装置可以获取目标进程的进程标识,并根据该进程标识获取目标进程中数据参数的参数信息,以便于后续根据该目标进程中数据参数的参数信息,确定待调试的数据参数,进而对目标进程进行调试。
[0146]
需要说明的是,进程调试装置在获取目标进程中数据参数的参数信息之后,还可以与目标进程建立连接关系。
[0147]
示例性的,进程调试装置可以通过进程连接接口与目标进程建立连接关系。
[0148]
以linux系统为例,连接接口可以为ptrace(rtrace_attach,pid,null,null)接口。其中,rtrace_attach指该接口的功能为与指定进程建立连接关系。pid指待连接的进程标识(即目标进程的进程标识)。
[0149]
需要说明的是,进程调试装置与目标进程建立连接关系时会导致该目标进程处于暂停状态,因此,进程调试装置还需要恢复目标进程的运行。
[0150]
实现方式可参考上述步骤303,此处不再赘述。
[0151]
本技术实施例可以根据上述方法示例对进程调试装置进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本技术实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0152]
如图7所示,为本技术实施例提供的一种进程调试装置70的结构示意图,该装置包括:
[0153]
处理单元701,用于在目标进程处于运行状态时,获取针对目标进程的调试指令;调试指令包括目标进程中待调试的数据参数以及数据参数对应的调试值。
[0154]
处理单元701,还用于暂停目标进程的运行,直至根据数据参数对应的调试值对目
标进程在寄存器中的数据参数的参数值进行修改完毕,恢复目标进程的运行。
[0155]
处理单元701,还用于在确定目标进程根据修改后的数据参数运行完毕后,获取目标进程的调试结果。
[0156]
在一种可能的实现方式中,该装置还包括通信单元702;通信单元702,用于向目标进程发送第一指令;第一指令用于暂停目标进程的运行;处理单元701,还用于将在寄存器中的数据参数的参数值设置为调试值;通信单元702,还用于向目标进程发送第二指令;第二指令用于恢复目标进程的运行。
[0157]
在一种可能的实现方式中,处理单元701,还用于备份每个寄存器中数据参数当前的参数值;处理单元701,还用于根据备份的每个寄存器中的参数值,将目标进程的数据参数恢复至调试之前。
[0158]
在一种可能的实现方式中,处理单元701用于:当目标进程满足第一预设条件时,确定目标进程根据修改后的数据参数运行完毕;第一预设条件包括:目标进程中存在子进程终止时的状态码为目标状态码;将目标寄存器当前存储的值作为目标进程的调试结果;目标寄存器为存储目标进程根据修改后的数据参数运行完毕后的运行结果的寄存器。
[0159]
在一种可能的实现方式中,处理单元701用于:获取目标进程的进程标识;根据进程标识,获取目标进程中数据参数的参数信息;数据参数的参数信息包括数据参数的标识、数据参数的参数值以及数据参数的大小中的至少一项。
[0160]
在通过硬件实现时,本技术实施例中的通信单元702可以集成在通信接口上,处理单元701可以集成在处理器上。具体实现方式如图8所示。
[0161]
图8示出了上述实施例中所涉及的进程调试装置的又一种可能的结构示意图。该进程调试装置80包括:处理器802和通信接口803。处理器802用于对进程调试装置的动作进行控制管理,例如,执行上述处理单元701执行的步骤,和/或用于执行本文所描述的技术的其它过程。通信接口803用于支持进程调试装置与其他网络实体的通信,例如,执行上述通信单元702执行的步骤。进程调试装置还可以包括存储器801和总线804,存储器801用于存储进程调试装置的程序代码和数据。
[0162]
其中,存储器801可以是进程调试装置中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
[0163]
上述处理器802可以是实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
[0164]
总线804可以是扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线804可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0165]
图8中的进程调试装置还可以为芯片。该芯片包括一个或两个以上(包括两个)处理器802和通信接口803。
[0166]
在一些实施例中,该芯片还包括存储器801,存储器801可以包括只读存储器和随机存取存储器,并向处理器802提供操作指令和数据。存储器801的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,nvram)。
[0167]
在一些实施方式中,存储器801存储了如下的元素,执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
[0168]
在本技术实施例中,通过调用存储器801存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
[0169]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0170]
本技术实施例提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行上述方法实施例中的进程调试方法。
[0171]
本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得该计算机执行上述方法实施例所示的方法流程中的进程调试方法。
[0172]
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合、或者本领域熟知的任何其它形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(application specific integrated circuit,asic)中。在本技术实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0173]
由于本技术的实施例中的进程调试装置、计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本技术实施例在此不再赘述。
[0174]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0175]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0176]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0177]
以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1