调试方法、装置及计算机可读存储介质制造方法及图纸

技术编号:36574106 阅读:17 留言:0更新日期:2023-02-04 17:31
提供一种调试方法、装置及计算机可读存储介质。所述调试方法包括:建立调试进程和目标进程的绑定关系;响应于所述目标进程执行单条指令,触发软件单步异常;响应于所述软件单步异常,判断所述目标进程是否满足返回所述调试进程的条件;如果所述目标进程满足所述条件,则返回所述调试进程;如果所述目标进程不满足所述条件,则返回所述目标进程。在基于软件单步技术对目标进程进行调试的过程中,本申请实施例设置并判断目标进程是否满足返回调试进程的条件,并在满足该条件时,才返回调试进程,而不需要每次均返回调试进程,从而提升了目标进程的调试效率。进程的调试效率。进程的调试效率。

【技术实现步骤摘要】
调试方法、装置及计算机可读存储介质


[0001]本申请涉及调试领域,并且更为具体地,涉及一种调试方法、装置及计算机可读存储介质。

技术介绍

[0002]软件单步技术主要应用于调试方面。当采用软件单步技术时,调试进程会向目标进程发送软件单步命令。在接收到软件单步命令之后,目标进程每执行一条指令,会触发一次软件单步异常,然后返回调试进程进行调试。但是,上述过程会触发处理器核在用户态和内核态之间的频繁转换,同时也会触发调试进程和目标进程之间的频繁切换,从而导致目标进程的调试效率较低。

技术实现思路

