CN101504626B - 一种调试控制实现方法及系统 - Google Patents

一种调试控制实现方法及系统 Download PDF

Info

Publication number
CN101504626B
CN101504626B CN2009101058441A CN200910105844A CN101504626B CN 101504626 B CN101504626 B CN 101504626B CN 2009101058441 A CN2009101058441 A CN 2009101058441A CN 200910105844 A CN200910105844 A CN 200910105844A CN 101504626 B CN101504626 B CN 101504626B
Authority
CN
China
Prior art keywords
breakpoint
thread
task
debugging
current
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.)
Active
Application number
CN2009101058441A
Other languages
English (en)
Other versions
CN101504626A (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN2009101058441A priority Critical patent/CN101504626B/zh
Publication of CN101504626A publication Critical patent/CN101504626A/zh
Application granted granted Critical
Publication of CN101504626B publication Critical patent/CN101504626B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种调试控制实现方法,包括断点的插入和删除过程,所述断点插入过程是通过内核调度时插入仅对当前切入的线程或任务有效的断点实现的;所述断点删除过程是通过内核调度需要切出所述线程或任务时,删除所述断点实现的。本发明还公开了一种调试控制系统。本发明在内核调度时对当前切入的线程或任务插入对其有效的断点,对当前线程或任务无效的断点则不会插入代码段,这样在调试中产生的调试事件均为有效事件,避免了无效事件对调试的影响,提高了调试效率;本发明在调度切入线程或任务时插入断点,这样在处理当前调试事件时也不需要控制其它线程或任务停止以及恢复,进一步提高了调试效率,也避免了漏断点事件的发生。

Description

一种调试控制实现方法及系统
技术领域
本发明涉及计算机领域的调试器技术,尤其涉及一种可用于多线程或多任务的调试控制实现方法及系统。
背景技术
随着信息技术的不断发展,软件的规模不断扩大并且复杂度也不断提高,对调试器在功能上有更多的需求;同时在调试效率和调试稳定性也有更高的要求。
目前在通用的桌面操作系统上已经有很多比较成熟的集成开发调试环境。但目前在嵌入式系统上却没有成熟的调试器实现方案。主要原因在于:首先很多嵌入式系统的操作系统不支持调试,无法调试用户程序;其次嵌入式系统对调试器要求也比较高,因为它与通用的桌面操作系统相比对软件实时性能要求高;再者,嵌入式系统硬件环境方面又存在很多限制,如存储空间大小、CPU性能等等。因此嵌入式系统的调试器要求简洁高效且易于移植,但是目前的现有技术很难满足这一要求。
目前,现有调试器在调试多线程或多任务时还存在效率问题,尤其是在调试代码段共享的多线程或多任务时,效率问题更突出。在嵌入式系统中的用户程序有两种类型:①用户程序运行在用户态,在这种情况下同一进程中多个线程共享相同进程空间;②用户程序和操作系统都在同一地址空间,这种情况下用户的多任务程序也是共享同一地址空间。前者称为多线程,后者称为多任务。对于这种共享地址空间的多线程/多任务调试,现有的调试控制方案会产生很多无效的调试事件,调试器对于这些无效的调试事件的分析处理会严重影响被调试程序的执行;另外目前调试控制方案在处理有效的调试事件时也存在效率低下问题。
以目前应用最为广泛的调试器(GNU gdb)为例,现有技术的调试过程如下:
调试需求:被调试程序为一个多线程程序,为简单起见,假定其包括线程A1、B1、C1、D1、E1。该多线程程序在运行时都会调用一个公共函数function1。目前用户只希望了解到线程C1在遇到这个公共函数处的情况;在分析完成线程C1停止的情况后能够继续使其运行,并观察其再次遇到此公共函数时的情况。
针对这个调试需求,调试器需要在该公共函数处插入一个断点,然后分析发生的断点事件。仅将线程C1遇到此断点的事件作为有效事件,其他事件都作为无效事件。这个过程在目前调试器中的处理过程如下:
步骤1、插入断点;
步骤1.1、调试器通过操作系统提供的接口或信号机制将被调试的每个线程都停止;
步骤1.2、分析符号表查找到待插入断点的地址,并通过操作系统接口将此地址的原有的正常指令保存后替换为断点指令(在某些架构上为未定义指令)。将断点地址以及此位置的正常指令以及断点类型等信息保存到断点节点中,以便后续分析查找;
步骤1.3、调试器再次通过操作系统的接口恢复被停止的线程;
步骤2、调试事件分析处理过程:由于在进程中五个线程的代码空间共享,因此对于此公共函数代码段每个线程都会执行到断点指令处;对于线程A1,B1,D1,E1重复多次遇到这个断点的调试事件就是无效的调试事件,仅有线程C1遇到此断点的事件才是有效的调试事件;
步骤2.1、无效断点事件处理:对于线程B1遇到此断点的情况,调试器的处理过程;
步骤2.1.1、调试器获得断点事件后,通过操作系统接口将当前进程中其他线程停止;
步骤2.1.2、调试器匹配断点地址和其维护的断点节点中的地址;在分析此断点节点后,确认此断点对线程B1无效,需要线程B1继续运行;
步骤2.1.3、调试器调用操作系统接口将已插入断点指令的地址再恢复为原始正常指令;
步骤2.1.4、调试器调用操作系统接口或直接设置相关寄存器,控制线程B1执行汇编指令级单步;
步骤2.1.5、当线程B1单步结束后又会通过异常或信号通知调试器,此时调试器将前面恢复为正常指令的地址(function1)再插入断点指令,以便继续调试断点事件;
步骤2.1.6、调试器将所有线程都恢复运行;
步骤2.2、有效断点事件处理:如果线程C1遇到此断点的情况下,在步骤2.1.1和步骤2.1.2之后断点有效,将当前进程中所有线程都停止;然后再通过界面反馈线程C1遇到断点的事件;
步骤3、继续调试:如果用户需要继续运行并调试,则调试器需要执行步骤2.1.3到2.1.6的过程;
从以上步骤可以看出该调试过程效率低下并且对其他线程的干扰也很大,主要原因如下:
1.调试器处理的所有调试事件中实际有效的调试事件(线程C1遇到断点)所占的比例比较低。如在上面例子中五个线程在情况均等的情况下有效断点事件仅占断点事件的五分之一,如果其他线程(A1,B1,D1,E1)调用公共函数代码(function1)的机会更多,发生的频率更快,则无效断点发生更多,调试效率将更低;
2.调试过程中无效的调试控制过程也比较多。如在上面的调试过程中,在当前线程C1遇到断点时候需要控制其他线程停止和运行。这种控制主要目的是避免遗漏断点事件(如果当前断点对其它线程也生效,假如在处理断点事件时没有将其他线程停止,则断点生效的其他线程有可能已经运行过了这个断点位置,这样就造成了漏断点的情况),但这个处理却给其他线程代来了额外的干扰,而且也影响调试的效率。
综上所述,现有调试器存在效率低下的问题。而嵌入式系统对实时性要求比较高,效率低下问题可能直接导致逻辑错误,因此在嵌入式系统上需要一个更加高效而稳定的调试器方案。
发明内容
本发明要解决的技术问题是提供一种高效稳定的调试控制实现方法及系统。
本发明的技术问题是通过以下技术方案加以解决的:
一种调试控制实现方法,包括断点的插入和删除过程,所述断点插入过程是通过内核调度时插入仅对当前切入的线程或任务有效的断点实现的;所述断点删除过程是通过内核调度需要切出所述线程或任务时,删除所述断点实现的。
上述方法,还包括在断点插入后,对所述当前切入的线程或任务进行调试时,在调试异常上下文中利用调试异常处理所述线程或任务中的调试事件的过程。
上述调试事件的处理过程包括利用断点异常处理所述当前调度切入的线程或任务中的断点事件的过程。
上述调试事件的处理过程包括利用单步异常处理所述当前调度切入的线程或任务中的单步事件的过程。
上述断点的插入过程具体包括以下步骤:
步骤A1、分析调度切入的线程或任务,获取对当前切入的线程或任务有效的断点;
步骤B1、将步骤A1所述的断点插入到代码段;
步骤C1、保存断点插入前的原始指令。
上述断点删除过程具体包括以下步骤:
步骤A2、分析调度切出的线程或任务,获取当前要切出的线程或任务有效的断点;
步骤B2、从代码段中删除步骤A2所述的断点;
步骤C2、恢复断点插入前的原始指令。
一种调试控制系统,包括调试任务处理模块和内核处理模块,所述调试任务处理模块包括断点管理单元、上报事件管理单元,所述内核处理模块包括调度处理单元,用于在内核调度时,插入仅对当前切入的线程或任务有效的断点;还用于在内核调度需要切出所述线程或任务时,删除所述断点。
上述调度处理单元还用于在内核调度时从所述断点管理单元获得要插入或删除的断点信息。
上述内核处理模块还包括调试异常处理单元,用于对所述当前切入的线程或任务进行调试时,在调试异常上下文中利用调试异常处理所述线程或任务中的调试事件。
上述调试异常处理单元包括断点异常处理子单元,用于断点插入后,利用断点异常来处理所述当前调度切入的线程或任务中的断点事件。
上述调试异常处理单元还包括单步异常处理子单元,用于断点插入后,利用单步异常来处理所述当前调度切入的线程或任务中的单步事件。
本发明与现有技术相比较的有益效果是:
(1)本发明在内核调度时对当前切入的线程或任务插入对其有效的断点,对当前线程或任务无效的断点则不会插入到代码段,这样在调试中产生的调试事件均为有效事件,避免了无效事件对调试的影响,提高了调试效率;本发明在调度切入线程或任务时插入断点,这样在处理当前调试事件时也不需要控制其它线程或任务停止以及恢复,进一步提高了调试效率,也避免了漏断点事件的发生;
(2)本发明在调试异常上下文中利用断点异常或单步异常处理当前线程或任务的断点事件和单步事件等调试事件,无需通过其他机制(如信号)将调试事件传递给调试器,处理效率高,还避免了在外部调试统一处理过程中干扰其他的线程或任务;
(3)本发明对地址空间共享的多线程或多任务,其调试效率优势明显,并能满足实时性要求较高的嵌入式系统的调试需要。
附图说明
图1是本发明系统具体实施方式结构示意图;
图2是本发明具体实施方式断点数据结构示意图;
图3是本发明具体实施方式断点数据结构索引表示意图;
图4是本发明方法具体实施方式断点插入和删除流程图;
图5是本发明方法具体实施方式断点异常处理流程图;
图6是本发明方法具体实施方式单步异常处理流程图。
具体实施方式
下面用具体实施方式结合附图对本发明做进一步详细说明。
本发明调试控制系统的一种具体实施方式,如图1所示,包括调试任务处理模块和内核处理模块。内核处理模块为本实施方式的主体部分,实现被调试程序的控制以及断点和单步等调试逻辑的处理;调试任务处理模块主要完成用户接口部分,并配合内核处理模块实现整个调试控制系统。
本实施方式中,调试任务处理模块在部署上可以采用两种方式:一种是将该模块完全放在目标机上;另一种是采用交叉调试的方式,该模块分为两个部分,其中一部分设置在目标机上,另一部分设置在调试主机上。本实施方式中,该模块可以以一个进程或任务的形式存在。调试任务处理模块包括用户命令处理单元、断点管理单元、被调试程序管理单元和上报事件处理单元。用户命令处理单元用于分析用户命令,并通过内核处理模块和断点管理单元、被调试程序管理单元等共同完成用户命令。断点管理单元用于维护断点数据结构,如图2、图3所示。本实施方式提供两种维护方式:①断点地址的维护方式;②任务关联的维护方式。被调试程序管理单元则用于维护被调试的线程或任务,管理各个线程或任务状态。上报事件管理单元用于维护被调试的程序发生的任何事件,根据调试规则反馈给用户。
内核处理模块包括调度处理单元、调试异常处理单元。调度处理单元用于在内核调度过程中分析调度切出的任务,通过查询断点管理单元获取该切出此线程或任务相关联的断点,将这些断点从代码段中删除并恢复为原始指令;再分析调度切入的线程或任务,通过断点管理单元获取此线程或任务相关联的断点,将这些断点插入到代码段并保存原始指令。本实施方式中,内核调度处理单元通过回调钩子注册在操作系统调度处。调试异常处理单元,用于处理当前调度切入的线程或进程中的调试事件,其进一步包括断点异常处理子单元和单步异常处理子单元。断点异常处理子单元用于在断点异常中处理断点事件。断点异常(Exceptions)为CPU的一种调试异常资源,在执行到断点指令(某些架构下为未定义指令)时进入此异常。断点异常处理子单元在断点异常中处理当前线程或任务遇到的断点事件,通过断点管理单元查找到当前断点并按照此断点节点定义的规则处理。如果需要停止则组织上报消息通过上报事件管理单元上报给用户。如果需要继续运行首先锁中断,然后恢复断点并控制当前线程或任务进行单步,当单步结束后,在单步异常中重新插入断点并恢复中断,继续运行当前任务。单步异常处理子单元用于在单步异常中处理单步事件。单步异常也是CPU的一种调试资源,在单步异常中可以处理各种情况下的单步事件。单步事件包括跨断点的单步情况和用户要求的单步命令。本实施方式中,用户的单步命令处理过程如下:在调试任务处理模块中将用户要求的源代码单步或汇编单步转化为单步的PC地址范围,并设置到被调试程序管理单元中,通过系统调用进行单步控制,在单步异常中判断单步范围是否结束,如未结束则继续单步,直到单步遇到断点或超出单步范围后停止,通过上报事件管理单元将单步命令停止后的情况反馈给用户。本实施方式中,断点异常处理子单元和单步异常处理子单元可以通过回调钩子注册在操作系统中,也可以直接挂接到CPU异常向量表中。
本实施方式中,调试任务处理模块和内核处理模块协同完成了一种高效的调试控制实现方案。该方案可以:
(1)在调试过程中控制调试事件的发生:只发生有效的调试事件,不发生无效的调试事件;
(2)调试器处理调试事件时仅控制当前遇到调试事件的线程或任务,而不干扰其他线程或任务,不做额外的调试控制工作;
(3)调试器在处理调试事件过程中保证了调试逻辑的严谨性,不发生漏断点的情况。
本发明调试控制实现方法,其一种实施方式,以多线程程序(包括线程A2,B2,C2,D2,E2)为例,在这些线程的公共函数function2中,插入一个仅对线程C2生效的局部断点P。下面对断点P的调试过程做详述。
步骤S1、插入断点P:用户通过调试任务处理模块设置断点P。断点P位置在函数function2中,仅对线程C2生效。用户命令处理单元分解此命令后,将整理后断点信息通过断点管理单元保存,本实施方式的断点信息数据结构如图2、图3所示,为描述简单起见,图2中仅列出了三个线程;
步骤S2、线程C2运行到function2处;其分为子步骤S21、S22;
步骤S21、线程C2遇到function2处断点P。
内核调度时选择线程C2作为切入的任务,调度处理单元进行处理,线程C2获得运行后遇到function2处的断点P,其处理过程如图4所示,包括以下步骤:
步骤401、查询切出的任务是否存在有效断点,若存在转步骤402;否则转步骤403;
步骤402、删除切出任务有效的断点,即恢复代码段中断点位置为原始指令;
步骤403、查询切入任务(线程C2)是否存在有效断点,对于线程C2来说,其存在有效断点P,转步骤404;
步骤404、将切入任务(线程C2)关联的断点P插入到代码段中,并保存原始指令到断点数据结构中;
步骤405、分析切入任务(线程C2)是否正在跨断点,若存在跨断点则转步骤406;否则调度切换返回;
步骤406、删除当前需要跨过的断点,再调度切换返回。
步骤S22、线程C2的断点事件处理:在线程C2遇到断点P后,进入断点异常,其处理流程如图5所示,包括以下步骤:
步骤501、为了避免在处理断点P过程中循环遇到断点,先将当前线程关联的断点都删除;
步骤502、禁止内核的任务调度,保证处理当前断点事件过程不发生其它的调试事件;
步骤503、处理当前线程发生的断点事件,查询分析当前断点的属性是否应该将线程C2停止,如果没有其他的条件或忽略的断点属性,线程C2应该停止,转步骤504;否则转步骤508;
步骤504、在断点异常中组织上报数据并通过上报事件管理单元将此事件反馈给用户;
步骤505、恢复调度;
步骤506、线程C2在断点异常中保持被挂起状态,直到用户要求其继续运行或终止调试为止;
步骤507、根据用户的命令是否终止调试,终止调试则断点异常返回;继续调试则转步骤508;
步骤508、设置任务跨断点标志;
步骤509、设置寄存器进入单步异常;
断点异常处理完毕,断点异常返回;
步骤S3、线程A2运行到function2处:内核调度时选择线程A2做为切入的任务,其处理流程,如图4所示,包括上述步骤401、步骤402,在步骤403处,因为断点P对线程A2无效,所以,直接调度切换返回;
通过线程A2和线程C2运行到function2处的流程可以看出:虽然function2函数每个线程都会调用到,但是仅有线程C2才有可能遇到function2函数中的局部断点P。这样就避免了无效调试事件的发生,从而提高了调试控制的效率;
步骤S4、线程C2继续运行,其包括步骤S41和步骤S42;
步骤S41、线程C2跨断点:当用户需要继续调试线程C2时,在用户命令处理单元中设置C2线程的跨断点标志,并通过系统调用设置线程C2的单步寄存器。内核调度选择线程C2做为切入的任务,调度处理单元根据图4所示的流程进行处理。在步骤405中,由于线程C2中设置了跨断点标志,线程C2停在function2断点P处,因此删除此处的断点,转入步骤406。调度切换返回,线程C2获得运行;
步骤S42、线程C2继续运行:线程C2的当前位置没有断点,可以正常运行,但是线程C2被设置了单步寄存器。因此在执行一条汇编指令时进入单步异常处理流程,如图6所示,其包括以下步骤:
步骤601、清空任务单步寄存器标志;
步骤602、分析当前线程是否在进行汇编单步,是则转步骤605;否则转步骤603;
步骤603、判断任务是否在范围内单步,如果是则转步骤611;如果不是,则转步骤604;
步骤604、判断任务是否在跨断点,如果是转步骤613;否则转步骤605;
步骤605、禁止任务调度;
步骤606、清空任务跨断点标记;
步骤607、清空范围内单步标记和汇编单步标记;
步骤608、上报单步停止事件;
步骤609、恢复任务调度;
步骤610、挂起当前任务,直到用户发出继续运行或停止调试的命令;完成单步异常处理,返回;
步骤611、判断当前PC是否仍在单步范围内,是则转步骤612;否则转步骤605;
步骤612、设置继续单步标志,转步骤604;
步骤613、当前线程有效断点(function2处断点P)再插入到代码段中;
步骤614、判断继续单步标志是否置位,是则转步骤615;否则转步骤616;
步骤615、设置任务单步寄存器;
步骤616、判断当前任务是否要跨断点,是则转步骤617;否则单步异常返回,线程C2继续运行;
步骤617、恢复待跨断点位置的原始指令,单步异常返回;
从以上断点调试流程可以看到,线程C2停止在对其有效的断点情况下以及后续再继续运行调试处理流程中,都仅控制线程C2而无需干扰其它的线程运行,使得整个处理过程简洁高效;
步骤S5、线程C2讲行单步调试:当线程C2停止在function2代码处时,如果用户不是继续运行而是希望单步调试,则按照下面的流程进行处理。单步调试分为步骤S51汇编级单步和步骤S52源代码单步;
步骤S51、汇编级单步:在用户命令处理单元中设置C2线程的跨断点标志和汇编单步标志,并通过系统调用设置线程C2的单步寄存器。在调度处理单元中进行步骤S41的流程后,线程获得调度;
线程C2在运行了一条汇编指令后进入到单步异常中,在单步异常中采用图6所示的流程进行处理:清空相关标记后,判断线程C2设置了汇编单步标记;然后清空相关标记后组织上报单步停止事件;在单步异常返回后线程被挂起。此时用户在界面上就可看到线程C2完成了一个汇编级单步;
步骤S52、源代码单步:源代码单步类似与上述的汇编级单步,不同之处在于汇编单步仅执行一条汇编指令,而源代码单步则要执行当前源代码对应的多条汇编指令。
在用户命令处理单元中解析需要单步的源代码,分解为源代码开始的PC地址和结束的PC地址。然后设置C2线程的跨断点标记和范围内单步标记以及范围的开始地址和结束地址;最后通过系统调用设置线程C2的单步寄存器。在调度处理单元中进行步骤S41的流程后,线程获得调度。
线程C2在运行了一条汇编指令后进入到单步异常中,在单步异常中采用图6所示的流程进行处理。清空相关标志后,判断线程C2的单步类型。由于线程C2设置了范围内单步标记,则进一步分析当前停止的PC地址是否在范围内。如果仍然在范围内,则插入有效断点后继续进行单步控制,在单步完成后重新进入单步异常,并继续按照图6所示的流程进行处理。
如果分析到当前停止的PC地址已经超出了单步范围,则清空相关标记后,组织上报源代码单步结束事件。此时用户在界面上就可看到线程C2完成了一个源代码单步。
如果线程C2仍然在此范围内,但是遇到断点,则进入断点处理流程,如图5所示。同步骤S22的处理,判断线程C2是否应该被此断点停止。如果应该停止则认为范围内单步结束,并上报断点事件;如果不应该停止则设置跨断点标志并设置单步寄存器,之后重新进入单步异常并再判断当前地址是否超出范围。
通过以上单步调试的流程可以看出,单步过程仅控制线程C2,而没有影响到其他的线程。因此单步控制过程也是逻辑严谨并且高效的。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (9)

1.一种调试控制实现方法,包括断点的插入和删除过程,其特征在于:所述断点插入过程是通过内核调度时插入仅对当前切入的线程或任务有效的断点实现的;所述断点删除过程是通过内核调度需要切出所述线程或任务时,删除所述断点实现的;
所述断点的插入过程具体包括以下步骤:
步骤A1、分析调度切入的线程或任务,获取对当前切入的线程或任务有效的断点;
步骤B1、将步骤A1所述的断点插入到代码段;
步骤C1、保存断点插入前的原始指令;
所述断点删除过程具体包括以下步骤:
步骤A2、分析调度切出的线程或任务,获取对当前要切出线程或任务有效的断点;
步骤B2、从代码段中删除步骤A2所述的断点;
步骤C2、恢复断点插入前的原始指令。
2.根据权利要求1所述的方法,其特征在于:还包括在断点插入后,对所述当前切入的线程或任务进行调试时,在调试异常上下文中利用调试异常处理所述线程或任务中的调试事件的过程。
3.根据权利要求2所述的方法,其特征在于:所述调试事件的处理过程包括利用断点异常处理所述当前切入的线程或任务中的断点事件的过程。
4.根据权利要求2所述的方法,其特征在于:所述调试事件的处理过程包括利用单步异常处理所述当前切入的线程或任务中的单步事件的过程。
5.一种调试控制系统,包括调试任务处理模块和内核处理模块,所述调试任务处理模块包括断点管理单元和上报事件管理单元,所述断点管理单元用于维护断点数据结构,所述上报事件管理单元用于维护被调试的程序发生的任何事件,并根据调试规则进行反馈,其特征在于:所述内核处理模块包括调度处理单元,用于在内核调度时,插入仅对当前切入的线程或任务有效的断点,具体为:调度处理单元用于分析调度切入的线程或任务,并获取对所述当前切入的线程或任务有效的断点,以及用于将所述有效的断点插入到代码段并保存断点插入前的原始指令;还用于在内核调度需要切出所述线程或任务时,删除所述断点,具体为:调度处理单元用于分析调度切出的线程或任务,获取对当前切出线程或任务有效的断点,并从代码段中删除所述有效的断点,恢复断点插入前的原始指令。
6.根据权利要求5所述的系统,其特征在于:所述调度处理单元还用于在内核调度时从所述断点管理单元获得要插入或删除的断点信息。
7.根据权利要求5所述的系统,其特征在于:所述内核处理模块还包括调试异常处理单元,用于对所述当前切入的线程或任务进行调试时,在调试异常上下文中利用调试异常处理所述线程或任务中的调试事件。
8.根据权利要求7所述的系统,其特征在于:所述调试异常处理单元包括断点异常处理子单元,用于断点插入后,利用断点异常来处理所述当前切入的线程或任务中的断点事件。
9.根据权利要求7所述的系统,其特征在于:所述调试异常处理单元还包括单步异常处理子单元,用于断点插入后,利用单步异常来处理所述当前切入的线程或任务中的单步事件。
CN2009101058441A 2009-03-06 2009-03-06 一种调试控制实现方法及系统 Active CN101504626B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101058441A CN101504626B (zh) 2009-03-06 2009-03-06 一种调试控制实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101058441A CN101504626B (zh) 2009-03-06 2009-03-06 一种调试控制实现方法及系统

Publications (2)

Publication Number Publication Date
CN101504626A CN101504626A (zh) 2009-08-12
CN101504626B true CN101504626B (zh) 2012-06-06

Family

ID=40976879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101058441A Active CN101504626B (zh) 2009-03-06 2009-03-06 一种调试控制实现方法及系统

Country Status (1)

Country Link
CN (1) CN101504626B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649504A (zh) * 2016-10-11 2017-05-10 曙光信息产业(北京)有限公司 策略控制方法及系统

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063366B (zh) * 2009-11-18 2014-12-31 中兴通讯股份有限公司 调试进程的方法和系统
CN102346708B (zh) * 2010-08-03 2014-07-16 中兴通讯股份有限公司 一种调试器及其调试方法
CN102981957B (zh) * 2012-11-30 2015-03-18 福建天晴数码有限公司 虚断点脚本调试方法
CN103699481A (zh) * 2013-12-03 2014-04-02 华为技术有限公司 一种代码调试方法及调试系统
CN105224454B (zh) 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105354136B (zh) 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105718374A (zh) * 2016-01-26 2016-06-29 国家信息技术安全研究中心 一种热点模块指令跟踪的方法及系统
CN109308213B (zh) * 2017-07-27 2021-10-01 南京南瑞继保电气有限公司 基于改进任务调度机制的多任务断点调试方法
CN109471800B (zh) * 2018-10-31 2021-09-07 中国航天系统科学与工程研究院 一种基于Windows操作系统的软件无限断点设置方法
CN110457121B (zh) * 2019-07-26 2022-02-01 中国人民解放军军事科学院国防科技创新研究院 一种支持用户态任务动态调度的探针方法和装置
CN111858325A (zh) * 2020-07-13 2020-10-30 北京机电工程研究所 基于海鹰翼辉操作系统的任务级实时调试装置及方法
CN114253837B (zh) * 2021-11-22 2023-03-24 杭州加速科技有限公司 一种ate测试机程序的多线程调试方法、系统及测试机台

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649504A (zh) * 2016-10-11 2017-05-10 曙光信息产业(北京)有限公司 策略控制方法及系统

Also Published As

Publication number Publication date
CN101504626A (zh) 2009-08-12

Similar Documents

Publication Publication Date Title
CN101504626B (zh) 一种调试控制实现方法及系统
CN102576331B (zh) 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法
CN101377750B (zh) 一种用于机群容错的系统和方法
CN101278265B (zh) 用于收集剖析信息的方法和用于优化代码段的系统
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
Fang et al. Interruptible tasks: Treating memory pressure as interrupts for highly scalable data-parallel programs
CN101556545B (zh) 一种实现进程支持的方法、装置和多线程系统
CN104380264A (zh) 运行时间检测报告
JP5326374B2 (ja) プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法
CN104205064A (zh) 将程序事件记录事件向运行时间检测事件的变换
CN102314391A (zh) 一种基于硬件基础工具监视虚拟化系统性能的架构及方法
CN104364769A (zh) 处理器特性的运行时间检测监控
JPH10301807A (ja) コンピュータソフトウェアの評価のための高速トラップ
CN102955737A (zh) 异构处理器体系的程序调试方法和系统
CN112559159A (zh) 一种基于分布式部署的任务调度方法
CN107168773A (zh) 一种jvm崩溃后问题定位及应用恢复的处理方法及装置
US20080244592A1 (en) Multitask processing device and method
CN101685420B (zh) 多线程调试方法和装置
Schneider et al. Migration of automotive real-time software to multicore systems: First steps towards an automated solution
CN101625659A (zh) 嵌入式系统实时监控内存的方法
CN101216802B (zh) 一种交叉调试器中条件断点实现方法
CN113821257B (zh) 处理器内核调用栈信息查询方法及装置
Ezzati-Jivan et al. Depgraph: Localizing performance bottlenecks in multi-core applications using waiting dependency graphs and software tracing
US20050066305A1 (en) Method and machine for efficient simulation of digital hardware within a software development environment
US20120159451A1 (en) Identifying threads that encounter an instruction at which another thread is halted

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant