CN105354136A - 一种调试方法、多核处理器和调试设备 - Google Patents

一种调试方法、多核处理器和调试设备 Download PDF

Info

Publication number
CN105354136A
CN105354136A CN201510623211.5A CN201510623211A CN105354136A CN 105354136 A CN105354136 A CN 105354136A CN 201510623211 A CN201510623211 A CN 201510623211A CN 105354136 A CN105354136 A CN 105354136A
Authority
CN
China
Prior art keywords
debugging
core
predeterminable event
service
message
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.)
Granted
Application number
CN201510623211.5A
Other languages
English (en)
Other versions
CN105354136B (zh
Inventor
王名发
喻钢
王海川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Dafeng CNC Technology Co.,Ltd.
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510623211.5A priority Critical patent/CN105354136B/zh
Publication of CN105354136A publication Critical patent/CN105354136A/zh
Priority to EP16848167.9A priority patent/EP3343377A4/en
Priority to BR112018005836-0A priority patent/BR112018005836A2/zh
Priority to PCT/CN2016/099995 priority patent/WO2017050286A1/zh
Priority to KR1020187011356A priority patent/KR20180057687A/ko
Priority to US15/934,329 priority patent/US10409709B2/en
Application granted granted Critical
Publication of CN105354136B publication Critical patent/CN105354136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • G06F11/2242Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors in multi-processor systems, e.g. one processor becoming the test master
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例涉及计算机技术领域。本发明实施例提供一种调试方法,包括:所述多核处理器的核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号;所述核A接收第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;所述核A接收第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令。本发明实施例提供的技术方案能够实现内核态代码和用户态代码使用同一个调试平台实现屏蔽。此外,本发明实施例还提供相应的调试装置。

Description

一种调试方法、多核处理器和调试设备
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种调试方法、多核处理器和调试设备。
背景技术
程序调试,是将编写完成的计算机程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性必不可少的步骤。所以编写完成的计算机程序,必须送入计算机中进行调试。
业界通常将运行在内核空间代码称为内核态代码,将运行在用户空间的代码称为用户态代码。当前,在对内核态代码和用户态代码进行调试时,需要使用不同的调试平台。需要明确的是,下述的目标机是指被调试代码运行的物理主机,宿主机是指调试器运行的物理主机。比如在对用户态代码进行调试时,需要在目标机的操作系统上运行调试器以进行本地调试;或者,在对用户态代码进行调试时,需要在目标机的操作系统内植入进程跟踪模块(Ptrace),可能还需要在操作系统上运行调试桩,再在宿主机上运行调试器以进行远程调试;而在对内核态代码,比如内核模块,进行调试时,需要在目标机的操作系统内植入内核调试器,然后在宿主机运行调试器进行远程调试。
发明内容
本发明实施例提供一种调试方法、多核处理器和调试设备,用于将内核态代码和用户态代码在同一个调试平台实现调试。
第一方面,本发明实施例提供一种调试方法,应用于远程调试系统中的目标机,所述目标机包括多核处理器,所述方法包括:
所述多核处理器的核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;所述其他核是指位于所述多核处理器内、且与所述核A属于同一逻辑分组的所有核;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的处理函数;
所述核A接收第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;所述第一解除停止指令是所述远程调试系统中的调试装置在确定所述核A停止运行且导致所述核A停止运行的原因为所述预设事件之外的原因后发送的;
所述核A接收第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行;所述第二解除停止指令是所述调试装置根据所述预设事件的调试信息屏蔽所述预设事件操作对象之后发送的,所述预设事件操作对象为内核模块、进程或线程。
结合第一方面,在第一方面的第一种实施方式下,
所述调试信息收集函数包括调试接口函数,所述调试接口函数的头部设置有第一调试异常指令,所述第一调试异常指令用于指示所述核A停止运行;
所述核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,具体包括:
所述核A执行完所述预设事件处理例程后开始执行位于所述调试接口函数头部的所述第一调试异常指令,并在执行所述第一调试异常指令的过程中向所述其他核发送所述停止运行信号。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式下,
所述调试信息收集函数还包括与所述预设事件相关联的功能函数,且所述调试接口函数的尾部还设置有第二调试异常指令,所述第二调试异常指令用于指示所述核A停止运行;
所述核A执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行,具体包括:
所述核A执行与所述预设事件相关联的功能函数以收集所述预设事件的调试信息,然后执行位于所述调试接口函数尾部的所述第二调试异常指令。
结合第一方面的第二种实施方式,在第一方面的第三种实施方式下,
所述与所述预设事件相关联的功能函数位于内核调试桩内,所述内核调试桩是预先植入在所述目标机操作系统内的。
结合第一方面或第一方面的第一种实施方式至第一方面的第三种实施方式中任意一种实施方式,在第一方面的第四种实施方式下,
在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
结合第一方面或第一方面的第一种实施方式至第一方面的第四种实施方式中任意一种实施方式,在第一方面的第五种实施方式下,
所述预设事件的调试信息包括所述预设事件操作对象的标识。
结合第一方面或第一方面的第一种实施方式至第一方面的第五种实施方式中任意一种实施方式,在第一方面的第六种实施方式下,
所述多核处理器集成在系统级芯片SOC上;
所述核A向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,具体包括:
所述核A通过所述SOC的硬件交叉触发网络向所述其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;
所述核A向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行,具体包括:
所述核A通过所述SOC的硬件交叉触发网络向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
第二方面,本发明实施例提供一种调试方法,由部署于宿主机内的调试装置执行,所述宿主机位于远程调试系统,所述方法包括:
所述调试装置确定核A停止运行后,确定导致所述核A停止运行的原因;所述核A属于所述远程调试系统中的目标机的多核处理器;
在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,所述预设事件操作对象为内核模块、进程或线程;
所述调试装置指示所述核A恢复运行。
结合第二方面,在第二方面的第一种实施方式下,
在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息。
结合第二方面或第二方面的第一种实施方式,在第二方面的第二种实施方式下,所述预设事件的调试信息包括所述预设事件操作对象的标识;
所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象,具体包括:
所述调试装置获取所述预设事件操作对象的标识,并根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
结合第二方面、第二方面的第一种实施方式或第二方面的第二种实施方式,在第二方面的第三种实施方式下,
所述调试装置包括调试器和调试代理,
所述调试装置确定核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象,具体包括:
所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件的情况下,将第二消息上报所述调试器,所述第二消息包括所述核A停止运行以及所述预设事件的标识;
所述调试器接收所述第二消息后,获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;
所述调试装置指示所述核A恢复运行,具体包括:
所述调试器指示所述调试代理向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行。
结合第二方面的第三种实施方式,在第二方面的第四种实施方式下,
所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息,具体包括:
所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
结合第二方面或第二方面的第一种实施方式至第二方面的第三种实施方式中任意一种实施方式,在第二方面的第五种实施方式下,
所述调试装置包括调试器和调试代理,
所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息,具体包括:
所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,将第一消息上报给所述调试器,所述第一消息包括所述核A停止运行以及缺省标识,
所述调试器接收所述第一消息后,指示所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
结合第二方面或第二方面的第一种实施方式至第二方面的第五种实施方式中任意一种实施方式,在第二方面的第六种实施方式下,
在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
第三方面,本发明实施例提供一种多核处理器,应用于远程调试系统中的目标机,所述多核处理器包括核A、其他核和输入端口,所述其他核是指位于所述多核处理器内、且与所述核A属于同一逻辑分组的所有核,其中:
所述核A用于在执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数;
所述输入端口用于接收第一解除停止指令,并将所述第一解除停止指令转送给所述核A,所述第一解除停止指令是所述远程调试系统中的调试装置在确定所述核A停止运行且导致所述核A停止运行的原因为所述预设事件之外的原因后发送的;
所述核A还用于在接收所述第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;
所述输入端口还用于接收第二解除停止指令,并将所述第二解除停止指令转送给所述核A,所述第二解除停止指令是所述调试装置根据所述预设事件的调试信息屏蔽所述预设事件操作对象之后发送的,所述预设事件操作对象为内核模块、进程或线程;
所述核A还用于在接收所述第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
结合第三方面,在第三方面的第一种实施方式下,
所述调试信息收集函数包括调试接口函数,所述调试接口函数的头部设置有第一调试异常指令,所述第一调试异常指令用于指示所述核A停止运行;
所述核A具体用于在执行完所述预设事件处理例程后开始执行位于所述调试接口函数头部的所述第一调试异常指令,并在执行所述第一调试异常指令的过程中向所述其他核发送所述停止运行信号。
结合第三方面的第一种实施方式,在第三方面的第二种实施方式下,
所述调试信息收集函数还包括与所述预设事件相关联的功能函数,且所述调试接口函数的尾部还设置有第二调试异常指令,所述第二调试异常指令用于指示所述核A停止运行;
所述核A具体用于执行与所述预设事件相关联的功能函数以收集所述预设事件的调试信息,然后执行位于所述调试接口函数尾部的所述第二调试异常指令。
结合第三方面的第二种实施方式,在第三方面的第三种实施方式下,
所述与所述预设事件相关联的功能函数位于内核调试桩内,所述内核调试桩是预先植入在所述目标机操作系统内的。
结合第三方面或第三方面的第一种实施方式至第三方面的第三种实施方式中任意一种实施方式,在第三方面的第四种实施方式下,
在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
结合第三方面或第三方面的第一种实施方式至第三方面的第四种实施方式中任意一种实施方式,在第三方面的第五种实施方式下,
所述预设事件的调试信息包括所述预设事件操作对象的标识。
结合第三方面或第三方面的第一种实施方式至第三方面的第五种实施方式中任意一种实施方式,在第三方面的第六种实施方式下,所述多核处理器集成在系统级芯片SOC上;
所述核A具体用于通过所述SOC的硬件交叉触发网络向所述其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;以及,
所述核A具体用于通过所述SOC的硬件交叉触发网络向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
第四方面,本发明实施例提供一种调试装置,所述调试装置部署在远程调试系统的宿主机内,所述调试设备包括调试单元和接收单元,
所述接收单元用于接收用于指示核A停止运行的消息,并将所述用于指示所述核A停止运行的消息转送给所述调试单元;其中,位于所述远程调试系统的目标机包括多核处理器,所述多核处理器包括所述核A;
所述调试单元用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因;
在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置还用于获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,所述预设事件操作对象为内核模块、进程或线程;
所述调试装置还用于指示所述核A恢复运行。
结合第四方面,在第四方面的第一种实施方式下,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置还用于指示所述核A恢复运行以收集所述预设事件的调试信息。
结合第四方面或第四方面的第一种实施方式,在第四方面的第二种实施方式下,所述预设事件的调试信息包括所述预设事件操作对象的标识;
所述调试装置具体用于获取所述预设事件操作对象的标识,并根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
结合第四方面、第四方面的第一种实施方式或第四方面的第二种实施方式,在第四方面的第三种实施方式下,
在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
结合第四方面或第四方面的第一种实施方式至第四方面的第三种实施方式中任意一种实施方式,在第四方面的第四种实施方式下,所述调试装置包括调试器和调试代理,
所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件的情况下,将第二消息上报所述调试器,所述第二消息包括所述核A停止运行以及所述预设事件的标识;
所述调试器具体用于接收所述第二消息后,获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;
所述调试器具体用于指示所述调试代理向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行。
结合第四方面的第四种实施方式,在第四方面的第五种实施方式下,
所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理具体用于向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
结合第四方面或第四方面的第一种实施方式至第四方面的第四种实施方式中任意一种实施方式,在第四方面的第六种实施方式下,所述调试装置包括调试器和调试代理,
所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,将第一消息上报给所述调试器,所述第一消息包括所述核A停止运行以及缺省标识;
所述调试器具体用于在接收到所述第一消息后,指示所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
第五方面,本发明实施例提供一种调试设备,包括处理器和存储器;
所述处理器用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因;位于所述远程调试系统的目标机包括多核处理器,所述多核处理器包括所述核A;
在导致所述核A停止运行的原因为预设事件的情况下,所述处理器用于获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,所述预设事件操作对象为内核模块、进程或线程;
所述存储器用于存储所述预设事件的调试信息;
所述处理器还用于指示所述核A恢复运行。
结合第五方面,在第五方面的第一种实施方式下,
在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述处理器还用于指示所述核A恢复运行以收集所述预设事件的调试信息。
结合第五方面或第五方面的第一种实施方式,在第五方面的第二种实施方式下,所述预设事件的调试信息包括所述预设事件操作对象的标识;
所述处理器具体用于获取所述预设事件操作对象的标识,并根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
结合第五方面、第五方面的第一种实施方式或第五方面的第二种实施方式,在第五方面的第三种实施方式下,
在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
可知,本发明实施例提供一种调试方法,通过在运行在核A上的预设事件的末尾添加调试接口函数,该调试接口函数通过调用内核调试桩中与该预设事件的类型相关联的功能函数,获取该预设事件的调试信息;调试器根据该预设事件的调试信息屏蔽所述预设事件操作对象。因为在本发明实施例中,该预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,预设事件操作对象为内核模块、进程或线程,其中内核模块为内核态代码,进程以及线程为用户态代码所以本发明实施例提供的技术方案,能够将内核态代码和用户态代码在同一个调试平台实现屏蔽。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种远程调试系统的结构示意图;
图2为本发明实施例提供的另一种远程调试系统的结构示意图;
图3为本发明实施例提供的一种调试方法的流程示意图;
图4为本发明实施例提供的另一种调试方法的流程示意图;
图5为本发明实施例提供的一种目标机的结构示意图;
图6.1为本发明实施例提供的一种数据头和数据体的结构示意图;
图6.2为本发明实施例提供的再一种数据头和数据体的结构示意图;
图7为本发明实施例提供的一种多核处理器的结构示意图;
图8为本发明实施例提供的一种调试装置的结构示意图;
图9为本发明实施例提供的一种调试设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参见附图3,本发明实施例提供一种调试方法,应用于如图1所示的远程调试系统,参见附图1,该远程调试系统包括目标机和宿主机,该目标机包括多核处理器,调试装置部署在所述宿主机内;其中,目标机和宿主机是不同的物理主机,目标机和宿主机之间通信连接。需要说明的是,在本发明实施例提供的技术方案中,所述多核处理器既可以是同构多核处理器,也可以是异构多核处理器。在目标机包括多个多核处理器的情况下,核A可以是该目标机中任一个多核处理器的任一个核,并不特指该目标机中的哪一个多核处理器的哪一个核。
具体的,本发明实施例提供的调试方法包括下述步骤:
S301、所述核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于是指所述其他核停止运行,所述其他核是指位于所述多核处理器内、且与所述核A属于同一逻辑分组的所有核,所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数;
如附图5所示,在本发明实施例中,预设事件的末尾添加了调试接口函数,该调试接口函数是位于预设事件外部的,不是预设事件的一部分。该调试接口函数的头部设置有第一调试异常指令,核A执行完该第一调试异常指令后将会停止运行;该调试接口函数的尾部还设置有第二调试异常指令,核A执行完该第二调试异常指令后也将停止运行。
具体的,所述核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,包括:所述核A执行完所述预设事件处理例程后开始执行位于所述调试接口函数头部的所述第一调试异常指令,并在执行第一调试异常指令的过程中向所述其他核发送停止运行信号。需要说明的是,所述核A执行第一调试异常指令要经历一个时间段,所述核A先是开始执行第一调试异常指令,然后在执行完该第一调试异常指令之前的某个时刻,向所述其他核发送停止运行信号,并在向所述其他核发送停止运行信号之后,继续执行该第一调试异常指令,并在执行完该第一调试异常指令后,所述核A停止运行。
需要说明的是,同一逻辑分组包括的所有核均位于同一多核处理器,逻辑分组是调试人员根据经验,将具有业务上关联关系的多个核划分到同一逻辑分组。如附图1所示,核A、核B、核C和核D处于同一逻辑分组。则所述核A向其他核发送停止运行信号,具体是:所述核A向核B、核C和核D发送停止运行信号。
作为本发明的一个实施例,在目标机包括系统级芯片SOC,且该包括所述核A的多核处理器集成在该SOC的情况下,所述核A向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,具体为:所述核A通过所述SOC的硬件交叉触发网络向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行。需要说明的是,所述核A通过所述SOC的硬件交叉触发网络向其他核发送恢复运行指令时是以广播的形式发送该恢复运行指令的。使用系统级芯片SOC的硬件交叉触发网络进行信号传递的优势在于:相对于使用软件进行信号传输来说,使用硬件进行信号传输,能够提高停止运行信号传输的时效性。
容易得知的是,对于无论是非对称多处理(AMP,asymmetricmulti-processing)结构下异构多核处理器上运行的多进程或多线程,还是对称多处理(SMP,SymmetricMulti-Processing)结构下同构多核处理器上运行的多进程或多线程,使用本发明实施例提供的技术方案,均可以实现同步调试。
S302、所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试装置向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行;
值得注意的是,步骤S301中,核A执行完预设事件处理例程后开始停止运行,并通知其他核停止运行;步骤S302中,所述调试装置向所述核A发送第一解除停止指令。方案这样设计的目的在于实现同步调试。参见附图1,核A、核B、核C和核D位于同一逻辑分组,核B、核C和核D中的至少一个(比如核B)上运行的代码与核A上运行的代码之间具有数据交互,则在核A调试期间,若核B继续运行,则核B上运行的代码可能因为不能与核A上运行的代码正确进行数据交互从而产生失真,所以在本发明实施例提供的方案中,在核A调试期间,与核A属于同一逻辑分组的其他核停止运行,避免产生失真。进一步的,先让核A与其他核同步停止运行,然后核A再恢复运行以进行调试。且为了实现核A与其他核同步停止运行,方案的设计还充分考虑到了核A发出的停止运行信号传输到其他核的时间,以及核A停止运行的时间,具体是在核A开始停止运行后,在停止运行的期间内向其他核发送停止运行指令,从而实现核A与其他核同步停止运行,进而实现比较精确的同步调试。
需要说明的是,目标机的内存中有预设存储空间,该预设存储空间是调试人员预先在目标机的内存中指定的,该预设存储空间的大小和地址均是固定的。该预设存储空间用于存储数据头,初始时,所述数据头包括第一缺省信息和数据体的地址,当然该第一缺省信息可以为空;该数据体包括第二缺省信息,当然该第二缺省信息也可以为空。
若核A是在执行完所述预设事件操作例程后停止执行的,则如图6.1所示,数据头包括的依然是第一缺省信息和数据体的位置,且数据体的内容为第二缺省信息。相应的,在核A是在执行完所述预设事件操作例程后停止执行的情况下,S302中所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,具体包括:调试装置轮询到所述核A停止运行后,通过读取数据头的内容判断导致核A停止运行的原因,由于数据头的内容包括第一缺省信息,所以调试装置根据所述第一缺省信息能够确定导致核A停止运行的原因为预设事件之外的原因。
参见附图4,作为本发明的一个实施例,所述调试装置包括调试代理和调试器,该调试装置应用在如图2所述的远程调试系统内,需要说明的是,调试代理和调试器可以位于相同的宿主机,也可以位于不同的宿主机,比如在附图2中,调试代理位于第一宿主机,调试器位于第二宿主机。在所述调试装置包括调试代理和调试器的情况下,如附图4所示,图3中的S302具体包括:
S402、所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理将第一消息上报给所述调试器,所述第一消息包括所述核A停止运行以及缺省标识;
在核A是在执行完所述预设事件操作例程后停止执行的情况下,结合前面详细解释的内容,可知S402具体包括:调试代理轮询到所述核A停止运行后,会通过读取数据头的内容判断导致核A停止运行的原因,由于数据头的内容包括第一缺省信息,所以调试代理根据所述第一缺省信息能够确定导致核A停止运行的原因为预设事件之外的原因,并会向调试器上报包括核A停止运行和缺省标识的第一消息。
S403、所述调试器接收所述第一消息后,指示所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行;
S404、所述调试代理向所述核A发送所述第一解除停止指令。
在所述调试装置包括调试代理和调试器的情况下,作为本发明的一个实施例,图3中的S302被细化为具体包括:
所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理向所述核A发送所述第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行。
具体参见前面对步骤S402的解释,此处不再赘述。需要说明的是,在本发明实施例中,调试代理不再向调试器上报包括核A停止运行以及缺省标识的第一消息,而是在从数据头中读取到第一缺省信息、确定导致核A停止运行的原因为预设事件之外的原因后,调试代理向核A发送所述第一解除停止指令。在本实施例中,调试代理向核A发送第一解除停止指令是由于该调试代理确定导致核A停止运行的原因为预设事件之外的原因,而非像前述实施例那样,因为接收了调试器的指示而向核A发送第一解除停止指令。相对于前述实施例来说,本实施例中调试代理分担了调试器更多的工作,对调试器的功能要求更少,利于精简调试器。
S303、所述核A接收所述第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;
参见附图5,需要说明的是,调试信息收集函数包括位于添加在预设事件末尾的调试接口函数和与所述预设事件相关联的功能函数,与所述预设事件相关联的功能函数位于内核调试桩,该内核调试桩是预先植入在目标机的操作系统内的。
正如前面对S301的细化,该调试接口函数的头部设置有第一调试异常指令,尾部设置有第二调试异常指令,在执行该调试接口函数的过程中,会调用位于内核调试桩的与所述预设事件相关联的功能函数。
具体的,S303包括:所述核A执行与所述预设事件相关联的功能函数以收集所述预设事件的调试信息,然后执行位于所述该调试接口函数尾部的所述第二调试异常指令。在核A执行完所述第二调试异常指令后,所述核A将停止运行。
需要说明的是,所述预设事件的调试信息包括所述预设事件的标识、所述预设事件操作对象的标识。可知,所述预设事件的调试信息的信息量是比较小的,通常仅有100行左右,所以采用本发明实施例提供的技术方案,可以降低目标机处理器处理的数据量,从而提高调试效率。
S304、所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件的情况下,所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件操作对象为内核模块、进程或线程;
所述调试装置向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行;
值得注意的是,在所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数的情况下,所述调试装置屏蔽所述预设事件操作对象的目的在于避免后续调试人员再对所述预设事件操作对象进行调试,这也是调试的一种具体形式,也是一种调试方法。
需要说明的是,若核A是在执行完所述调试信息收集函数后停止运行的,则如图6.2所示,所述核A会在执行所述调试信息收集函数的过程中,将触发所述核A执行该调试信息收集函数的预设事件的标识写入所述数据头以替代缺省信息,并将预设事件操作对象的标识写入数据体。容易理解的是,在所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数的情况下,所述调试信息收集函数包括预设事件的标识和预设事件操作对象的标识。
相应的,在核A是在执行完所述调试信息收集函数后停止执行的情况下,S304中所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,具体包括:调试装置轮询到所述核A停止运行后,通过读取数据头的内容判断导致核A停止运行的原因,由于数据头的内容包括预设事件的标识,所以调试装置能够根据所述预设事件的标识确定导致核A停止运行的原因为预设事件。
需要说明的是,S304中所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息将预先设置的悬挂断点设置所述预设事件操作对象,具体包括:
所述调试装置会根据位于数据头内的数据体的地址,从数据体读取所述预设事件操作对象的标识,然后根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
结合附图6.1和6.2可知,在本发明实施例提供的技术方案中,在预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,且核A是在执行完所述调试信息收集函数后停止运行的情况下,则数据头和数据体的内容如图6.2所示;若核A是因为其他事件而停止运行的,则数据头和数据体的内容如图6.1所示,自然该其他事件排除了执行完所述调试信息收集函数后的情况。也即数据头和数据体仅包括一条消息,调试装置从数据头中获取信息时,不需要分辨到底哪一条才是目标信息。且由于数据头和数据体仅包括一条消息,则位于目标机内存的所述预设存储空间的大小是固定的,且该预设存储空间占用的空间非常小,不会过多的占用目标机的存储资源,则提高信息获取的效率。
需要明确的是,在所述预设事件为内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;在所述预设事件为进程的删除函数的情况下,所述预设事件操作对象为进程;在所述预设事件为线程的删除函数的情况下,所述预设事件操作对象为线程。其中,所述内核模块可以为动态补丁、热补丁、动态库等。
参见附图4,作为本发明的另一个实施例,所述调试装置包括调试代理和调试器,该调试装置应用在如图2所述的远程调试系统内,需要说明的是,调试代理和调试器可以位于相同的宿主机,也可以位于不同的宿主机,比如在附图2中,调试代理位于第一宿主机,调试器位于第二宿主机。在所述调试装置包括调试代理和调试器的情况下,如附图4所示,图3中的S304具体包括:
S406、所述调试代理确定所述核A停止运行后,确定导致所述核A停止运行原因,在导致所述核A停止运行原因为所述预设事件的情况下,所述调试代理将第二消息上报给所述调试器,所述第二消息包括所述核A停止运行以及所述预设事件的标识;
需要说明的是,在核A是在执行完所述调试信息收集函数后停止执行的情况下,S406具体包括:调试代理轮询到所述核A停止运行后,会通过读取数据头的内容判断导致核A停止运行的原因,由于数据头的内容包括预设事件的标识,所以调试代理能够根据所述预设事件的标识确定导致核A停止运行的原因为所述预设事件,则所述调试代理向调试器上报包括核A停止运行和预设事件的标识的第二消息。
S407、所述调试器接收所述第二消息后,获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;
所述调试器指示所述调试代理向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行;
值得注意的是,所述调试器获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象,具体包括:所述调试器根据位于数据头内的数据体的地址,从数据体读取所述预设事件操作对象的标识,然后根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
在本发明实施例中,“所述调试器指示所述调试代理发送第二解除停止指令”发生在“所述调试器屏蔽所述预设事件操作对象”之后。作为本发明的另一个实施例,“所述调试器指示所述调试代理发送第二解除停止指令”还可以发生在“所述调试器获取所述预设事件操作对象的标识”之后以及“所述调试器屏蔽所述预设事件操作对象”之前的任一时刻。
S408、所述调试代理向所述核A发送第二解除停止指令。
S305、所述核A接收所述第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
正如前面对S301的解释,在目标机包括系统级芯片SOC,且该包括所述核A的多核处理器集成在该SOC的情况下,所述核A向其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行,具体为:所述核A通过所述SOC的硬件交叉触发网络向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。需要说明的是,所述核A通过所述SOC的硬件交叉触发网络向其他核发送恢复运行指令时是以广播的形式发送该恢复运行指令的。类似的,使用SOC的硬件交叉触发网络进行信号传递的优势在于:能够提高恢复运行指令传输的时效性。
由上可知,采用本发明实施例提供的调试方法,通过在运行在核A上的预设事件的末尾添加调试接口函数,该调试接口函数通过调用内核调试桩中与该预设事件的类型相关联的功能函数,获取该预设事件的调试信息;调试器根据该预设事件的调试信息屏蔽该预设事件操作对象。因为在本发明实施例中,该预设事件为内核态代码的处理函数或用户态代码的处理函数,所以本发明实施例提供的技术方案实现了将内核态代码和用户态代码在同一个调试平台实现屏蔽。
实施例二
参见附图7,本发明实施例包括一种多核处理器,应用于实施例一所述的调试方法中,且该多核处理器部署在如图1所示的远程调试系统的目标机内,如图7所示,该多核处理器包括核A、输入端口以及其他核,该其他核包括核B、核C和核D,其中,核B、核C和核D与核A均位于所述多核处理器、且属于同一逻辑分组。
所述核A用于在执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数;
如附图5所示,在本发明实施例中,预设事件的末尾添加了调试接口函数,该调试接口函数是位于预设事件外部的,不是预设事件的一部分。该调试接口函数的头部设置有第一调试异常指令,核A执行完该第一调试异常指令后将会停止运行。所以,所述核A具体用于在执行完所述预设事件处理例程后开始执行位于所述调试接口函数头部的所述第一调试异常指令,并在执行所述第一调试异常指令的过程中向所述其他核发送停止运行信号。
作为本发明的一个实施例,在目标机包括系统级芯片SOC,且该包括所述核A的多核处理器集成在该SOC的情况下,则所述核A具体用于通过所述SOC的硬件交叉触发网络向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行。需要说明的是,所述核A通过所述SOC的硬件交叉触发网络向其他核发送恢复运行指令时是以广播的形式发送该恢复运行指令的。使用系统级芯片SOC的硬件交叉触发网络进行信号传递的优势在于:提高停止运行信号传输的时效性。
容易得知的是,对于无论是非对称多处理(AMP,asymmetricmulti-processing)结构下异构多核处理器上运行的多进程或多线程,还是对称多处理(SMP,SymmetricMulti-Processing)结构下同构多核处理器上运行的多进程或多线程,使用本发明实施例提供的多核处理器,均可以实现同步调试。
参见附图7,核A、核B、核C和核D位于同一逻辑分组,核B、核C和核D中的至少一个(比如核B)上运行的代码与核A上运行的代码之间具有数据交互,则在核A调试期间,若核B继续运行,则核B上运行的代码可能因为不能与核A上运行的代码正确进行数据交互从而产生失真,所以在本发明实施例提供的方案中,在核A调试期间,与核A属于同一逻辑分组的其他核停止运行,避免产生失真。进一步的,先让核A与其他核同步停止运行,然后核A再恢复运行以进行调试。且为了实现核A与其他核同步停止运行,方案的设计还充分考虑到了核A发出的停止运行信号传输到其他核的时间,以及核A停止运行的时间,具体是在核A开始停止运行后,在停止运行的期间内向其他核发送停止运行指令,从而实现核A与其他核同步停止运行,进而实现比较精确的同步调试。
所述输入端口用于接收第一解除停止指令,并将所述第一解除停止指令转送给所述核A,所述第一解除停止指令是所述远程调试系统中的调试装置在确定所述核A停止运行且导致所述核A停止运行的原因为所述预设事件之外的原因后发送的;
所述核A还用于在接收第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;
参见附图5,需要说明的是,调试信息收集函数包括位于添加在预设事件末尾的调试接口函数和与所述预设事件相关联的功能函数,与所述预设事件相关联的功能函数位于内核调试桩,该内核调试桩是预先植入在目标机的操作系统内的。
该调试接口函数的尾部设置有第二调试异常指令,在执行该调试接口函数的过程中,会调用位于内核调试桩的与所述预设事件相关联的功能函数。
需要说明的是,所述核A具体用于执行与所述预设事件相关联的功能函数以收集所述预设事件的调试信息,然后执行位于所述该调试接口函数尾部的所述第二调试异常指令。在核A执行完所述第二调试异常指令后,所述核A将停止运行。
需要说明的是,所述预设事件的调试信息包括所述预设事件的标识和所述预设事件操作对象的标识。可知,所述预设事件的调试信息的信息量是比较小的,通常仅有100行左右,所以采用本发明实施例提供的技术方案,可以降低目标机处理器处理的数据量,从而提高调试效率。
所述输入端口还用于接收第二解除停止指令,并将所述第二解除停止指令转送给所述核A,所述第二解除停止指令是所述调试装置根据所述预设事件的调试信息屏蔽所述预设事件操作对象之后发送的,所述预设事件操作对象为内核模块、进程或线程;
需要明确的是,在所述预设事件为内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;在所述预设事件为进程的删除函数的情况下,所述预设事件操作对象为进程;在所述预设事件为线程的删除函数的情况下,所述预设事件操作对象为线程。其中,所述内核模块可以为动态补丁、热补丁、动态库等。
所述核A还用于在接收第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
如前面所述,在所述目标机包括系统级芯片SOC,且该包括所述核A的多核处理器集成在该SOC的情况下,所述核A具体用于通过所述SOC的硬件交叉触发网络向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。需要说明的是,所述核A通过所述SOC的硬件交叉触发网络向其他核发送恢复运行指令时是以广播的形式发送该恢复运行指令的。类似的,使用SOC的硬件交叉触发网络进行信号传递的优势在于:能够提高恢复运行指令传输的时效性。
由上可知,采用本发明实施例提供的多核处理器,通过在运行在核A上的预设事件的末尾添加调试接口函数,该调试接口函数通过调用内核调试桩中与该预设事件的类型相关联的功能函数,获取该预设事件的调试信息,使得调试装置根据该预设事件的调试信息屏蔽该预设事件操作对象。因为在本发明实施例中,该预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,预设事件操作对象为内核模块、进程或线程,而内核模块为内核态代码,进程和线程为用户态代码,所以采用本发明实施例提供的多核处理器,能够实现了将内核态代码和用户态代码在同一个调试平台实现屏蔽。
实施例三
参见附图8,为本发明实施例包括一种调试装置,应用于实施例一所述的调试方法中,且该调试装置部署在如图1所示的远程调试系统的宿主机内,如图8所示,该调试装置包括调试单元和接收单元。
所述接收单元用于接收用于指示核A停止运行的消息,并将所述用于指示核A停止运行的消息转送给所述调试装置;其中,位于所述远程调试系统的目标机包括多核处理器,所述多核处理器包括所述核A;
所述调试单元用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因;
在导致所述核A停止运行的原因为预设事件的情况下,所述调试单元还用于获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数函数或用户态代码的处理函数;所述预设事件操作对象为内核模块、进程或线程;
所述调试单元还用于指示所述核A恢复运行。
需要说明的是,在所述预设事件为内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;在所述预设事件为进程的删除函数的情况下,所述预设事件操作对象为进程;在所述预设事件为线程的删除函数函数的情况下,所述预设事件操作对象为线程。其中,所述内核模块可以为动态补丁、热补丁、动态库等。
值得注意的是,目标机的内存中有预设存储空间,该预设存储空间是调试人员预先在目标机的内存中指定的,该预设存储空间的大小和地址均是固定的。该预设存储空间用于存储数据头,初始时,所述数据头包括第一缺省信息和数据体的地址,当然该第一缺省信息可以为空;该数据体包括第二缺省信息,当然该第二缺省信息也可以为空。
在预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,且核A是在执行完所述调试信息收集函数后停止运行的情况下,则如图6.2所示,所述核A会在执行所述调试信息收集函数的过程中,将触发所述核A执行该调试信息收集函数的预设事件的标识写入所述数据头以替代缺省信息,并将预设事件操作对象的标识写入数据体。
则在导致所述核A停止运行的原因为预设事件的情况下,所述调试单元具体用于在确定所述核A停止运行后,通过读取数据头的内容判断导致核A停止运行的原因,由于数据头的内容包括预设事件的标识,所以调试单元能够根据所述预设事件的标识确定导致核A停止运行的原因为预设事件。
进一步的,所述调试单元具体用于根据位于数据头内的数据体的地址,从数据体读取所述预设事件操作对象的标识,然后根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象
作为本发明的另一个实施例,如附图8所示,所述调试单元包括调试代理和调试器,需要说明的是,调试代理和调试器可以位于同一宿主机,也可以位于不同的宿主机,参见附图2所示的远程调试系统,调试代理和调试器分别位于不同的宿主机,其中,调试代理位于第一宿主机,调试器位于第二宿主机。
在所述调试单元包括调试代理和调试器,且在导致所述核A停止运行的原因为预设事件的情况下:
所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行原因,在导致所述核A停止运行原因为所述预设事件的情况下,将第二消息上报给所述调试器,所述第二消息包括所述核A停止运行以及所述预设事件的标识;
进一步的,调试代理具体用于在轮询到所述核A停止运行后,通过读取数据头的内容中包括预设事件的标识,确定导致核A停止运行的原因为所述预设事件,向调试器上报包括核A停止运行和预设事件的标识的第二消息。
所述调试器具体用于接收所述第二消息后,获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象。
进一步的,所述调试器具体用于根据所述第二消息中的所述预设事件的标识,从数据体读取所述预设事件操作对象的标识或所述预设事件操作对象的标识,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象。
所述调试器具体用于指示所述调试代理向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行。
需要说明的是,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,本发明实施例提供的调试装置中的所述调试单元还用于指示所述核A恢复运行以收集所述预设事件的调试信息。
具体的,在预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,且导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试单元具体用于在确定所述核A停止运行后,通过读取数据头的内容判断导致核A停止运行的原因,由于数据头的内容包括所述第一缺省信息,所以调试单元能够根据所述第一缺省信息确定导致核A停止运行的原因为预设事件之外的原因。
作为本发明的另一个实施例,如附图8所示,在所述调试单元包括调试代理和调试器,且在导致所述核A停止运行的原因为预设事件之外的原因的情况下:
所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理具体用于向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
结合前面的解释可知,调试代理具体用于在轮询到所述核A停止运行后,读取数据头的内容包括第一缺省信息,根据所述第一缺省信息能够确定导致核A停止运行的原因为预设事件之外的原因。
作为本发明的再一个实施例,在所述调试单元包括调试代理和调试器,且在导致所述核A停止运行的原因为预设事件之外的原因的情况下:
所述调试代理具体用于在轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,将第一消息上报给所述调试器,所述第一消息包括所述核A停止运行以及缺省标识;
结合前面的解释可知,调试代理具体用于在轮询到所述核A停止运行后,读取数据头的内容包括第一缺省信息,根据所述第一缺省信息能够确定导致核A停止运行的原因为预设事件之外的原因,将包括所述核A停止运行以及缺省标识上报给所述调试器。
所述调试器具体用于在接收所述第一消息后,指示所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行;
所述调试代理具体用于向所述核A发送所述第一解除停止指令。
由上可知,采用本发明实施例提供的调试装置,在确定目标机侧多核处理器的核A停止运行后,且在确定导致核A停止运行的原因为预设事件的情况下,该调试装置从目标机侧获取预设事件的调试信息,并根据预设事件的调试信息屏蔽所述预设事件操作对象,从而实现对预设事件操作对象的调试。因为在本发明实施例中,该预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,预设事件操作对象为内核模块、进程或线程,而内核模块为内核态代码,进程和线程为用户态代码,所以采用本发明实施例提供的调试装置,不仅能够实现了对内核态代码的屏蔽,还能够实现对用户态代码的屏蔽。
实施例四
参见附图9,为本发明实施例提供的一种调试设备500的结构框图,该调试设备500应用于实施例一所示的调试方法,该调试设备500应用在如图1所示的远程调试系统中,且调试设备900为图1所示的远程调试系统中宿主机的一种具体实现方式。具体的,如图9所示,所述调试设备500包括:至少一个处理器501,至少一个网络接口504或者其他用户接口503,存储器505,至少一个通信总线502。所述通信总线502用于实现这些组件之间的连接通信。该调试设备500可选的包含用户接口503,包括显示器(例如,触摸屏、LCD、CTR、全息成像(Holographic)或者投影(Projector)等),键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触摸屏等)。
存储器505可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器505的一部分还可以包括非易失性随机存取存储器(NVRAM)。
在一些实施例中,存储器505存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统5051,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
应用程序模块5052,包含各种应用程序,例如桌面(launcher)、媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用业务。
在本发明实施例中,处理器501用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因;位于所述远程调试系统的目标机包括多核处理器,所述多核处理器包括所述核A;
值得注意的是,目标机侧的内存中有预设存储空间,该预设存储空间是调试人员预先在目标机的内存中指定的,该预设存储空间的大小和地址均是固定的。该预设存储空间用于存储数据头,初始时,所述数据头包括第一缺省信息和数据体的地址,当然该第一缺省信息可以为空;该数据体包括第二缺省信息,当然该第二缺省信息也可以为空。
在预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,且核A是在执行完所述调试信息收集函数后停止运行的情况下,则如图6.2所示,所述核A会在执行所述调试信息收集函数的过程中,将触发所述核A执行该调试信息收集函数的预设事件的标识写入所述数据头以替代缺省信息,将预设事件操作对象的标识写入数据体。若核A是因为其他原因停止运行的,则如图6.1所示,数据头包括的依然是第一缺省信息和数据体的地址,数据体包括的依然是第二缺省信息。
则处理器901具体用于在确定所述核A停止运行后,通过读取数据头的内容判断导致核A停止运行的原因,若数据头包括预设事件的标识,则确定导致所述核A停止运行的原因为预设事件;若数据头包括第一缺省信息,则确定导致所述核A停止运行的原因为预设事件之外的原因。
在导致所述核A停止运行的原因为预设事件的情况下,处理器501用于获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,所述预设事件操作对象为内核模块、进程或线程;
通过本实施例中前面的描述,能够确定所述预设事件的调试信息包括所述预设事件的标识和预设事件操作对象的标识。
需要说明的是,在所述预设事件为内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;在所述预设事件为进程的删除函数的情况下,所述预设事件操作对象为进程;在所述预设事件为线程的删除函数的情况下,所述预设事件操作对象为线程。
需要说明的是,在预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,且导致所述核A停止运行的原因为预设事件的情况下,处理器901具体用于根据位于数据头内的数据体的地址,从数据体读取所述预设事件操作对象的标识,然后根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
所述存储器505用于存储所述预设事件的调试信息;
所述处理器501还用于指示所述核A恢复运行。
作为本发明的另一个实施例,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,处理器501还用于指示所述核A恢复运行以收集所述预设事件的调试信息。
由上可知,采用本发明实施例提供的调试设备,在确定目标机侧多核处理器的核A停止运行后,且在确定导致核A停止运行的原因为预设事件的情况下,该调试设备从目标机侧获取预设事件的调试信息,并根据预设事件的调试信息屏蔽所述预设事件操作对象。因为在本发明实施例中,该预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,预设事件操作对象为内核模块、进程或线程,而内核模块为内核态代码,进程和线程为用户态代码,所以采用本发明实施例提供的调试设备,不仅能够实现了对内核态代码的屏蔽,还能够实现对用户态代码的屏蔽。
其中上述实施例之间可以相互参见,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和设备,可以通过其它的方式实现。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
应当理解的是,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (24)

1.一种调试方法,其特征在于,应用于远程调试系统中的目标机,所述目标机包括多核处理器,所述方法包括:
所述多核处理器的核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;所述其他核是指位于所述多核处理器内、且与所述核A属于同一逻辑分组的所有核;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的处理函数;
所述核A接收第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;所述第一解除停止指令是所述远程调试系统中的调试装置在确定所述核A停止运行且导致所述核A停止运行的原因为所述预设事件之外的原因后发送的;
所述核A接收第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行;所述第二解除停止指令是所述调试装置根据所述预设事件的调试信息屏蔽所述预设事件操作对象之后发送的,所述预设事件操作对象为内核模块、进程或线程。
2.根据权利要求1所述的方法,其特征在于,
所述调试信息收集函数包括调试接口函数,所述调试接口函数的头部设置有第一调试异常指令,所述第一调试异常指令用于指示所述核A停止运行;
所述核A执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,具体包括:
所述核A执行完所述预设事件处理例程后开始执行位于所述调试接口函数头部的所述第一调试异常指令,并在执行所述第一调试异常指令的过程中向所述其他核发送所述停止运行信号。
3.根据权利要求2所述的方法,其特征在于,
所述调试信息收集函数还包括与所述预设事件相关联的功能函数,且所述调试接口函数的尾部还设置有第二调试异常指令,所述第二调试异常指令用于指示所述核A停止运行;
所述核A执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行,具体包括:
所述核A执行与所述预设事件相关联的功能函数以收集所述预设事件的调试信息,然后执行位于所述调试接口函数尾部的所述第二调试异常指令。
4.根据权利要求3所述的方法,其特征在于,
所述与所述预设事件相关联的功能函数位于内核调试桩内,所述内核调试桩是预先植入在所述目标机操作系统内的。
5.根据权利要求1至4任一项所述的方法,其特征在于,
在所述预设事件为所述内核模块的卸载函数的情况下,所述预设事件操作对象为内核模块;
在所述预设事件为所述进程的删除函数的情况下,所述预设事件操作对象为进程;
在所述预设事件为所述线程的删除函数的情况下,所述预设事件操作对象为线程。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述预设事件的调试信息包括所述预设事件操作对象的标识。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述多核处理器集成在系统级芯片SOC上;
所述核A向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,具体包括:
所述核A通过所述SOC的硬件交叉触发网络向所述其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;
所述核A向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行,具体包括:
所述核A通过所述SOC的硬件交叉触发网络向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
8.一种调试方法,其特征在于,由部署于宿主机内的调试装置执行,所述宿主机位于远程调试系统,所述方法包括:
所述调试装置确定核A停止运行后,确定导致所述核A停止运行的原因;所述核A属于所述远程调试系统中的目标机的多核处理器;
在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,所述预设事件操作对象为内核模块、进程或线程;
所述调试装置指示所述核A恢复运行。
9.根据权利要求8所述的方法,其特征在于,
在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息。
10.根据权利要求8或9所述的方法,其特征在于,所述预设事件的调试信息包括所述预设事件操作对象的标识;
所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象,具体包括:
所述调试装置获取所述预设事件操作对象的标识,并根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
11.根据权利要求8至10任一项所述的方法,其特征在于,所述调试装置包括调试器和调试代理,
所述调试装置确定核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象,具体包括:
所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件的情况下,将第二消息上报所述调试器,所述第二消息包括所述核A停止运行以及所述预设事件的标识;
所述调试器接收所述第二消息后,获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;
所述调试装置指示所述核A恢复运行,具体包括:
所述调试器指示所述调试代理向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行。
12.根据权利要求11所述的方法,其特征在于,
所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息,具体包括:
所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
13.根据权利要求8至11任一项所述的方法,其特征在于,所述调试装置包括调试器和调试代理,
所述调试装置确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置指示所述核A恢复运行以收集所述预设事件的调试信息,具体包括:
所述调试代理轮询到所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,将第一消息上报给所述调试器,所述第一消息包括所述核A停止运行以及缺省标识,
所述调试器接收所述第一消息后,指示所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
14.一种多核处理器,应用于远程调试系统中的目标机,其特征在于,所述多核处理器包括核A、其他核和输入端口,所述其他核是指位于所述多核处理器内、且与所述核A属于同一逻辑分组的所有核,其中:
所述核A用于在执行完预设事件处理例程后开始停止运行,并在停止运行的过程中向其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行,所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数;
所述输入端口用于接收第一解除停止指令,并将所述第一解除停止指令转送给所述核A,所述第一解除停止指令是所述远程调试系统中的调试装置在确定所述核A停止运行且导致所述核A停止运行的原因为所述预设事件之外的原因后发送的;
所述核A还用于在接收所述第一解除停止指令并恢复运行后,执行调试信息收集函数以收集所述预设事件的调试信息,并在执行完所述调试信息收集函数之后停止运行;
所述输入端口还用于接收第二解除停止指令,并将所述第二解除停止指令转送给所述核A,所述第二解除停止指令是所述调试装置根据所述预设事件的调试信息屏蔽所述预设事件操作对象之后发送的,所述预设事件操作对象为内核模块、进程或线程;
所述核A还用于在接收所述第二解除停止指令并恢复运行后,向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
15.根据权利要求14所述的多核处理器,其特征在于,
所述调试信息收集函数包括调试接口函数,所述调试接口函数的头部设置有第一调试异常指令,所述第一调试异常指令用于指示所述核A停止运行;
所述核A具体用于在执行完所述预设事件处理例程后开始执行位于所述调试接口函数头部的所述第一调试异常指令,并在执行所述第一调试异常指令的过程中向所述其他核发送所述停止运行信号。
16.根据权利要求15所述的多核处理器,其特征在于,
所述调试信息收集函数还包括与所述预设事件相关联的功能函数,且所述调试接口函数的尾部还设置有第二调试异常指令,所述第二调试异常指令用于指示所述核A停止运行;
所述核A具体用于执行与所述预设事件相关联的功能函数以收集所述预设事件的调试信息,然后执行位于所述调试接口函数尾部的所述第二调试异常指令。
17.根据权利要求16所述的多核处理器,其特征在于,
所述与所述预设事件相关联的功能函数位于内核调试桩内,所述内核调试桩是预先植入在所述目标机操作系统内的。
18.根据权利要求14至17任一项所述的多核处理器,其特征在于,所述多核处理器集成在系统级芯片SOC上;
所述核A具体用于通过所述SOC的硬件交叉触发网络向所述其他核发送停止运行信号,所述停止运行信号用于指示所述其他核停止运行;以及,
所述核A具体用于通过所述SOC的硬件交叉触发网络向所述其他核发送恢复运行指令,所述恢复运行指令用于通知所述其他核恢复运行。
19.一种调试装置,其特征在于,所述调试装置部署在远程调试系统的宿主机内,所述调试设备包括调试单元和接收单元,
所述接收单元用于接收用于指示核A停止运行的消息,并将所述用于指示所述核A停止运行的消息转送给所述调试单元;其中,位于所述远程调试系统的目标机包括多核处理器,所述多核处理器包括所述核A;
所述调试单元用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因;
在导致所述核A停止运行的原因为预设事件的情况下,所述调试装置还用于获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;所述预设事件为内核模块的卸载函数、进程的删除函数或线程的删除函数,所述预设事件操作对象为内核模块、进程或线程;
所述调试装置还用于指示所述核A恢复运行。
20.根据权利要求19所述的装置,其特征在于,
在导致所述核A停止运行的原因为预设事件之外的原因的情况下,所述调试装置还用于指示所述核A恢复运行以收集所述预设事件的调试信息。
21.根据权利要求19或20所述的装置,其特征在于,所述预设事件的调试信息包括所述预设事件操作对象的标识;
所述调试装置具体用于获取所述预设事件操作对象的标识,并根据所述预设事件操作对象的标识屏蔽所述预设事件操作对象。
22.根据权利要求19至21任一项所述的装置,其特征在于,所述调试装置包括调试器和调试代理,
所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件的情况下,将第二消息上报所述调试器,所述第二消息包括所述核A停止运行以及所述预设事件的标识;
所述调试器具体用于接收所述第二消息后,获取所述预设事件的调试信息,并根据所述预设事件的调试信息屏蔽所述预设事件操作对象;
所述调试器具体用于指示所述调试代理向所述核A发送第二解除停止指令,所述第二解除停止指令用于指示所述核A恢复运行。
23.根据权利要求22所述的装置,其特征在于,所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,所述调试代理具体用于向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
24.根据权利要求19至22任一项所述的装置,其特征在于,所述调试装置包括调试器和调试代理,
所述调试代理具体用于在确定所述核A停止运行后,确定导致所述核A停止运行的原因,在导致所述核A停止运行的原因为所述预设事件之外的原因的情况下,将第一消息上报给所述调试器,所述第一消息包括所述核A停止运行以及缺省标识;
所述调试器具体用于在接收到所述第一消息后,指示所述调试代理向所述核A发送第一解除停止指令,所述第一解除停止指令用于指示所述核A恢复运行以收集所述预设事件的调试信息。
CN201510623211.5A 2015-09-25 2015-09-25 一种调试方法、多核处理器和调试设备 Active CN105354136B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201510623211.5A CN105354136B (zh) 2015-09-25 2015-09-25 一种调试方法、多核处理器和调试设备
EP16848167.9A EP3343377A4 (en) 2015-09-25 2016-09-24 Debugging method, multi-core processor, and debugging equipment
BR112018005836-0A BR112018005836A2 (zh) 2015-09-25 2016-09-24 A debugging method, a multi-core processor, and a debug device
PCT/CN2016/099995 WO2017050286A1 (zh) 2015-09-25 2016-09-24 一种调试方法、多核处理器和调试设备
KR1020187011356A KR20180057687A (ko) 2015-09-25 2016-09-24 디버깅 방법, 멀티 코어 프로세서, 및 디버깅 장비
US15/934,329 US10409709B2 (en) 2015-09-25 2018-03-23 Debugging method, multi-core processor and debugging device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510623211.5A CN105354136B (zh) 2015-09-25 2015-09-25 一种调试方法、多核处理器和调试设备

Publications (2)

Publication Number Publication Date
CN105354136A true CN105354136A (zh) 2016-02-24
CN105354136B CN105354136B (zh) 2018-06-15

Family

ID=55330110

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510623211.5A Active CN105354136B (zh) 2015-09-25 2015-09-25 一种调试方法、多核处理器和调试设备

Country Status (6)

Country Link
US (1) US10409709B2 (zh)
EP (1) EP3343377A4 (zh)
KR (1) KR20180057687A (zh)
CN (1) CN105354136B (zh)
BR (1) BR112018005836A2 (zh)
WO (1) WO2017050286A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017050286A1 (zh) * 2015-09-25 2017-03-30 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN109933517A (zh) * 2017-12-19 2019-06-25 成都鼎桥通信技术有限公司 基于安卓系统的测试方法、装置及设备
CN111064769A (zh) * 2019-11-06 2020-04-24 江苏三希科技股份有限公司 一种电量集中器的远程调试方法、系统及设备
CN112711527A (zh) * 2020-12-16 2021-04-27 北京科银京成技术有限公司 一种实时进程的调试方法、装置、目标机和存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289785B1 (en) * 2016-09-15 2019-05-14 Xilinx, Inc. Platform architecture creation for a system-on-chip
US9875167B1 (en) 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US10606679B2 (en) * 2017-12-04 2020-03-31 Arm Limited Debug apparatus and method
JP6981920B2 (ja) * 2018-05-25 2021-12-17 ルネサスエレクトロニクス株式会社 半導体装置、およびデバッグ方法
CN110908904A (zh) * 2019-11-15 2020-03-24 北京小米移动软件有限公司 调试快应用的方法、调试快应用的装置及电子设备
CN112540918A (zh) * 2020-12-04 2021-03-23 中国航空工业集团公司成都飞机设计研究所 一种基于arinc659总线的多余度飞管计算机同步调试方法
CN116340188B (zh) * 2023-05-26 2023-08-04 深流微智能科技(深圳)有限公司 Gpu芯片渲染任务的调试方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1779652A (zh) * 2004-11-24 2006-05-31 中兴通讯股份有限公司 一种调试操作系统内核态程序的方法及装置
CN102346708A (zh) * 2010-08-03 2012-02-08 中兴通讯股份有限公司 一种调试器及其调试方法
CN103729288A (zh) * 2013-11-01 2014-04-16 华中科技大学 一种嵌入式多核环境下应用程序的调试方法
WO2014166526A1 (de) * 2013-04-09 2014-10-16 Siemens Aktiengesellschaft Mehrkern-prozessorsystem mit fehleranalysefunktion

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995012373A1 (en) 1993-11-03 1995-05-11 Smith & Nephew Plc Padding
JP2001035747A (ja) 1999-07-21 2001-02-09 Taiyo Yuden Co Ltd 積層セラミックコンデンサ
US6886110B2 (en) 2000-11-21 2005-04-26 Wind River Systems, Inc. Multiple device scan chain emulation/debugging
US20040098639A1 (en) 2002-11-14 2004-05-20 Liu Bao Gang Debugging kernel-loadable modules and suspending and replacing functions in non-microkernel operating systems
US9158574B2 (en) * 2002-11-18 2015-10-13 Arm Limited Handling interrupts in data processing
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7581087B2 (en) * 2006-01-17 2009-08-25 Qualcomm Incorporated Method and apparatus for debugging a multicore system
EP2057546A2 (en) 2006-08-21 2009-05-13 Nxp B.V. Multiprocessor system and method for synchronizing a debugging process of a multiprocessor system
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
EP2003534A3 (en) * 2007-06-11 2009-02-18 MediaTek Inc. Method of and apparatus for reducing power consumption within an integrated circuit.
JP2008310727A (ja) * 2007-06-18 2008-12-25 Toshiba Corp シミュレーション装置及びシミュレーション方法
CN101398780B (zh) 2007-09-27 2011-08-24 国际商业机器公司 可基于进程定制调试器的即时调试的方法和系统
CN101685420B (zh) 2008-09-24 2013-06-12 中兴通讯股份有限公司 多线程调试方法和装置
CN101504626B (zh) 2009-03-06 2012-06-06 中兴通讯股份有限公司 一种调试控制实现方法及系统
CN101515251A (zh) 2009-03-31 2009-08-26 华为技术有限公司 板级平台调试方法、装置和系统
CN101540706B (zh) 2009-04-23 2011-12-28 中兴通讯股份有限公司 一种实现远程调试的方法及系统
US8495344B2 (en) * 2010-01-22 2013-07-23 Via Technologies, Inc. Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
US8533418B2 (en) 2010-06-30 2013-09-10 International Business Machines Corporation Memory allocation with identification of requesting loadable kernel module
US8635476B2 (en) * 2010-12-22 2014-01-21 Via Technologies, Inc. Decentralized power management distributed among multiple processor cores
CN102073565B (zh) 2010-12-31 2014-02-19 华为技术有限公司 触发操作方法、多核分组调试方法、装置及系统
TW201235833A (en) * 2011-02-16 2012-09-01 Ind Tech Res Inst System and method for multi-core synchronous debugging of a multi-core platform
US20130031419A1 (en) * 2011-07-28 2013-01-31 International Business Machines Corporation Collecting Debug Data in a Secure Chip Implementation
CN102521087B (zh) 2011-11-02 2014-11-19 烽火通信科技股份有限公司 一种远程获取内核模块实时分级调试信息的方法
US9304880B2 (en) 2013-03-15 2016-04-05 Freescale Semiconductor, Inc. System and method for multicore processing
CN103226504B (zh) 2013-04-19 2016-05-11 中国科学院自动化研究所 一种分布式片上调试系统
US9600397B2 (en) 2013-08-29 2017-03-21 Stmicroelectronics (Grenoble 2) Sas Dynamic debugging method of a software module and corresponding device
US10102050B2 (en) * 2015-02-05 2018-10-16 Microchip Technology Incorporated System and method for generating cross-core breakpoints in a multi-core microcontroller
US9626265B2 (en) * 2015-06-29 2017-04-18 International Business Machines Corporation Efficiency of cycle-reproducible debug processes in a multi-core environment
US20170062075A1 (en) * 2015-08-31 2017-03-02 Sandisk Technologies Inc. Apparatus including core and clock gating circuit and method of operating same
CN105224454B (zh) 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105354136B (zh) * 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1779652A (zh) * 2004-11-24 2006-05-31 中兴通讯股份有限公司 一种调试操作系统内核态程序的方法及装置
CN102346708A (zh) * 2010-08-03 2012-02-08 中兴通讯股份有限公司 一种调试器及其调试方法
WO2014166526A1 (de) * 2013-04-09 2014-10-16 Siemens Aktiengesellschaft Mehrkern-prozessorsystem mit fehleranalysefunktion
CN103729288A (zh) * 2013-11-01 2014-04-16 华中科技大学 一种嵌入式多核环境下应用程序的调试方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017050286A1 (zh) * 2015-09-25 2017-03-30 华为技术有限公司 一种调试方法、多核处理器和调试设备
US10409709B2 (en) 2015-09-25 2019-09-10 Huawei Technologies Co., Ltd. Debugging method, multi-core processor and debugging device
CN109933517A (zh) * 2017-12-19 2019-06-25 成都鼎桥通信技术有限公司 基于安卓系统的测试方法、装置及设备
CN111064769A (zh) * 2019-11-06 2020-04-24 江苏三希科技股份有限公司 一种电量集中器的远程调试方法、系统及设备
CN112711527A (zh) * 2020-12-16 2021-04-27 北京科银京成技术有限公司 一种实时进程的调试方法、装置、目标机和存储介质
CN112711527B (zh) * 2020-12-16 2024-02-06 北京科银京成技术有限公司 一种实时进程的调试方法、装置、目标机和存储介质

Also Published As

Publication number Publication date
KR20180057687A (ko) 2018-05-30
EP3343377A1 (en) 2018-07-04
US20180210811A1 (en) 2018-07-26
US10409709B2 (en) 2019-09-10
BR112018005836A2 (zh) 2018-10-09
WO2017050286A1 (zh) 2017-03-30
EP3343377A4 (en) 2018-09-12
CN105354136B (zh) 2018-06-15

Similar Documents

Publication Publication Date Title
CN105354136A (zh) 一种调试方法、多核处理器和调试设备
CN105224454A (zh) 一种调试方法、多核处理器和调试设备
KR101944874B1 (ko) 오류 처리 방법, 관련 장치 및 컴퓨터
US9483383B2 (en) Injecting faults at select execution points of distributed applications
CN110046479B (zh) 一种基于安卓操作系统的链接库文件反调试方法及装置
US9355003B2 (en) Capturing trace information using annotated trace output
CN104778116B (zh) 一种多断点的软件调试装置和方法
CN103827834A (zh) 一种内存数据的迁移方法、计算机和装置
US10324784B2 (en) Mitigating crashes of an application server executing a monitoring agent
EP2565790A1 (en) Method and system for injecting simulated errors
CN107608609B (zh) 一种事件对象发送方法与装置
Qiao et al. An empirical study of software aging manifestations in android
CN105760307A (zh) 智能终端的测试方法、装置及系统
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
CN107003828B (zh) 图形指令的仪器化
CN102331961B (zh) 并行模拟多个处理器的方法及系统、调度器
CN104679583A (zh) 一种动态调整时钟中断的方法及装置
CN105353980B (zh) 一种内存数据的迁移方法、计算机和装置
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
CN104572425A (zh) 程序调试方法、装置及系统
US20030105777A1 (en) Method and apparatus to facilitate testing of garbage collection implementations
CN104317728A (zh) 一种安全复位存储设备的方法和装置
CN113722231B (zh) 用户操作的模拟方法、装置、电子设备及存储介质
KR101292572B1 (ko) 가상 머신을 이용한 파일 시스템 관리 장치 및 그 방법
CN105718326A (zh) 嵌入式系统的可恢复性测试方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201217

Address after: 518000 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee after: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Effective date of registration: 20201217

Address after: No.2, Gongye Avenue, Zhangwei Township, Shuyang County, Suqian City, Jiangsu Province

Patentee after: Luo Sanjie

Address before: 518000 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee before: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201229

Address after: 401, 50 Liandong u Valley, 1001 Fuying Road, Jiangning District, Nanjing City, Jiangsu Province

Patentee after: Nanjing Dafeng CNC Technology Co.,Ltd.

Address before: No.2, Gongye Avenue, Zhangwei Township, Shuyang County, Suqian City, Jiangsu Province

Patentee before: Luo Sanjie

TR01 Transfer of patent right