[0003]本申请实施例提供一种调试方法、装置及计算机可读存储介质,能够提升目标进程的调试效率。
[0004]第一方面,提供一种调试方法,包括:建立调试进程和目标进程的绑定关系;响应于所述目标进程执行单条指令,触发软件单步异常;响应于所述软件单步异常,判断所述目标进程是否满足返回所述调试进程的条件;如果所述目标进程满足所述条件,则返回所述调试进程;如果所述目标进程不满足所述条件,则返回所述目标进程。
[0005]结合第一方面,作为一种可能的实现方式,所述如果所述目标进程满足所述条件,则返回所述调试进程,包括:如果所述目标进程执行的指令条数达到预设条数,则返回所述调试进程;其中,所述预设条数为大于1的正整数。
[0006]结合第一方面,作为一种可能的实现方式,在所述响应于所述目标进程执行单条指令,触发软件单步异常之前,所述方法还包括:利用ptrace接口设置task_struct结构体中的目标成员变量的取值;其中,所述目标成员变量的取值用于指示所述预设条数。
[0007]结合第一方面,作为一种可能的实现方式,所述响应于所述软件单步异常,判断所述目标进程是否满足返回所述调试进程的条件,包括:响应于所述软件单步异常,将所述目标成员变量的取值减1,得到所述目标成员变量的当前取值;如果所述当前取值大于0,则确定所述目标进程满足返回所述调试进程的条件;如果所述当前取值等于0,则确定所述目标进程不满足返回所述调试进程的条件。
[0008]结合第一方面,作为一种可能的实现方式,所述目标进程是否满足返回所述调试进程的条件是在系统调用函数ptrace_signal中进行判断的。
[0009]第二方面,提供一种调试装置,包括:建立模块,用于建立调试进程和目标进程的绑定关系;触发模块,用于响应于所述目标进程执行单条指令,触发软件单步异常;判断模块,用于响应于所述软件单步异常,判断所述目标进程是否满足返回所述调试进程的条件;第一返回模块,用于如果所述目标进程满足所述条件,则返回所述调试进程;第二返回模块,用于如果所述目标进程不满足所述条件,则返回所述目标进程。
[0010]结合第二方面,作为一种可能的实现方式,所述第一返回模块具体用于:如果所述目标进程执行的指令条数达到预设条数,则返回所述调试进程;其中,所述预设条数为大于1的正整数。
[0011]结合第二方面,作为一种可能的实现方式,所述调试装置还包括:设置模块,用于利用ptrace接口设置task_struct结构体中的目标成员变量的取值;其中,所述目标成员变量的取值用于指示所述预设条数。
[0012]结合第二方面,作为一种可能的实现方式,所述判断模块具体用于:响应于所述软件单步异常,将所述目标成员变量的取值减1,得到所述目标成员变量的当前取值;如果所述当前取值大于0,则确定所述目标进程满足返回所述调试进程的条件;如果所述当前取值等于0,则确定所述目标进程不满足返回所述调试进程的条件。
[0013]结合第二方面,作为一种可能的实现方式,所述目标进程是否满足返回所述调试进程的条件是在系统调用函数ptrace_signal中进行判断的。
[0014]第三方面,提供一种调试装置,包括:存储器,用于存储指令;处理器,用于执行所述存储器中存储的指令,以执行如第一方面或第一方面中的任意一种实现方式所述的方法。
[0015]第四方面,提供一种计算机可读存储介质,其上存储有用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
[0016]第五方面,提供一种程序产品,包括用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
[0017]在基于软件单步技术对目标进程进行调试的过程中,本申请实施例设置并判断目标进程是否满足返回调试进程的条件,并在满足该条件时,才返回调试进程,而不需要每次均返回调试进程,从而提升了目标进程的调试效率。
附图说明
[0018]为了更清楚地说明本申请实施例或
技术介绍
中的技术方案,下面将对本申请实施例或
技术介绍
中所需要使用的附图进行说明。
[0019]图1是传统软件单步调试技术的进程切换过程的示意图。
[0020]图2是传统软件单步调试技术的执行过程的流程图。
[0021]图3是本申请实施例提供的调试方法的示意性流程图。
[0022]图4是本申请实施例提供的软件单步调试技术的进程切换过程的示意图。
[0023]图5是本申请实施例提供的软件单步调试技术的执行过程的流程图。
[0024]图6是本申请一实施例提供的调试装置的结构示意图。
[0025]图7是本申请后另一实施例提供的调试装置的结构示意图。
具体实施方式
[0026]软件单步(software step)技术主要应用于调试方面。在软件单步调试过程中,被调试的目标进程每执行一条指令会触发一次软件单步异常(software step exceptions)。在触发软件单步异常之后,需要从目标进程返回调试进程。调试进程为目标进程的父进程,调试进程可以很精确地获取目标进程在执行每条指令之间的状态变化,从而实现对目标进
程的调试。
[0027]软件单步调试技术的整体实现流程包括:调试进程设置目标进程执行一次软件单步命令;然后,进入内核通过进程调度切换到目标进程;接着,目标进程执行一条指令后通过软件单步异常进入内核;然后,通过进程调度切换到调试进程。在上述过程中,如果对目标程序进行连续大量大软件单步执行,会频繁在内核态和用户态之间进行切换,同时频繁的发生进程调度,这样会导致目标进程的执行速度慢。一般而言,目标进程的执行时间会比原来正常执行的时间多超过2万倍左右,这样的速度让人几乎无法接受。
[0028]ARM的体系结构中,存在软件单步执行方式。在该执行方式中,目标进程每执行一条指令会触发一次软件单步异常。借助这个机制可以对目标进程按照执行的指令条数进行精确计数。这种可以精确计数的机制每次只能精确执行一条指令,而目标进程不能自己给自己计数,所以使用这个机制时,会出现频繁进入内核、频繁发生进程调度的情况。
[0029]为了能更直观表述,可以忽略目标进程和调试进程因为自身的原因进入内核态的情况,以及操作系统(operating system,OS)因为时间片强制进入内核态等其他正常执行时的处理器核(core)本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种调试方法,其特征在于,包括:建立调试进程和目标进程的绑定关系;响应于所述目标进程执行单条指令,触发软件单步异常;响应于所述软件单步异常,判断所述目标进程是否满足返回所述调试进程的条件;如果所述目标进程满足所述条件,则返回所述调试进程;如果所述目标进程不满足所述条件,则返回所述目标进程。2.根据权利要求1所述的调试方法,其特征在于,所述如果所述目标进程满足所述条件,则返回所述调试进程,包括:如果所述目标进程执行的指令条数达到预设条数,则返回所述调试进程;其中,所述预设条数为大于1的正整数。3.根据权利要求2所述的调试方法,其特征在于,在所述响应于所述目标进程执行单条指令,触发软件单步异常之前,所述方法还包括:利用ptrace接口设置task_struct结构体中的目标成员变量的取值;其中,所述目标成员变量的取值用于指示所述预设条数。4.根据权利要求3所述的调试方法,其特征在于,所述响应于所述软件单步异常,判断所述目标进程是否满足返回所述调试进程的条件,包括:响应于所述软件单步异常,将所述目标成员变量的取值减1,得到所述目标成员变量的当前取值;如果所述当前取值大于0,则确定所述目标进程满足返回所述调试进程的条件;如果所述当前取值等于0,则确定所述目标进程不满足返回所述调试进程的条件。5.根据权利要求1

4中任一项所述的调试方法,其特征在于,所述目标进程是否满足返回所述调试进程的条件是在系统调用函数ptrace_signal中进行判断的。6.一种调试装置,其特征在于,包括:建立模块,用于建立调试进程和目标进程的绑定关系;触发模块,用于响应于所述目标进程执行单条指令,触发软...

【专利技术属性】
技术研发人员:邓玉林孙龙鹏高军刘廷煌
申请(专利权)人:飞腾信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1