一种调试方法、多核处理器和调试设备的制造方法

文档序号:9597774阅读:239来源:国知局
一种调试方法、多核处理器和调试设备的制造方法
【技术领域】
[0001]本发明实施例涉及计算机技术领域,尤其涉及一种调试方法、多核处理器和调试设备。
【背景技术】
[0002]程序调试,是将编写完成的计算机程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性必不可少的步骤。所以编写完成的计算机程序,必须送入计算机中进行调试。
[0003]业界通常将运行在内核空间代码称为内核态代码,将运行在用户空间的代码称为用户态代码。当前,在对内核态代码和用户态代码进行调试时,需要使用不同的调试平台。需要明确的是,下述的目标机是指被调试代码运行的物理主机,宿主机是指调试器运行的物理主机。比如在对用户态代码进行调试时,需要在目标机的操作系统上运行调试器以进行本地调试;或者,在对用户态代码进行调试时,需要在目标机的操作系统内植入进程跟踪模块(Ptrace),可能还需要在操作系统上运行调试粧,再在宿主机上运行调试器以进行远程调试;而在对内核态代码,比如内核模块,进行调试时,需要在目标机的操作系统内植入内核调试器,然后在宿主机运行调试器进行远程调试。

【发明内容】

[0004]本发明实施例提供一种调试方法、多核处理器和调试设备,用于将内核态代码和用户态代码在同一个调试平台实现调试。
[0005]第一方面,本发明实施例提供一种调试方法,应用于远程调试系统中的目标机,所述目标机包括多核处理器,所述方法包括:
[0006]所述多核处理器的核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;所述其他核是指位于所述多核处理器内、且与所述核A属于同一逻辑分组的所有核;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的处理函数;
[0007]所述核A接收第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;所述第一解除停止指令是所述远程调试系统中的调试装置在确定所述核A停止运行且导致所述核A停止运行的原因为所述预设事件之外的原因后发送的;
[0008]所述核A接收第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行;所述第二解除停止指令是所述调试装置根据所述预设事件的调试信息屏蔽所述预设事件操作对象之后发送的,所述预设事件操作对象为内核模块、进程或线程。
[0009]结合第一方面,在第一方面的第一种实施方式下,
[0010]所述调试信息收集函数包括调试接口函数,所述调试接口函数的头部设置有第一调试异常指令,所述第一调试异常指令用于指示所述核A停止运行;
[0011]所述核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,具体包括:
[0012]所述核A执行完所述预设事件处理例程后开始执行位于所述调试接口函数头部的所述第一调试异常指令,并在执行所述第一调试异常指令的过程中向所述其他核发送所述停止运行信号。
[0013]结合第一方面的第一种实施方式,在第一方面的第二种实施方式下,
[0014]所述调试信息收集函数还包括与所述预设事件相关联的功能函数,且所述调试接口函数的尾部还设置有第二调试异常指令,所述第二调试异常指令用于指示所述核A停止运行;
[0015]所述核A执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行,具体包括:
[0016]所述核A执行与所述预设事件相关联的功能函数以收集所述预设事件的调试信息,然后执行位于所述调试接口函数尾部的所述第二调试异常指令。
[0017]结合第一方面的第二种实施方式,在第一方面的第三种实施方式下,
[0018]所述与所述预设事件相关联的功能函数位于内核调试粧内,所述内核调试粧是预先植入在所述目标机操作系统内的。
[0019]结合第一方面或第一方面的第一种实施方式至第一方面的第三种实施方式中任意一种实施方式,在第一方面的第四种实施方式下,
[0020]在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
[0021]在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
[0022]在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
[0023]结合第一方面或第一方面的第一种实施方式至第一方面的第四种实施方式中任意一种实施方式,在第一方面的第五种实施方式下,
[0024]所述预设事件的调试信息包括所述预设事件操作对象的标识。
[0025]结合第一方面或第一方面的第一种实施方式至第一方面的第五种实施方式中任意一种实施方式,在第一方面的第六种实施方式下,
[0026]所述多核处理器集成在系统级芯片S0C上;
[0027]所述核A向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,具体包括:
[0028]所述核A通过所述S0C的硬件交叉触发网络向所述其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;
[0029]所述核A向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行,具体包括:
[0030]所述核A通过所述S0C的硬件交叉触发网络向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
[0031]第二方面,本发明实施例提供一种调试方法,由部署于宿主机内的调试装置执行,所述宿主机位于远程调试系统,所述方法包括:
[0032]所述调试装置确定核A停止运行后,确定导致所述核A停止运行的原因;所述核A属于所述远程调试系统中的目标机的多核处理器;
[0033]在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,所述预设事件操作对象为内核模块、进程或线程;
[0034]所述调试装置指示所述核A恢复运行。
[0035]结合第二方面,在第二方面的第一种实施方式下,
[0036]在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息。
[0037]结合第二方面或第二方面的第一种实施方式,在第二方面的第二种实施方式下,所述预设事件的调试信息包括所述预设事件操作对象的标识;
[0038]所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象,具体包括:
[0039]所述调试装置获取所述预设事件操作对象的标识,并根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
[0040]结合第二方面、第二方面的第一种实施方式或第二方面的第二种实施方式,在第二方面的第三种实施方式下,
[0041]所述调试装置包括调试器和调试代理,
[0042]所述调试装置确定核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象,具体包括:
[0043]所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件的情况下,将第二消息上报所述调试器,所述第二消息包括所述核A停止运行以及所述预设事件的标识;
[0044]所述调试器接收所述第二消息后,获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;
[0045]所述调试装置指示所述核A恢复运行,具体包括:
[0046]所述调试器指示所述调试代理向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行。
[0047]结合第二方面的第三种实施方式,在第二方面的第四种实施方式下,
[0048]所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息,具体包括:
[0049]所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
[0050]结合第二方面或第二方面的第一种实施方式至第二方面的第三种实施方式中任意一种实施方式,在第二方面的第五种实施方式下,
[0051]所述调试装置包括调试器和调试代理,
[0052]所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息,具体包括:
[0053]所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,将第一消息上报给所述调试器,所述第一消息包括所述核A停止运行以及缺省标识,
[0054]所述调试器接收所述第一消息后,指示所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
[0055]结合第二方面或第二方面的第一种实施方式至第二方面的第五种实施方式中任意一种实施方式,在第二方面的第六种实施方式下,
[0056]在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
[0057]在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
[0058]在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
[0059]第三方面,本发明实施例提供一种多核处理器,应用于远程调试系统中的目标机,所述多核处理器包括核A、其他核和输入端口,所述其他核是指位于所述多核处理器内、且与所述核A属于同一逻辑分组的所有核,其中:
[0060]所述核A用于在执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数;
[0061 ] 所述输入端口用于接收第一解除停止指令,并将所述第一解除停止指令转送给所述核A,所述第一解除停止指令是所述远程调试系统中的调试装置在确定所述核A停止运行且导致所述核A停止运行的原因为所述预设事件之外的原因后发送的;
[0062]所述核A还用于在接收所述第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;
[0063]所述输入端口还用于接收第二解除停止指令,并将所述第二解除停止指令转送给所述核A,所述第二解除停止指令是所述调试装置根据所述预设事件的调试信息屏蔽所述预设事件操作对象之后发送的,所述预设事件操作对象为内核模块、进程或线程;
[0064]所述核A还用于在接收所述第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
[0065]结合第三方面,在第三方面的第一种实施方式下,
[0066]所述调试信息收集函数包括调试接口函数,所述调试接口函数的头部设置有第一调试异常指令,所述第一调试异常指令用于指示所述核A停止运行;
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1