CN101208667B - 调试***及方法 - Google Patents
调试***及方法 Download PDFInfo
- Publication number
- CN101208667B CN101208667B CN2006800227201A CN200680022720A CN101208667B CN 101208667 B CN101208667 B CN 101208667B CN 2006800227201 A CN2006800227201 A CN 2006800227201A CN 200680022720 A CN200680022720 A CN 200680022720A CN 101208667 B CN101208667 B CN 101208667B
- Authority
- CN
- China
- Prior art keywords
- operation unit
- unit
- activation instruction
- debugged program
- program
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3632—Software debugging of specific synchronisation aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
在收到从通信端口(1)发送的调试程序激活指令后,调试程序激活指令分发单元(61及71)将收到的调试程序激活指令分发给由这些激活指令指定的运行单元。调试程序激活单元(62及72)针对每个运行单元(A和B)被提供,并基于激活指令分发单元(61及71)分发的激活指令,在由这些激活指令指定的运行单元上激活调试程序(63及73)。
Description
技术领域
本发明涉及调试***、调试方法及程序,更具体而言,本发明涉及具有多个运行单元的***中的调试***、调试方法及程序。
背景技术
近年来程序开发规模有了显著增长,调试任务所需时间对产品开发进度有了越来越多的影响。结果,需要构建一个能够使调试的执行更有效率的环境。诸如专利文献1“Processor Information Collector and ProgramRecording Medium Therefor”描述的调试***之类的使用诊断处理器来支持调试的方法是一种有效地执行调试的方法。
如图1所示,这类现有技术的调试***配备有算术处理器组801、存储器设备802以及用于监控算术处理器组801的操作状态的诊断处理器803。诊断处理器803还配备有:用于检测组成算术处理器组801的算术处理器的每一个的停止状态的停止检测器831,用于收集算术处理器的内部状态的收集器832,用于将算术处理器的内部状态保存在存储器设备802中的写单元834,以及用于初始化信息处理***同时使存储器设备802中算术处理器的内部状态保持不变的初始化单元836。
现有技术的这类配置的调试***操作如下。
停止检测器831首先检测组成算术处理器组801的算术处理器是否已进入停止状态。当停止发生时,收集器832收集算术处理器的内部状态并将所收集的算术处理器的内部状态写入存储器设备802作为算术处理器内部状态821。然后利用存储器设备802中保存的未加改变的算术处理器的内部状态来初始化信息处理***。由于算术处理器的内部状态的信息即使在初始化之后也保存在存储器设备802中,因此该信息可用于执行有关停止发生的状态的调试操作。
虽然如专利文献1描述的现有技术之类的***中安装作为用于调试的高端(high-function)专用硬件的诊断处理器803的方法可以取得提高调试效率的效果,但该方法具有需要增加不对正常操作有帮助的额外硬件以及提高***成本的缺点。此外,意味着组件内建的设备成本增加的要求特别严格,这常常阻碍专用硬件的安装。
另一方面,半导体集成电路的小型化和***LSI的更多功能需求导致多个诸如CPU之类的运行单元在***LSI中的安装量的增加。专利文献2“Resetting Circuit and Resetting Method for Multiple CPU”中公开的调试***是用于增加调试效率同时避免用于调试的专用硬件所造成的成本增加的现有技术的示例。
如图2所示,现有技术的这类调试***配备有用于控制包含多个CPU(CPU-A901和CPU-B902)的***LSI的重置和中断的CPU控制电路903。CPU控制电路903具有将多个CPU(CPU-A901和CPU-B902)之一设置到调试装置中的能力,所述调试装置中用于正常操作的程序被用于调试的程序所取代。此外,CPU控制电路903还配备有:中断控制电路904、总线跟踪功能905、母线(strap)采集电路906和调试控制电路907。
参考图3,本说明接下来涉及具有这类配置的现有技术调试***的操作。
首先,当CPU控制电路903检测硬件重置时,调试控制电路907发布用于重置每个内部功能块(未示出)的命令(步骤S91)。
母线采集电路906接下来从母线设置单元908读取诸如母线信息之类的外部设置信息(步骤S92)。
当已被读取的母线信息指示正常操作时(步骤S93中的“否”),调试控制电路907基于已被读取的母线信息取消对CPU-A901和CPU-B902以及对每个功能块的重置(步骤S94)。
当重置被取消时,每个功能块开始工作(步骤S95)。
另一方面,当已被读取的母线信息指示调试时(步骤S93中的“是”),调试过程开始(步骤S96)。
当母线信息选择CPU-B902作为调试器时(步骤S961中的“B”),调试控制电路907取消对已被母线信息选择的CPU-B902的重置(步骤S962)。
然后调试器CPU-B902被激活(步骤S963),并且当完成启动操作后(步骤S964中的“是”),目标CPU-A901和每个功能块的重置被取消(步骤S965)。
另一方面,当母线信息选择CPU-A901作为调试器时(步骤S961中的“A”),调试控制电路907取消对已被母线信息选择的CPU-A901的重置(步骤S966)。
然后调试器CPU-A901启动(步骤S967),并且当完成启动操作后(步骤S968中的“是”),目标CPU-B902和每个功能块的重置被取消(步骤S969)。
当调试在多个运行单元执行相连操作的***中运行的程序时,涉及多个运行单元之间通信的并且可由除运行单元之外的组件从外部检查的信息或者在差错发生期间生成的信息被保存然后被检查。但是在本方法中,差错发生的原因在很多情况下无法充分调查。另一方面,当使用人工生成由正常操作程序或向调试技术员汇报发送/接收内容的调试程序生成的发送内容的调试程序时,差错发生的原因通常可被有效地调查。因此在运行单元上实施这些调试程序以执行调试任务。
但是,事先实施这些调试程序会增加CPU的负荷,并且由于调试程序使用存储区域,会影响正常操作程序的操作定时。结果,调试程序的存在具有阻碍正常操作中可能发生的差错的发生,以及相反,导致只运行正常操作程序时不应发生的差错的发生的缺点。
另外,在多个运行单元执行相连操作的***内运行的程序中,发生差错特别是定时产生的差错的运行单元无法唯一确定,因此这类差错的发生很难预测。当运行单元进入停止状态或者对运行单元的操作有影响的差错发生时,调试程序可能对处于停止状态的运行单元不可用,或者调试程序可能对受影响的操作所处的运行单元不可用。结果,可能必须在不同的运行单元中操作调试程序。但是,当差错发生的位置无法唯一确定时,不受差错影响的运行单元也无法确定。
专利文献2描述的现有技术的方法的特征是在重置时指派激活调试程序的运行单元(调试CPU),并且在改变调试CPU时必须再次执行重置。结果,当对已在重置时指派的调试CPU的操作有影响的差错发生时,状态不能被调试。
如上所述,在现有技术的上述调试***中,当在多个运行单元(CPU)执行相连操作的***中执行调试时会出现以下问题:
(1)当调试程序被事先激活时,操作定时与只运行正常操作程序的情况不同,因此调试程序的存在阻碍了正常操作中可能发生的差错的发生,或者相反,导致只运行正常操作程序时不应发生的差错发生。
(2)将运行调试程序的运行单元必须事先设置,但对已被设置的运行单元的操作有影响的差错的发生阻碍了对状态的调试。
专利文献1:JP-A-H11-184736
专利文献2:JP-A-2004-164113
发明内容
鉴于上述问题完成本发明,其目标是提供在多个运行单元执行相连操作的***中允许在任何时刻任何运行单元上激活调试程序以执行调试任务的调试***、调试方法及程序。
为了取得上述目标,本发明的调试***是用于执行对多个运行单元执行相连操作的***中运行的程序的调试的调试***,所述调试***包括:
激活指令分发装置,用于在当前运行单元发生差错时,在收到指示激活调试程序的激活指令后,将所述激活指令分发到由所述激活指令指定的运行单元,或者从多个运行单元中自动选择某些运行单元作为激活指令的分发目的地,并将激活指令分发给所选择的运行单元;以及
多个调试程序激活装置,它们对应于多个运行单元中的每一个被提供,用于基于已由激活指令分发装置分发的激活指令在相应的运行单元上激活调试程序。
激活指令分发装置可向对应于已由激活指令指定的运行单元的调试程序激活装置发送激活指令。
根据本发明,用于激活调试程序的调试程序激活装置被提供给每个运行单元,且该调试程序激活装置基于由激活指令分发装置分发的激活指令来执行调试程序的激活。结果,任何时刻,甚至是在只运行正常操作程序的状态中已确认差错时,都可以在执行作为差错发生原因的过程的运行单元上激活调试程序并执行调试操作。
此外,激活指令分发装置可向与基于多个运行单元中的每一个的操作状态确定的运行单元相对应的调试程序激活装置发送激活指令。
激活指令分发装置还可检测多个运行单元中的每一个使用的存储区域的未占用容量,然后向与被检测的未占用容量中存在剩余的运行单元相对应的调试程序激活装置发送激活指令。
该配置可避免由于未占用容量不足无法激活调试程序的状态的发生。
激活指令分发装置还可向与作为调试目标的运行单元关系很小或无关的运行单元相对应的调试程序激活装置发送激活指令。
该配置可避免诸如在与执行导致差错发生的过程的运行单元一起执行相连操作的运行单元上激活调试程序之类问题的发生,从而避免了检查差错发生的原因。
本发明的另一个调试***还配备有中继(relay)装置,所述中继装置对应于多个运行单元的任意之一被提供,用来将从通信端口发往调试程序的命令中继到由激活指令指定的运行单元上的调试程序。
本发明可应用于作为通信端口的通信目标的运行单元固定的***。
本发明的另一个调试***还配备有多个中继装置,所述多个中继装置对应于多个运行单元中的每一个被提供,用来将从通信端口发往调试程序的命令中继到由激活指令指定的运行单元上的调试程序。
根据本发明,中继装置被提供给每个运行单元用于传递发往调试程序的命令,通过该命令,即使特定运行单元进入停止状态时,也可在不需要对作为通信端口的通信目标的运行单元进行复杂切换的前提下,在多个运行单元上同时激活多个调试程序。
本发明的另一个调试***还配备有停止运行单元避免装置,用于避免将激活指令发送到与处于停止状态的运行单元相对应的调试程序激活装置。
根据本发明,停止运行单元避免装置的配备可以避免调试程序激活指令被发送到与处于停止状态的运行单元相对应的调试程序激活装置的问题,从而避免了调试操作的运行。
另外,本发明的另一个调试***中,在多个运行单元中的任意一个中待激活的调试程序配备有:
物理-虚拟地址转换装置,用于将虚拟地址转换为物理地址;以及
信息提取装置,使用已被物理-虚拟地址转换装置转换的物理地址,并考虑到操作***在存储器中安排控制信息的结构,来从如下存储区域中提取必要信息:所述存储区域被作为调试目标并与激活了调试程序的运行单元不同的运行单元所使用。
根据本发明,调试程序中物理-虚拟地址转换装置和信息提取装置的配备允许调试程序参考被与已激活的运行单元不同的运行单元使用的存储区域。结果,即使作为调试目标的运行单元处于停止状态时,也可以从外部检查存储区域的内容。
另外,本发明的另一个调试***还配备有差错检测装置,用于从多个运行单元中检测发生差错的运行单元,并生成用于执行对已检出的运行单元的调试的激活指令。
根据本发明,当多个运行单元中的任意运行单元中发生差错时,用于调试差错的调试程序激活指令可由差错检测装置生成以自动激活调试程序。因此,调试任务可在不从外部生成调试程序激活指令的前提下执行。
另外,本发明的另一个调试***中,中断处理器作为多个运行单元中的每一个中发生中断时首先被激活用于处理中断的程序,其配备有:
信息获取/控制装置,当中断从另一个运行单元生成时,用于在已事先设置的存储器中获取信息;以及
响应生成装置,用于将已由信息获取/控制装置获取的信息发送到生成中断的运行单元;
并且,在多个运行单元中的任一个中激活的调试程序配备有:
运行单元间中断生成装置,用于对作为调试目标的运行单元生成中断;以及响应接收装置,用于接收来自作为调试目标的运行单元的响应。
根据本发明,中断处理器配备有用于在存储器中获取信息的信息获取/ 控制装置,并且调试程序配备有运行单元间中断生成装置,由此即使在作为调试目标的运行单元处于停止状态时,也可以获取诸如缓存器或寄存器之类的存储器中的信息来执行调试任务。
如上述说明所述,本发明中调试程序激活指令分发装置和调试程序激活装置的配备可以实现使得在任何时刻任何运行单元中能够激活调试程序的配置,因此本发明可以获得导致在只运行正常操作程序的状态中生成差错的效果,或者可以继续操作直至差错生成的前一刻然后在执行导致差错发生的过程的运行单元中激活调试程序,然后实施调试任务。
附图说明
图1是示出传统调试***的配置示例的框图;
图2是示出传统调试***的另一个配置示例的框图;
图3是用于说明图2所示调试***的操作的流程图;
图4是示出用于操作本发明的目标硬件的配置示例的框图;
图5是示出本发明的第一示例性实施例的调试***的配置的框图;
图6是示出图5所示调试程序激活指令分发单元的示例的框图;
图7是用于说明图5所示调试***的操作的流程图;
图8是用于说明图5和图6所示调试程序激活指令分发单元的操作的流程图;
图9是示出本发明的第二示例性实施例的调试***的配置的框图;
图10是示出本发明的第三示例性实施例的调试***的配置的框图;
图11是示出本发明的第四示例性实施例的调试***的配置的框图;
图12是用于说明图11所示停止运行单元避免单元的操作的流程图;
图13是示出本发明的第五示例性实施例的调试***的配置的框图;
图14是用于说明图13所示物理-虚拟地址转换器的第二物理-虚拟地址转换操作的流程图;
图15是用于说明图13所示信息提取器的操作的流程图;
图16是示出本发明的第六示例性实施例的调试***的配置的框图;
图17是用于说明图16所示差错检测器的第二配置的操作的流程图;
图18是用于说明图16所示差错检测器的第三配置的操作的流程图;
图19是用于说明图16所示差错检测器的第四配置的操作的流程图;
图20是示出本发明的第七示例性实施例的调试***的配置的框图;
图21是用于说明图20所示调试***的操作的流程图;
图22是示出本发明的第八示例性实施例的调试***的配置的框图;以及
图23是用于说明图22所示调试***的操作的流程图。
具体实施方式
参考附图,本说明接下来涉及本发明的实施例。
【第一示例性实施例】
参考附图,本说明首先涉及本发明的第一示例性实施例的调试***。
如图4所示,本示例性实施例的调试***配备有:两个运行单元A和B,通信端口1,诸如RAM(随机存取存储器)的可重写存储器单元2,以及例如由HDD(硬盘驱动器)组成并存储各种程序的程序存储单元3。存储器单元2的存储区域由运行单元-A程序区域6和运行单元-B程序区域7组成。
如图5所示,运行单元-A程序区域6配备有:调试程序激活指令分发单元(图5中表示为“分发单元”)61,调试程序激活单元(图5中表示为“激活单元”)62,调试程序63,以及正常操作程序64。这些组件被提供为在运行单元A上运行的程序。
另外,如图5所示,运行单元-B程序区域7还配备有调试程序激活指令分发单元71、调试程序激活单元72,调试程序73,以及正常操作程序74。这些组件被提供为在运行单元B上运行的程序。
这种情况下,调试程序激活指令分发单元61和71以及调试程序激活单元62和72在运行单元A和B上被激活之前仅被存储为存储器单元2中的程序而不执行各种操作。但是,为了简化说明,本文中调试程序激活指令分发单元61和71以及调试程序激活单元62和72被描述为单独执行各种操作的组件。
这些各种程序从程序存储单元3读入存储器单元2并存储到存储器单元2的预定区域。
在收到从通信端口1发送的调试程序的激活指令(下午简称为“激活指令”)后,调试程序激活指令分发单元61和71将收到的调试程序分发到由激活指令指定的运行单元。调试程序激活单元62和72对应于运行单元A和B的每一个被提供,并基于已由激活指令分发单元61和71分发的激活指令来激活相应的调试程序63和73。
如图6所示,调试程序激活指令分发单元61配备有:接收来自通信端口1的激活指令的接收器611;将激活指令发送到调试程序激活单元62的发送器614;使用运行单元间通信来将激活指令发送到其他运行单元B的发送器612;使用运行单元间通信来接收从其他运行单元B发送的激活指令的接收器615;以及改变作为通信端口1的通信目标的运行单元的通信目标改变单元613。
调试程序激活指令分发单元71类似地配备有:接收器711、发送器714、发送器712、接收器715以及通信目标改变单元713。
参考图5和图7的流程图,本说明接下来涉及本实施例的调试***的总体操作。
已作为外部控制终端(未示出)的输入被施加的激活指令首先被发送到通信端口1。该激活指令包括指定其中将激活调试程序的运行单元的代码,以及指定将被激活的调试程序的类型的代码。
这种情况下,已经收到来自通信端口1的调试程序激活指令(步骤S1)的调试程序激活指令分发单元61和71将该激活指令分发到激活指令中指定的并且其中将激活调试程序的多个运行单元,并将激活指令发布给调试程序激活单元62和72(步骤S2)。然后调试程序激活单元62和72激活调试程序63和73(步骤S3)。
当调试程序63和73接收来自通信端口1的命令(步骤S4)时,由调试程序63和73提供的命令分析单元(未示出)分析该命令。当从通信端口1接收的命令为调试命令(步骤S5中的“否”)时,根据该命令运行操作内容,并执行调试任务。在这种情况下,数据还可取决于操作内容通过通信端口1来发送和接收。当从通信端口1接收的命令为“结束”命令(步骤S5中的“是”)时,调试程序63和73结束该调试。
这种情况下的命令分析单元是用于分析收到的由调试程序63和73组 成的命令内容的装置。除了上述“结束”命令,命令类型例如还包括用于读取存储器或寄存器的内容的命令以及用于将值写入存储器或寄存器的命令。
参考图6和图8的流程图,本说明接下来涉及调试程序激活指令分发单元61和71的操作。此处的说明涉及通信端口1的中断目的地的初始值为运行单元A的情况。
首先,调试程序激活指令从通信端口1发送,中断对运行单元A生成(步骤S11)且激活指令分发单元61被激活。然后接收器11接收来自通信端口1的激活指令(步骤S12)并确定目的地。这种情况下,当目的地为运行单元A(步骤S21中的“是”)时,发送器614将激活指令发送到运行单元A的调试程序激活单元62(步骤S22)。另一方面,当目的地为运行单元B(步骤S21中的“否”)时,使用运行单元间通信的发送器612将激活指令发送到运行单元B(步骤S23)。当B侧运行单元上的激活指令分发单元71接下来通过接收器715接收该激活指令(步骤S24)时,通信目标改变单元713将通信端口1的通信目标改变为运行单元B(步骤S25),且发送器714将激活指令发送到调试程序激活单元72。
在本示例性实施例中,说明假设调试程序由来自通信端口1的调试程序激活指令的接收来激活。也可以有另一个配置,其中使用定时器来应用激活指令,由此调试程序在固定时间间隔流逝后被激活,然后此时的状态被检查。或者,根据设置断点(breakpoint)的方法或者作为调试目标的程序本身在到达特定点时发出激活指令的方法,程序可在程序到达特定位置时激活调试程序。
另外,虽然此处的说明涉及本实施例中***配备有两个运行单元A和B的示例,但本实施例很容易扩展到配备有诸如三个或更多数目的运行单元的***。
另外,虽然此处的说明涉及本实施例中激活调试程序的运行单元被事先指定且调试激活指令分发单元61和71将激活指令分发到由激活指令指定的运行单元的情况,但激活调试程序的运行单元被自动选择的配置也是可以的。例如,调试程序激活指令分发单元61和71可具有如下配置,其中激活指令被发送到与基于运行单元A和B的操作状态确定的运行单元相 对应的调试程序激活单元。这种情况下,运行单元A和B的操作状态例如指示运行单元A和B的每一个使用的存储区域的未占用容量或者运行单元A和B之间的连接状态。
当基于运行单元A和B的每一个的存储区域的未占用容量选择了分发目的地时,激活指令分发单元61和71可具有如下配置,其中运行单元A和B的每一个的存储区域的未占用容量被检测,且激活指令被分发到与被检测的未占用容量中存在剩余的运行单元相对应的调试程序激活单元。采用这类配置的模式包括运行单元A和B的每一个上的激活指令分发单元61和71检测未占用容量然后将未占用容量汇报给其他运行单元的模式,以及运行单元A和B的每一个上的激活指令分发单元61和71通过直接参考其他运行单元使用的存储区域来独立检测未占用容量的模式。
本示例性实施例的说明采用两个运行单元A和B执行相连操作的***作为示例。三个或更多运行单元A和B执行相连操作的***中使用的程序为调试目标时,激活指令的分发目的地可以通过查清连接状态来确定。
在这种情况下,激活指令分发单元61和71可具有如下配置,其中每个程序首先检测与其他程序的通信路径有保证,然后将激活指令分发到与执行相连操作且作为调试目标的程序关系很小或无关的运行单元。作为这种情况下检测通信路径已有保证的方法,可以采用由程序检测已执行了函数调用来保证通信路径的方法,或者可以采用调查保存了通信路径的状态的存储区域的方法。
另一方面,作为调试目标的程序与其他运行单元上工作的程序执行相连操作时,可以采用如下配置,其中激活指令不仅分发到作为调试目标的程序工作的运行单元,而且分发到相连的运行单元,然后相连的程序作为一个集合被当作调试目标。
说明接下来涉及本示例性实施例的调试***的效果。
在本示例性实施例中,调试程序激活指令分发单元61和71以及调试程序激活单元62和72一起被提供为在运行单元A和B上运行的程序,并且还具有如下配置,其中接收激活指令后在运行单元A和B任意之一上激活调试程序,由此可以实现增加调试任务的效率而不伴随由调试专用的硬件造成的成本增加。
另外,本示例性实施例中调试程序激活指令分发单元61和71以及调试程序激活单元62和72的配备使得调试程序可以在任何时刻任何运行单元上激活。结果,差错可以在只运行正常操作程序的状态中生成,或者可以运行正常操作程序直至差错生成的前一刻,接着可以在执行导致差错发生的过程的运行单元上激活调试程序,然后执行调试任务。
另外,本实施例中还可有如下配置,其中可以使用定时器来应用调试程序的激活指令,然后在固定时间间隔流逝后激活调试程序。该配置的采用可以消除调试技术员应用激活指令时产生的调试程序的激活定时发散(divergence)的影响,还可以高时间精度地调整激活定时。
另外,在本示例性实施例中,可采用如下配置,其中通过使用设置断点的方法或者作为调试目标的程序本身在到达特定位置时发出激活指示的方法,程序可在程序到达特定点时激活调试程序。采用这种类型的配置,即使情形阻碍通过只调整激活时刻对到达被观察位置的时刻的固定,调试程序也可在期望观察的时间点被激活。
此外,在有些情况下,存储区域被已运行的正常操作程序使用,因此调试程序无法被另外激活。另一方面,调试程序包括无论它们被激活的运行单元如何都可以执行调试任务的类型。在这种情况下,本示例性实施例中可采样如下配置,其中每个运行单元的存储区域的未占用容量被检测,且激活指令被分发到未占用容量有剩余的运行单元。采用这种类型的配置可以避免发出激活指令时由于未占用容量不足无法激活调试程序的运行单元。
另外,在运行涉及相连操作的程序的运行单元上激活调试程序对于执行相连操作且相连操作阻碍调试任务的程序的操作有影响。在这种情况下,本实施例可采用查清连接状态然后发出激活指令的配置。采用这种类型的配置,调试程序可在与运行连接了操作的程序的运行单元不同的运行单元上被激活。
【第二示例性实施例】
参考附图,本说明接下来涉及本发明的第二示例性实施例的调试***。
上述说明中描述的第一示例性实施例是将本发明应用到作为通信端口 的通信目标的运行单元可以改变的***的情况。但是,取决于***,存在一些作为通信端口的通信目标的运行单元无法改变,即作为通信端口的通信目标的运行单元是固定的***。当本发明被应用到这种类型的***时,即使为每个运行单元提供了调试程序激活指令分发单元,也无法将命令发送到已在非通信端口的通信目标的运行单元上激活的调试程序。
本示例性实施例的调试***具有可以被应用到作为通信端口的通信目标的运行单元是固定的***的配置。
如图9所示,本示例性实施例的调试***具有如下配置,其中与图5所示第一示例性实施例的配置相比,添加了用于中继在另一个运行单元中运行的调试程序的通信的中继单元65。
中继单元65是在两个运行单元A和B的运行单元A上运行的组件,并将从通信端口1向调试程序63和73发送的命令中继到已由激活指令指定的运行单元上的调试程序。
本示例性实施例中作为通信端口1的通信目标的运行单元固定为运行单元A。当来自通信端口1的命令的目的地为运行单元A时,中继单元65发送命令到运行单元A的调试程序63,来自通信端口1的命令的目的地为运行单元B时,中继单元65发送该命令到运行单元B的调试程序73。
本示例性实施例的激活指令分发单元61和71使得图6所示激活指令分发单元61和71的通信目标改变单元613和713、A侧运行单元上的运行单元间通***615以及B侧运行单元上的运行单元间通信发送器712和通信端口接收器711可以省略。
本示例性实施例的总体操作与本发明的第一示例性实施例的总体操作相同。不同于图8所示用于改变通信端口的通信目标的步骤的省略,激活指令分发单元61和71的操作与本发明的第一示例性实施例相同。
虽然本示例性实施例的说明涉及配备有两个运行单元A和B的***的示例,本实施例很容易扩展到诸如三个或更多数目的运行单元。
说明接下来涉及本示例性实施例的调试***的效果。
在本示例性实施例中,运行单元A程序区域6中提供了中继单元65用于中继通信到调试程序63和73,且该中继单元65的提供是为了将通信中继到在运行单元B中运行的调试程序73。因此本发明可被应用到作为通 信端口1的通信目标的运行单元固定为运行单元A且不可改变的***。此外,由于不直接与通信端口1通信的运行单元B上的调试程序73也可以通过中继单元65来进行通信,因此多个调试程序63和73可在多个运行单元A和B上同时使用。
【第三示例性实施例】
参考附图,本说明接下来涉及本发明的第三示例性实施例的调试***。
与第一示例性实施例的调试***相同,本示例性实施例的调试***是如下***,其中本发明被应用到允许作为通信端口的通信目标的运行单元改变的***。
在允许作为通信端口的通信目标的运行单元改变的***中,命令可以通过切换通信端口来发送到调试程序。但是,当多个调试程序同时运行时,料想切换通信端口中会出现问题。此外,改变作为通信端口的通信目标的运行单元的处理需要一定量的开销。
结果,即使作为通信端口的通信目标的运行单元可以改变,使用图9所示第二示例性实施例的调试***中的中继单元来将各种类型的命令中继到调试程序也能排除改变通信端口的处理需要并获得处理的减少。
但是,当采用该中继单元只在特定运行单元中提供的配置时,提供中继单元的运行单元中停止状态(stalled state)的发生也会阻碍中继单元本身发挥作用。
结果,本示例性实施例的调试***具有如下配置,其中为每个运行单元提供中继单元,以便即使在任何运行单元中发生停止状态,各种类型的命令也可被中继到调试程序。
下面的说明涉及将本发明应用到存在三个运行单元A、B和C的***中的情况。
如图10所示,本示例性实施例的调试***具有如下配置,与图5所示第一示例性实施例中的配置相比,新添加运行单元C程序区域8,还添加了A侧运行单元上的中继单元65、B侧运行单元上的中继单元75以及C侧运行单元上的中继单元85用于中继在其他运行单元中运行的调试程序的通信。
本实施例中的中继单元65、75和85是分别运行于三个运行单元A、B和C的组件;这些中继单元65、75和85将从通信端口1发往调试程序63、73和83的命令中继到已由激活指令指定的运行单元上的调试程序。
运行单元C程序区域8配备有:调试程序激活指令分发单元81,调试程序激活单元82,调试程序83和正常操作程序84。这些组件形成为在运行单元C上运行的程序。
本示例性实施例中激活指令分发单元61和71的操作类似于本发明的第一示例性实施例的操作。此外,激活指令分发单元81的操作类似于激活指令分发单元61和71的操作。但是,由于在激活第二及后续调试程序时切换被认为是无意义的,因此在激活指令分发单元61、71和81的操作中改变通信端口1的通信目标的步骤无需执行。
虽然说明涉及本示例性实施例中配备有三个运行单元A、B和C的***的示例,但本示例性实施例很容易扩展到任意数目的运行单元,如四个或更多。
说明接下来涉及本示例性实施例的调试***的效果。
在本示例性实施例中,在运行单元A、B和C的每一个中提供中继单元65、75和85用于中继通信到调试程序,且本实施例具有如下配置,允许在其他运行单元中运行的调试程序的通信在任何运行单元处被中继。结果,即使特定的运行单元中发生停止状态,多个调试程序63、73和83也可在多个运行单元A、B和C中同时使用而不需要麻烦地切换作为通信端口1的通信目标的运行单元A、B和C。
例如,在图10所示本示例性实施例的调试***中,描述了分别激活三个调试程序63、73和83的示例。
在图10的示例中,运行单元A被设为作为通信端口1的通信目标的运行单元。结果,各种类型的命令通过为运行单元A提供的中继单元65被中继到调试程序63、调试程序73和调试程序83。运行单元A由于任何原因进入停止状态时,中继单元65也停止发挥作用。结果,作为通信端口1的通信目标的运行单元从运行单元A变为运行单元B,且通过在运行单元B中提供的中继单元75可实现将各种命令中继到调试程序73和83。通过这种方式,调试程序可在两个运行单元B和C上同时被激活而无需为 每个通信切换作为通信端口1的通信目标的运行单元的麻烦处理,所述通信例如去往运行单元B的与调试程序73的通信以及去往运行单元C的与调试程序83的通信。
【第四示例性实施例】
参考附图,本说明接下来涉及本发明的第四示例性实施例的调试***。
在上述第一至第三示例性实施例中,调试程序激活指令被分发到由调试程序激活指令指定的运行单元或分发到由激活指令分发单元选择的运行单元。但是,有些情况下,调试程序将被激活的运行单元已进入停止状态,因此调试程序的激活是不可能的。
为了避免发生这类问题,本示例性实施例的调试***具有如下配置,其中当选择调试程序可以被激活的运行单元时,处于停止状态因此调试程序无法被激活的运行单元不被选择。
如图11所示,本示例性实施例的调试***具有如下配置,其中与图5所示第一示例性实施例的配置相比,提供了停止运行单元避免单元(图11中称为“避免单元”)66和76来运行这样的进程,该进程用于避免停止运行单元并将激活指令发送到可以运行程序的运行单元的激活指令分发单元。
为调试程序可被激活的多个运行单元A和B的每一个安排停止运行单元避免单元66和76。然后停止运行单元避免单元66和76执行处理以使得激活指令不发送到处于停止状态的运行单元。
更具体而言,运行单元A的停止运行单元避免单元66通知通信端口1将运行单元A当作作为激活指令的分发源的运行单元(换言之,作为通信端口1的通信目标的运行单元),并且运行单元B的停止运行单元避免单元76通知通信端口1将运行单元B当作激活指令的分发源。
在如图4中配备有两个运行单元A和B的***中,停止运行单元避免单元66和76被配置为交替激活为“运行单元A、B、A、B、...、A、B”。配备有三个或更多运行单元的***中,停止运行单元避免单元被配置为使用定时器或者通过正常操作期间使用的定时器中断处理器中的程序来相继激活。实现停止运行单元避免单元66和76的实际方法不必要求交 替激活或相继激活,但将要描述的本配置对于有效地结合差错检测器更可取。
定时器中断处理器是在定时器中断发生时首先被激活以处理定时器中断的程序。若运行单元配备有定时器中断功能,则该定时器中断处理器是通常使用的程序。
本示例性实施例的总体操作与本发明的第一示例性实施例的总体操作相同,除了增加了用于选择可在图7的流程图中接收激活指令之前激活调试程序的运行单元的步骤。
参考图12,本说明接下来涉及停止运行单元避免单元66和76的操作。在图12中,步骤S71和步骤S74不是故意的选择,而是根据在该时间点的条件必然的选择过程。换言之,步骤S72是由运行单元A运行的过程,但运行单元A处于停止状态时程序不运行。结果,步骤S71的分支指示向步骤S73继续而不执行步骤S72的过程。类似地,步骤S75是由运行单元B运行的过程,但运行单元B处于停止状态时程序不运行。结果,步骤S74的分支指示向步骤S76继续而不执行步骤S75的过程。此处的说明假设B是作为调试程序的激活指令分发源的运行单元(换言之,作为通信端口1的通信目标的运行单元)的初始值。
首先,在步骤S71阶段,当运行单元A不处于停止状态时(步骤S71中的“否”),运行单元A上的停止运行单元避免单元66将作为调试程序激活指令分发源的运行单元的设置值改变为运行单元A(步骤S72)。该过程通过改变通信端口1的通信目标来执行。当此刻存在激活指令时(步骤S73中的“是”),激活指令被发送到已被设置的运行单元(这种情况下,为运行单元A)(步骤S77)。
另一方面,当步骤S73中不存在激活指令(步骤S73中的“否”)时且如果运行单元B不处于停止状态(步骤S74中的“否”),运行单元B上的停止运行单元避免单元76则将作为调试程序激活指令分发源的运行单元改变为运行单元B(步骤S75)。若此刻存在激活指令(步骤S76中的“是”),则激活指令被发送到已被设置的运行单元(这种情况下,为运行单元B)(步骤S77)。若不存在激活指令(步骤S76中的“否”),则过程返回开始。
若步骤S71处运行单元A停止,则过程前进到步骤S73而不执行步骤S72的过程,但若存在激活指令,则作为调试程序激活指令分发源的运行单元为运行单元B。结果,调试程序激活指令被发送到停止的运行单元因而无法激活的状态可以避免。另一方面,若步骤S74处运行单元B停止,则同样的发明可以避免调试程序激活指令被发送到未能激活的运行单元B的状态。
本方法很容易扩展到存在三个或更多运行单元的情况,并且若任何运行单元在工作,则工作的运行单元被设为调试程序激活指令的分发源。
但是,涉及以下情况时需要小心:
一个小心点是如下情况,其中作为调试程序激活指令分发源的运行单元在步骤S72中改变为运行单元A,接着运行单元A在步骤S73中收到激活指令之前停止。步骤S75和步骤S76之间的情况相同。这种情况下,调试程序激活指令不被接受,但固定的时间间隔流逝后,作为调试程序激活指令分发源的运行单元被非停止的运行单元改变,因此希望存在激活失败时激活指令在固定时间间隔流逝后被发出的配置。考虑到所有运行单元停止的情况可采用如下配置,其中过程终止,且在尽管激活指令已重发固定次数激活仍失败时生成差错报告。
另一个小心点是如下情况,其中虽然通过前述方法处理调试程序激活指令分发单元可以实现运行,但由激活指令指定的调试程序将被激活的运行单元中的停止状态会阻碍激活。这种情况下可采用如下配置,其中若固定的时间间隔流逝后无法确认激活,则生成差错报告。但是,若差错检测/激活指令生成器(待述)的差错检测方法检测到停止状态并确定激活不可能,则优选使用立即生成差错报告并在另一个运行单元上激活调试程序的方法。
为了消除分开指定用于激活的运行单元的必要,优选采用如下配置,其中参考与作为调试目标且与激活了调试程序的运行单元不同的运行单元有关的存储区域,激活调试程序用于分析作为调试目标的运行单元或者用于分析在该运行单元上工作的程序的状态,并且在作为激活指令分发源的运行单元上激活调试程序。这种情况下,在激活指令分发单元的功能中,对将激活指令转移到另一个运行单元的功能的需要可以排除。
说明接下来涉及本示例性实施例的调试***的效果。
在本示例性实施例中,采用如下配置,其中停止运行单元避免单元66和76阻止激活指令被发往调试程序不能运行的运行单元,结果,即使运行单元由于差错而停止且运行单元的操作受影响,只要存在可用的运行单元,仍可在该运行单元上激活调试程序。
【第五示例性实施例】
说明接下来涉及本发明的第五示例性实施例。
在上述第一到第四示例性实施例中,调试程序能够只参考与已激活的运行单元有关的存储区域。但是,在有些情况下,在作为调试目标的运行单元上工作的程序的状态可以通过参考存储区域被使用的方式来分析。
本示例性实施例的调试***具有如下配置,其中允许从激活了调试程序的运行单元通过参考作为调试目标的运行单元的存储区域来执行调试任务。
如图13所示,本示例性实施例的调试***具有如下配置,其中与图5所示第一示例性实施例的配置相比,调试程序63和73分别被调试程序67和77所取代。
调试程序67配备有物理-虚拟地址转换器671和用于分析状态的信息提取器672。
物理-虚拟地址转换器671将虚拟地址转换成物理地址。
信息提取器672使用已由物理-虚拟地址转换器671转换的物理地址并考虑到OS(操作***)在存储器中安排控制信息的结构以从正常操作程序74正在使用的存储区域中提取必要信息。
调试程序77类似地配备有物理-虚拟地址转换器772和信息提取器772。
下面的说明涉及在运行单元A上激活调试程序的操作示例,在运行单元B上激活调试程序77时操作相同。
物理-虚拟地址转换器671执行:第一物理-虚拟地址转换操作,其中虚拟地址和物理地址的偏移(差别)信息被调整以执行虚拟地址和物理地址的相互转换;以及第二物理-虚拟地址转换操作,其中物理/虚拟地址转换表的信息被分析以将虚拟地址和物理地址置于对应关系。
说明首先涉及第一物理-虚拟地址转换操作。
第一物理-虚拟地址转换操作是用于处理诸如OS内核静态保存的区域之类的保存在宽范围内连续的物理地址的区域(下文称为“连续区域”)的操作。
在连续区域中,当对应于特定虚拟地址的物理地址已知时,可以发现虚拟地址和物理地址之间的差别。在连续区域中,当虚拟地址增加n个单位时,相应的物理地址也增加n个单位。结果,保存虚拟地址和物理地址之间的差别然后调整该差别可以实现从虚拟地址到物理地址的转换以及从物理地址到虚拟地址的转换。
虽然由另外的计算获得的值可用作虚拟地址和物理地址的差别,但在有些OS中,对应于连续区域的起点的虚拟地址是预定的。在这种情况下,差别可基于指派到每个CPU的存储区域起点处的物理地址信息来计算。优选如下配置,其中指派到每个CPU的存储区域起点处的物理地址信息可以获得,且差别可被自动计算。
参考图14,本说明接下来涉及第二物理-虚拟地址转换操作。
第二物理-虚拟地址转换操作是高端OS中使用的方法,而且是用于处理使用物理-虚拟地址表来控制例如用户程序的虚拟地址的方法的操作。在用户程序中,对应于连续虚拟地址的存储区域不一定连续且物理地址无法通过差别来唯一确定,因此需要多道措施。
在第二物理-虚拟地址转换操作中,使用第一物理-虚拟地址转换操作来获取OS持有的物理-虚拟地址转换表的物理地址(步骤S101)。
该物理地址用于引用物理-虚拟地址转换表以及获取物理-虚拟地址转换表的内容(步骤S102)。
在高端OS中,物理/虚拟转换表可在多层上提供,且转换不一定通过单个引用来完成。因此,当转换未完成时(步骤S103中的“否”),接下来将要引用的物理-虚拟转换表的虚拟地址从物理-虚拟转换表的内容中获得(步骤S104)。
重复这些过程并获得目标物理地址时(步骤S103中的“是”),获得的物理地址被汇报(步骤S105),第二物理-虚拟地址转换操作完成。
参考图15,本说明接下来涉及信息提取器672的操作。
物理-虚拟地址转换基于具有充当基点(base point)的数据结构的虚拟地址被执行(步骤S201),且被引用数据处的物理地址被获得。
当允许直接引用数据的物理地址可被映射时,采用如下配置,其中必要的数据可通过例如将具有的结构与待引用的数据相似或相同的结构变量映射到相关物理地址(步骤S202)然后引用数据(步骤S203)来获取。
或者,具有的结构与待引用的数据相似或相同的变量可以事先准备,然后获取的物理地址用于将待引用数据复制到准备好的变量的区域中,然后引用这些数据。虽然这种形式允许数据即使在物理地址不允许直接引用数据时也能被引用,但是它负担了需要用于复制的开销的缺陷。
当数据结构简单时,通过这些处理来完成提取(步骤S204中的“是”)且汇报提取结果(步骤S206),由此完成处理。但是,取决于数据,例如具有列表结构的数据可以按分散的状态安排。
当必要数据缺失或在初始引用中只是部分可用时(步骤S204中的“否”),指示下一列表位置的地址被获取(步骤S205)。由于该地址由虚拟地址记录,因此物理地址通过执行物理-虚拟地址转换来获得(步骤S201),且下一列表的内容被参阅(步骤S202和步骤S203)。重复该过程数次直至必要的数据完整。
在本示例性实施例中,在不使用虚拟地址的OS中,不需要步骤S201的物理-虚拟地址转换,且类似的功能可以通过不包含该处理的过程来实现。
另外,虽然说明涉及本实施例中配备有两个运行单元A和B的***的示例,但本实施例很容易扩展到配备有诸如三个或更多等任意数目的运行单元的***。
在本示例性实施例中,提供调试程序用于通过参考与作为调试目标且与激活了调试程序的运行单元不同的运行单元有关的存储区域来分析调试目标运行单元的状态或在该运行单元中工作的程序。结果,无论作为调试目标的运行单元的状态如何,调试任务都可执行。
另一方面,诸如运行单元中提供的寄存器或缓存器之类的资源仅通过参考运行单元所使用的存储区域无法被检查。因此发生诸如由于无法参考寄存器内容导致无法获得必要的调试信息,或者由于最新信息继续留在缓 存中因此仅通过参考存储区域无法检查最新信息之类问题的可能性出现。
结果,在本示例性实施例中,用于读出、写入和控制运行单元中提供的寄存器或缓存器的单元内资源控制单元(未示出)可通过作为调试目标的运行单元上的调试程序来形成。该单元内资源控制单元由寄存器内容读/写单元(未示出)和缓存器控制单元(未示出)组成。
当读寄存器的内容时,读指令被应用到作为调试目标的运行单元上的调试程序,读由寄存器读/写单元执行,然后汇报结果。当执行写操作时,写指令及写数据被应用到作为调试目标的运行单元上的调试程序,然后写由寄存器读/写单元执行。
在接受释放缓存内容的指令后,缓存器控制单元实施控制以使得运行单元运行缓存器释放命令。当缓存器的释放完成时,最新信息写入存储器。结果,获取信息的调试程序能够观察其他运行单元中的存储区域。或者,作为调试目标的运行单元上的调试程序可以具有将读缓存器的内容汇报给外部的配置。或者,希望存在允许控制缓存器的操作模式或者控制内容的更新的配置。
在作为调试目标的运行单元上的调试程序运行期间,在该运行单元提供的寄存器中,操作中使用的寄存器或与诸如程序计数器之类的程序的进展有关的寄存器的内容被保存于存储器区域的堆栈区域中。但是,存在这些堆栈区域的内容留在缓存器中且最新值不在存储区域中保存的可能性。结果,上述缓存器控制单元的使用实现了如下配置,其中所保存的寄存器的内容或者通过将缓存的内容释放到存储区域或者通过直接读取缓存的内容来获得,从而实现了在作为调试目标的程序运行期间被保存的寄存器内容的获取。
通过采用这类操作,当调试程序可以在作为调试目标的运行单元中使用时,配备有寄存器内容读/写单元和缓存器控制单元的调试程序可在作为调试目标的运行单元上使用,且存储区域可被参考。结果,获得信息的调试程序能够实现无法正常运行的寄存器或缓存器读入、写出和控制。
【第六示例性实施例】
说明接下来涉及本发明的第六十例性实施例的调试***。
在上述第一至第五示例性实施例中,当运行单元中发生某些类型的差 错时,来自外部控制终端的激活指令的输入是必要的。
本示例性实施例的调试***具有如下配置,其中即使激活指令不作为来自外部的控制终端的输入来应用,当运行单元中发生某些类型的差错时,激活指令也会自动生成。
如图16所示,本示例性实施例的调试***具有如下配置,其中与图5所示第一示例性实施例的调试***相比,添加了差错检测器68和78用于检测差错的发生。
差错检测器68和78在运行单元A和B中检测到差错的发生后生成调试程序激活指令。
在这种情况下,***可具有这样的配置以使得差错检测器68和78的差错检测只汇报给外部控制终端。但是,优选采用配备有如下装置的配置,所述装置用于在检测到差错发生的时刻暂停差错发生的运行单元或程序、作为差错发生原因的运行单元或程序或者其他运行单元或程序。
配备有差错检测器68和78的运行单元不一定需要与配备有调试程序激活单元62和72的运行单元一致,且差错检测器68和78可只在运行单元A和B中提供。
本实施例的总体操作与上述示例性实施例的任意一个的总体操作相同,除了在接收调试程序激活指令的步骤之前添加了通过差错检测器68和78检测差错的步骤。
说明接下来涉及差错检测器68和78的配置和操作。
差错包括其发生由***汇报的差错(下文称为“运行期间差错”)和阻碍正常操作且不由***汇报的差错。运行期间差错包括不当的存储器参考、不当的命令运行和硬件异常。阻碍正常操作的差错包括由无限循环和失控造成的停止。
说明首先涉及瞄准运行期间差错的差错检测器68和78的第一配置。在这种情况下,差错检测器68和78的每一个由用于接收***的差错汇报的差错接收器(未示出)和用于汇报差错的发生的通知单元(未示出)组成。在具有使特定程序在运行期间差错发生后运行的配置的***中,差错检测器可在特定程序中提供。
当差错检测器作为运行单元上的程序被提供以瞄准运行期间差错时, 差错被运行期间差错发生的运行单元的差错检测器检测。在这种情况下,激活调试程序的运行单元可成为差错发生然后激活指令生成的运行单元。另一方面,当调试程序在运行期间发生差错的运行单元中被激活时,程序的激活对运行单元或存储区域造成的效果阻碍差错原因的确定的可能性出现。在这种情况下,优选采用如下配置,其中调试程序激活指令被发给另一个运行单元,且第五示例性实施例中的调试程序67和77被激活。
说明接下来涉及瞄准阻碍正常操作的差错的差错检测器68和78的第二配置。在这种情况下,差错检测器68和78由以下部件组成:更新信息读取单元(未示出),用于读取已被在作为调试目标的运行单元上运行的程序更新的信息;正常更新检查单元(未示出),用于检查信息更新是否被正确执行;以及差错发生通知单元(未示出),用于汇报差错的发生。
参考图17,本说明接下来涉及差错检测器68和78的第二配置的操作。此处的说明涉及如下示例,其中差错发生通知单元被提供为调试程序激活指令生成器,其用于在检测到差错的发生后生成调试程序激活指令。
更新信息读取单元首先读取已被另一个运行单元上运行的程序更新的信息(步骤S301)。基于该信息,正常更新检查单元检查更新是否在正确地执行(步骤S302)。若更新在正确地执行(步骤S303中的“是”),则正常更新检查单元检查下一更新。若检测到由于发生差错因此更新不正常(步骤S303中的“否”),则调试程序激活指令生成器生成调试程序激活指令(步骤S304)并将激活指令应用到调试程序激活单元。被程序更新的信息可通过提供用于更新信息的程序来获取。但是,通过使用在***内部被OS用作被程序更新的信息的时间信息,不提供另外的程序也可实现差错检测器。
说明接下来涉及瞄准阻碍正常操作的差错的差错检测器68和78的第三配置。在这种情况下,差错检测器68和78每个都配备有以下部件:中断生成器(未示出),用于生成作为调试目标的运行单元的中断;响应检查单元(未示出),用于检查来自作为调试目标的运行单元的响应,以及激活指令生成器(未示出),用于生成调试程序激活指令。此外,作为运行单元的运行单元还配备有用于响应指示的响应单元。
参考图18,本说明接下来涉及差错检测器的第三配置的操作。
中断生成器首先对其他运行单元生成中断(步骤S311),然后等待响应返回(步骤S312)。当预定时间间隔内收到响应时(步骤S313中的“是”),确定操作正常,生成下一中断。若预定时间间隔内未返回响应(步骤S313中的“否”),则确定由于差错不可能有响应,且激活指令生成器生成调试程序激活指令(步骤S314)并将激活指令应用到调试程序激活单元。虽然此处的说明涉及确定标准是预定时间间隔内响应返回的情况,但是确定标准还可以取决于返回的响应是正常的还是非正常的。
说明接下来涉及用于瞄准阻碍正常操作的差错的差错检测器68和78的第四配置。该配置可以通过添加如下装置来实现,所述装置用于调查停止运行单元避免单元(图11的停止运行单元避免单元66和76)中当前选择了哪个运行单元,以选择可以激活调试程序的运行单元,所述停止运行单元避免单元避免已停止的运行单元。
参考图19,本说明接下来涉及差错检测器68和78的第四配置的操作。
在如图19的差错检测器68和78的第四配置中,除了图12中停止运行单元避免单元66和76的操作外,还添加了用于确定当前由停止运行单元避免单元66和76设置了哪个运行单元的步骤S78和S79。
在图19中,步骤S71和步骤S74不是故意的选择,而是根据这些时刻的状态不可避免的选择过程。换言之,步骤S72是由运行单元A运行的过程,且运行单元A停止时该程序不运行。结果,步骤S71的分支示出处理前进到步骤S73而不执行步骤S72的过程。类似地,步骤S75是由运行单元B运行的过程,且运行单元B停止时该程序不运行。结果,步骤S74的分支示出处理前进到步骤S76而不执行步骤S75的过程。在这种情况下,说明假设作为调试程序激活指令分发源的运行单元的初始值为运行单元B。
当运行单元A未停止时(步骤S71的“否”),初始设置值为运行单元B(步骤S78的“是”),因此运行单元A上的程序将作为调试程序激活指令分发源的运行单元改变为运行单元A(步骤S72)。另一方面,当运行单元A停止时(步骤S71的“是”),处理前进到步骤S73而不执行步骤S72的过程。若此处不存在激活指令(步骤S73的“否”),则若运 行单元B未停止(步骤S74的“否”),则处理前进到步骤S79的调查。在步骤S79中,设置为调试程序激活指令分发源的运行单元被调查。若设置的运行单元为A(步骤S79的“是”),则该调查是正常的。若设置的运行单元不为A(步骤S79的“否”),则指示无法运行步骤S72,从而可以检测到运行单元A上的差错。在这种情况下,处理前进到步骤S77,激活指令被发送到设置的运行单元(这种情况下为运行单元B),然后调试程序被激活。若运行单元B在这种情况下停止(步骤S74的“是”),则差错在步骤S78中被类似地检测(步骤S78的“否”),且调试程序被激活。
差错检测器的上述第一至第四配置不互相排斥,可以任何方式结合。
说明接下来涉及本示例性实施例的调试***的效果。
在本示例性实施例中,采用配备有差错检测器68和78并且可以检查差错的发生的配置,从而,即使在检查差错的发生很麻烦的***中,也可激活调试程序,且在验证差错发生后开始调试任务。
另外,在本示例性实施例中,可采用提供了如下装置的配置,所述装置用于在检测到差错发生后停止发生差错的运行单元或程序,停止作为差错发生原因的运行单元或程序,或者停止另一个运行单元或程序。采用这类配置能够避免差错发生后的处理进展妨碍对差错发生原因的调查的情况。
另外,在本示例性实施例中,可提供差错检测器68和78用于在检测到差错的发生后生成调试程序激活指令。这类配置的采用允许调试任务可在不要求调试技术员确定调试程序将被激活的运行单元或调试程序的类型然后激活调试程序的前提下开始。
【第七示例性实施例】
说明接下来涉及本发明的第七示例性实施例的调试***。
根据第五示例性实施例的上述调试***,有关特定运行单元的存储内容即使在运行单元停止时也能被读取。但是,已进入停止状态的运行单元的寄存器或缓存器的内容就连第五示例性实施例调试***也无法读取。这种无能为力起源于如下事实,即运行单元进入停止状态时寄存器或缓存器的内容通常无法读取。
本示例性实施例的调试***具有如下配置,当特定的运行单元停止时,该配置允许该运行单元的寄存器和缓存器的内容被读取以执行调试。
如图20所示,本示例性实施例的调试***具有如下配置,其中与上述第一示例性实施例的配置相比,运行单元A程序区域6中的调试程序63配备有运行单元间中断生成器(图20中表示为“中断生成器”)631和响应接收器632,另外,在作为调试目标的运行单元中运行的中断处理器69配备有响应生成器691和信息获取/控制单元692。
运行单元间中断生成器631对作为调试目标的运行单元B生成中断。响应接收器632通过响应生成器791接收来自作为调试目标的运行单元B的响应。
当中断已从另一个运行单元B生成时,信息获取/控制单元692获取事先设置的诸如寄存器、缓存器和闪存之类的存储区域中的信息。响应生成器691将由信息获取/控制单元692获得的信息发送到导致生成中断的运行单元B。
在图5所示的第一示例性实施例中,中断处理器69未示出,但中断处理器是典型运行单元中被提供为标准的程序。
另外,本示例性实施例的调试***具有如下配置,其中运行单元B程序区域7中的调试程序73类似地配备有运行单元间中断生成器731和响应接收器732,且在作为调试目标的运行单元中运行的中断处理器79配备有响应生成器791和信息获取/控制单元792。
虽然图20示出将本示例性实施例的调试***应用到第一示例性实施例的配置的示例,但是可将该调试***类似地应用到第二至第六示例性实施例。
参考图21的流程图,本说明接下来涉及本示例性实施例的调试***的操作。此处的说明涉及从运行单元A的调试程序63执行B侧运行单元的调试的示例。
调试程序63首先对作为目标的运行单元B发布运行单元间中断(步骤S401),之后运行单元B的中断处理器79被激活(步骤S402)。在该中断处理器79中,信息获取/控制单元792用来执行对作为目标的运行单元B的寄存器、缓存器和闪存的信息收集、写入和控制(步骤S403)。 然后响应生成器791生成对运行单元A的响应(步骤S404),且运行单元A使用响应接收器632接收该响应(步骤S405)。当这些操作的内容仅为控制时,响应中只需要包含涉及控制结果的信息。另一方面,当操作的内容包含信息收集时,响应还包含所收集的信息。
此外,可采用如下配置,其中中断处理器79是在B侧运行单元上周期性生成的定时器中断的中断处理器,且其中运行单元A使用通信单元(未示出)来将用于执行目标处理的运行控制的指令应用到运行单元B。但是,这样的配置引起用于执行运行控制的定时只是周期性生成定时器中断的定时的限制。
在本示例性实施例中,可以通过同样的方案来实现从运行单元B的调试程序73执行A侧运行单元的调试这一情况下的操作。
虽然此处本示例性实施例中的说明涉及配备有两个运行单元A和B的***的示例,但是该应用很容易扩展到配备有诸如三个或更多等任意数目的运行单元的***。
说明接下来涉及本示例性实施例的调试***的效果。
在本示例性实施例中,调试程序63和73配备有运行单元间中断生成器631和731以及响应接收器632和732;且在作为调试目标的运行单元中运行的中断处理器配备有信息获取/控制单元692和792以及响应生成器691和791。然后作为调试目标的运行单元经历中断,所述中断随后从不是作为调试目标的运行单元的运行单元上工作的调试程序中生成,且信息收集和控制由中断处理器执行。
如前面的说明中所描述,中断处理器是中断生成时首先被激活用于处理中断的程序。结果,运行单元A和B的中断处理器69和79中信息获取/控制单元692和792以及响应生成器691和791的分别提供使得即使在运行单元A和B已停止时也能读取已进入停止状态的运行单元的缓存器或寄存器的内容。
【第八示例性实施例】
说明接下来涉及本发明的第八示例性实施例的调试***。
上述第一至第七示例性实施例是在运行单元进入停止状态时执行特定运行单元的调试的***。
可以考虑如下情况,其中当运行单元进入停止状态时,正在被正常操作程序运行的特定过程经历失控。当特定过程以这种方式经历失控时,整体运行单元进入停止状态并且甚至在其他过程无故障时也停止工作。
本示例性实施例的调试***具有如下配置,其中即使在特定过程经历失控且运行单元进入停止状态时,发生失控的处理也暂停且差错被纠正以将停止的运行单元返回到正常状态。
图22示出本示例性实施例的调试***的配置。图22示出如下配置,其中当运行单元B变成作为调试目标的运行单元时,只能从运行单元A为运行单元B执行调试。当任何运行单元经历来自其他任意运行单元的调试时,必须在每个运行单元中提供同样的配置。
如图22所示,本示例性实施例的调试***具有如下配置,其中与图5所示第一示例性实施例的调试***的配置相比,调试程序63配备有运行单元间中断生成器(图22中表示为“中断处理器”)631和响应接收器632,且在运行单元B中运行的中断处理器79配备有响应生成器791和过程控制单元793,运行单元B是作为调试目标的运行单元。
运行单元间中断生成器631对作为调试目标的运行单元B生成中断。响应接收器632通过响应生成器791接收来自作为调试目标的运行单元的响应。
过程控制单元793实施对在作为调试目标的运行单元B上激活的正常操作程序74的过程控制并暂停经历失控的过程。响应生成器791将作为过程控制单元793的过程控制结果获得的信息发送到运行单元B,对运行单元B已生成了中断。
参考图23的流程图,本说明接下来涉及本示例性实施例的调试***的操作。图23示出从运行单元A的调试程序63执行B侧运行单元上的过程控制的示例。
调试程序63首先对作为调试目标的运行单元B发布运行单元间中断(步骤S401),之后运行单元B的中断处理器79被激活(步骤S402)。在该中断处理器79中,过程控制单元793用于实施对在运行单元B中运行的正常操作程序74的过程控制(步骤S406)。然后响应由响应生成器791生成并发送到运行单元A(步骤S404),且运行单元A使用响应接收 器632接收响应(步骤S405)。
另外,可采用如下配置,其中在B侧运行单元上周期性生成的定时器中断的中断处理器被当作中断处理器79,且运行单元A使用通信单元(未示出)来给运行单元B发指令用于执行对目标过程的运行控制。但是这种配置的情况下,所实施运行控制的定时只限于周期性生成的定时中断的定时。
以下方法是用于实现对作为控制目标的过程的处理控制的具体方法。
在第一过程控制方法中,OS的调度程序配备有过程控制变更单元,用于基于来自外部的指令变更由调度程序实施的过程控制。于是过程控制可通过将过程变更指令从中断处理器79中的过程控制单元793发送到过程控制变更单元来实现。
在第二过程控制方法中,提供过程控制信号发布单元,用于通过类似OS的API(应用程序接口)(诸如***调用)的程序从中断处理器79中的过程控制单元793向作为控制目标的过程发布过程控制信号。于是该方法可以通过由过程控制信号发布单元向作为控制目标的过程发布过程控制信号来实现。
在第三过程控制方法中,在中断处理器79中提供地址变更单元,用于将存储区域中保存的作为控制目标的过程的返回地址改变为另一地址。于是该方法可以通过由中断处理器79中的地址变更单元将返回地址改变为错误地址从而生成错误地址引用异常来实现。
在这种情况下,因为由异常引起的非正常终止过程由OS执行,所以仅生成异常的过程就可导致过程终止。但是,各种类型的过程控制可以通过采用导致实施不同于非正常终止过程的控制的配置来执行,如在异常处理器中促使过程终止。
在第四过程控制方法中,在中断处理器79中提供命令变更单元,用于将存储区域中保存的作为控制目标的过程的返回地址处存在的命令改变为其他命令。该方法可以通过由中断处理器79中的命令变更单元将返回地址处的存在的命令替换为调试命令或错误命令并生成异常来实现。因为OS执行由异常引起的非正常终止过程,所以仅生成异常的过程就可导致过程终止。但是,各种过程控制可以通过采用导致执行不同于非正常终止 过程的控制的配置来实施,如在异常处理器中促使过程终止。
存在用于从被提供为用户过程的调试程序发布用于过程控制的***调用和用于执行过程控制的现有方法。当这类方法被使用且在运行单元上运行的任意过程经历失控时,控制不转移到调试程序,结果过程控制无法实施。但是,当从内部中断处理器79执行过程控制的上述过程控制的任一个被使用时,由于中断处理器79以高于用户过程的优先级被执行,因此即使存在经历失控的过程,也可执行过程控制。
在本示例性实施例中,可以通过同样的方案来实现从运行单元B的调试程序执行A侧运行单元上的调试这一情况下的操作。
虽然本说明的提供涉及本实施例中配备有两个运行单元A和B的***的示例,但是本发明很容易扩展到配备有诸如三个或更多等任意数目的运行单元的***。
说明接下来涉及本示例性实施例的调试***的效果。
在本示例性实施例中,采用如下配置,其中在由作为调试目标的运行单元B运行的中断处理器79中提供过程控制单元793,且对作为调试目标的过程的控制从中断处理器79的内部执行。然后对作为调试目标的运行单元B的中断从不是作为调试目标的运行单元B的运行单元A上工作的调试程序63中生成并在中断处理器79中实施过程控制,由此可以从除作为调试目标的运行单元B以外的运行单元A执行过程控制。此外,由于过程控制是从以高于用户过程的优先级运行的中断处理器79内部执行的,因此即使存在经历失控的过程,经历失控的过程也可暂停,发生差错的状态可被分析以执行诸如变量内容校正之类的过程,进而,程序可再次运行以观察差错是否已被解决。通过重复这些过程,停止的运行单元最终可返回到正确的操作。
工业适用性
本发明可应用于在配备有多个运行单元的***LSI中使用的调试***。本发明还可应用于在配备有多个运行单元的嵌入式***中使用的调试***并可应用于配备有多个运行单元的计算机***。
Claims (22)
1.一种调试***,用于执行对在有多个运行单元执行相连操作的***中运行的程序的调试,所述调试***包括:
激活指令分发装置,用于在当前运行单元发生差错时,在收到指示激活调试程序的激活指令后,将所述激活指令分发到由所述激活指令指定的运行单元,或者从所述多个运行单元中自动选择某些运行单元作为所述激活指令的分发目的地,并将所述激活指令分发给所选择的运行单元;以及
多个调试程序激活装置,它们对应于所述多个运行单元中的每一个被提供,用于基于已由所述激活指令分发装置分发的激活指令在相应的运行单元上激活调试程序。
2.如权利要求1所述的调试***,其中所述激活指令分发装置向对应于已由所述激活指令指定的所述运行单元的调试程序激活装置发送所述激活指令。
3.如权利要求1所述的调试***,其中所述激活指令分发装置向与基于所述多个运行单元中的每一个的操作状态确定的运行单元相对应的调试程序激活装置发送所述激活指令。
4.如权利要求1所述的调试***,其中所述激活指令分发装置检测所述多个运行单元中的每一个所使用的存储区域的未占用容量,然后向与被检测的未占用容量中存在剩余的运行单元相对应的调试程序激活装置发送所述激活指令。
5.如权利要求1所述的调试***,其中所述激活指令分发装置向与作为调试目标的运行单元关系很小或无关的运行单元相对应的调试程序激活装置发送所述激活指令。
6.如权利要求1所述的调试***,还包括中继装置,所述中继装置对应于所述多个运行单元中的任意之一被提供,用来将从通信端口发往调试程序的命令中继到由所述激活指令指定的运行单元上的调试程序。
7.如权利要求1所述的调试***,还包括多个中继装置,所述多个中继装置对应于所述多个运行单元中的每一个被提供,用来将从通信端口发往调试程序的命令中继到由所述激活指令指定的运行单元上的调试程序。
8.如权利要求1所述的调试***,还包括停止运行单元避免装置,用于避免将所述激活指令发送到与处于停止状态的运行单元相对应的调试程序激活装置。
9.如权利要求1所述的调试***,其中在所述多个运行单元中的任意一个中待激活的调试程序配备有:
物理-虚拟地址转换装置,用于将虚拟地址转换为物理地址;以及
信息提取装置,其使用已被所述物理-虚拟地址转换装置转换的物理地址,并考虑到操作***在存储器中安排控制信息的结构以从如下存储区域中提取必要信息:所述存储区域被作为调试目标并与激活了所述调试程序的运行单元不同的运行单元所使用。
10.如权利要求1所述的调试***,还包括差错检测装置,用于从所述多个运行单元中检测发生差错的运行单元,并生成用于执行对已检出的运行单元的调试的激活指令。
11.如权利要求1所述的调试***,其中中断处理器作为当所述多个运行单元中的每一个中发生中断时首先被激活用于处理中断的程序,该中断处理器配备有:
信息获取/控制装置,用于当从另一个运行单元生成中断时,在已事先设置的存储区域中获取信息;以及
响应生成装置,用于将已由所述信息获取/控制装置获取的信息发送到生成中断的运行单元;
并且,在所述多个运行单元中的任一个中激活的调试程序配备有:
运行单元间中断生成装置,用于对作为调试目标的运行单元生成中断;以及
响应接收装置,用于接收来自作为调试目标的运行单元的响应。
12.一种调试方法,用于执行对在多个运行单元执行相连操作的***中运行的程序的调试,所述方法包括以下步骤:
在当前运行单元发生差错时,在收到指示激活调试程序的激活指令后,将所述激活指令分发到由所述激活指令指定的运行单元,或者从所述多个运行单元中自动选择某些运行单元作为所述激活指令的分发目的地,并将所述激活指令分发给所选择的运行单元;以及
通过对应于所述多个运行单元中的每一个提供的调试程序激活装置,基于已被分发的所述激活指令在相应的运行单元上激活调试程序。
13.如权利要求12所述的调试方法,其中在所述分发激活指令的步骤中,所述激活指令被发送到对应于已由所述激活指令指定的运行单元的调试程序激活装置。
14.如权利要求12所述的调试方法,其中在所述分发激活指令的步骤中,所述激活指令被发送到与基于所述多个运行单元中的每一个的操作状态确定的运行单元相对应的调试程序激活装置。
15.如权利要求12所述的调试方法,其中在所述分发激活指令的步骤中,所述多个运行单元中的每一个使用的存储区域的未占用容量被检测,且所述激活指令被发送到与被检测的未占用容量中存在剩余的运行单元相对应的调试程序激活装置。
16.如权利要求12所述的调试方法,其中在所述分发所述激活指令的步骤中,所述激活指令被发送到与作为调试目标的运行单元关系很小或无关的运行单元相对应的调试程序激活装置。
17.如权利要求12所述的调试方法,还包括如下步骤,其中对应于所述多个运行单元中的任意之一提供的中继装置将从通信端口发往调试程序的命令中继到由所述激活指令指定的运行单元上的调试程序。
18.如权利要求12所述的调试方法,还包括如下步骤,其中对应于所述多个运行单元中的每一个提供的任意一个中继装置将从通信端口发往调试程序的命令中继到由所述激活指令指定的运行单元上的调试程序。
19.如权利要求12所述的调试方法,其中在所述分发激活指令的步骤中,所述激活指令不被发送到与处于停止状态的运行单元相对应的调试程序激活装置。
20.如权利要求12所述的调试方法,还包括如下步骤,其中:
在所述多个运行单元中的任意一个上激活的调试程序内提供的物理-虚拟地址转换装置将虚拟地址转换为物理地址;并且
使用已被所述物理-虚拟地址转换装置转换的物理地址并考虑到操作***在存储器中安排控制信息的结构,从如下存储区域中提取必要信息:所述存储区域被作为调试目标并与激活了所述调试程序的运行单元不同的运行单元所使用。
21.如权利要求12所述的调试方法,还包括从所述多个运行单元中检测发生差错的运行单元并生成用于执行对已检出的运行单元的调试的激活指令的步骤。
22.如权利要求12所述的调试方法,还包括如下步骤,其中:
在所述多个运行单元中的任一个上激活的调试程序内提供的运行单元间中断生成装置对作为调试目标的运行单元生成中断;
在中断处理器中提供的信息获取/控制装置在已经从另一个运行单元生成中断时,获取已事先设置的存储区域中的信息,其中所述中断处理器是在所述多个运行单元中的每一个中生成中断时首先被激活用于处理中断的程序;
已由所述信息获取/控制装置获取的信息被发送到生成中断的运行单元;并且
已激活调试程序的运行单元接收来自作为调试目标的运行单元的响应。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP182032/2005 | 2005-06-22 | ||
JP2005182032 | 2005-06-22 | ||
PCT/JP2006/309230 WO2006137223A1 (ja) | 2005-06-22 | 2006-05-08 | デバッグシステム、デバッグ方法、およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101208667A CN101208667A (zh) | 2008-06-25 |
CN101208667B true CN101208667B (zh) | 2012-01-11 |
Family
ID=37570259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800227201A Expired - Fee Related CN101208667B (zh) | 2005-06-22 | 2006-05-08 | 调试***及方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8589879B2 (zh) |
EP (1) | EP1901168A4 (zh) |
JP (1) | JP5163120B2 (zh) |
KR (1) | KR20080015110A (zh) |
CN (1) | CN101208667B (zh) |
WO (1) | WO2006137223A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101990662B (zh) * | 2008-03-14 | 2014-07-02 | 松下电器产业株式会社 | 程序执行装置以及其控制方法 |
US8473921B2 (en) * | 2009-12-15 | 2013-06-25 | Microsoft Corporation | Debugging mechanisms in a cache-based memory isolation system |
US8621118B1 (en) * | 2010-10-20 | 2013-12-31 | Netapp, Inc. | Use of service processor to retrieve hardware information |
EP2656227A2 (en) * | 2010-12-22 | 2013-10-30 | Intel Corporation | Debugging complex multi-core and multi-socket systems |
US9983986B2 (en) | 2015-09-28 | 2018-05-29 | International Business Machines Corporation | Testing code response to injected processing errors |
EP3564819B1 (en) | 2016-12-29 | 2021-03-17 | Mitsubishi Electric Corporation | Program analysis system, program analyzer, program analysis method, and analysis program |
CN109408310B (zh) * | 2018-10-19 | 2022-02-18 | 网易(杭州)网络有限公司 | 服务器的调试方法、服务器及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003203061A (ja) * | 2002-01-08 | 2003-07-18 | Mitsubishi Heavy Ind Ltd | 並列計算機システムおよび並列計算機システムにおける計算ノードの選択用プログラム |
CN1501250A (zh) * | 2002-11-14 | 2004-06-02 | 株式会社瑞萨科技 | 多处理器*** |
JP2004164113A (ja) * | 2002-11-11 | 2004-06-10 | Nec Micro Systems Ltd | マルチcpuのリセット回路およびリセット方法 |
JP4101239B2 (ja) * | 2004-01-26 | 2008-06-18 | マイクロソフト コーポレーション | 自動クエリクラスタリング |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0132161B1 (en) * | 1983-07-19 | 1988-06-15 | Nec Corporation | Apparatus for controlling a plurality of interruption processings |
JPS63240644A (ja) | 1987-03-27 | 1988-10-06 | Fujitsu Ltd | 情報収集処理方式 |
JPH0192847A (ja) | 1987-10-02 | 1989-04-12 | Fujitsu Ltd | デバック制御方式 |
JPH03292540A (ja) | 1990-04-10 | 1991-12-24 | Mitsubishi Electric Corp | 計算機異常診断装置 |
JPH0433135A (ja) | 1990-05-30 | 1992-02-04 | Toyo Commun Equip Co Ltd | プログラムのデバッグ方式 |
JPH04101239A (ja) | 1990-08-21 | 1992-04-02 | Nec Eng Ltd | 情報処理装置のデバッグ方式 |
JPH07113912B2 (ja) * | 1991-05-31 | 1995-12-06 | 富士ゼロックス株式会社 | 分散型情報処理システムのデバッグ方式 |
JPH06168155A (ja) | 1992-11-30 | 1994-06-14 | Mitsubishi Electric Corp | デバッグ方式 |
JP2522158B2 (ja) * | 1993-05-25 | 1996-08-07 | 日本電気株式会社 | マルチプロセッサシステムのプログラムデバッグ方法 |
JPH07253907A (ja) | 1994-03-14 | 1995-10-03 | Fujitsu Ltd | 自己デバッグ機能付き情報処理装置 |
JPH08272644A (ja) | 1995-04-03 | 1996-10-18 | Toshiba Corp | 分散処理装置で実行されるプログラムのデバッグ方法 |
JP2783275B2 (ja) | 1995-04-28 | 1998-08-06 | 日本電気株式会社 | 分散並列処理プログラムデバッグ方式 |
JPH09244919A (ja) | 1996-03-14 | 1997-09-19 | Oki Electric Ind Co Ltd | マルチcpuにおけるテストプログラムのデバッガ |
JPH10187486A (ja) | 1996-12-27 | 1998-07-21 | Fujitsu Ltd | マルチプロセッサシステムのプログラムデバッグ方法 |
US5961628A (en) * | 1997-01-28 | 1999-10-05 | Samsung Electronics Co., Ltd. | Load and store unit for a vector processor |
JPH1139190A (ja) | 1997-07-22 | 1999-02-12 | Fujitsu Ltd | 並列処理プログラムのデバッグシステム、及びそのデバッグ方法 |
JPH11184736A (ja) | 1997-12-19 | 1999-07-09 | Nec Corp | プロセッサ情報収集装置およびそのプログラム記録媒体 |
JP2000099366A (ja) * | 1998-09-21 | 2000-04-07 | Fujitsu Ltd | 演算処理装置および演算処理装置のデバッグ方法 |
US6384457B2 (en) * | 1999-05-03 | 2002-05-07 | Intel Corporation | Asymmetric MOSFET devices |
US6412106B1 (en) * | 1999-06-16 | 2002-06-25 | Intervoice Limited Partnership | Graphical system and method for debugging computer programs |
US6748403B1 (en) * | 2000-01-13 | 2004-06-08 | Palmsource, Inc. | Method and apparatus for preserving changes to data |
US6826717B1 (en) * | 2000-06-12 | 2004-11-30 | Altera Corporation | Synchronization of hardware and software debuggers |
US8108656B2 (en) * | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US7721265B1 (en) * | 2003-11-10 | 2010-05-18 | Cisco Technology, Inc. | Source code debugging method and apparatus for use in script testing environment |
US20050183066A1 (en) * | 2004-02-17 | 2005-08-18 | Jabori Monji G. | Correlating debugger |
US7690001B2 (en) * | 2005-04-29 | 2010-03-30 | Sap Ag | System and method for a management model event system |
-
2006
- 2006-05-08 CN CN2006800227201A patent/CN101208667B/zh not_active Expired - Fee Related
- 2006-05-08 US US11/921,437 patent/US8589879B2/en not_active Expired - Fee Related
- 2006-05-08 WO PCT/JP2006/309230 patent/WO2006137223A1/ja active Application Filing
- 2006-05-08 KR KR1020077029314A patent/KR20080015110A/ko not_active Application Discontinuation
- 2006-05-08 JP JP2007522210A patent/JP5163120B2/ja not_active Expired - Fee Related
- 2006-05-08 EP EP06746062A patent/EP1901168A4/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003203061A (ja) * | 2002-01-08 | 2003-07-18 | Mitsubishi Heavy Ind Ltd | 並列計算機システムおよび並列計算機システムにおける計算ノードの選択用プログラム |
JP2004164113A (ja) * | 2002-11-11 | 2004-06-10 | Nec Micro Systems Ltd | マルチcpuのリセット回路およびリセット方法 |
CN1501250A (zh) * | 2002-11-14 | 2004-06-02 | 株式会社瑞萨科技 | 多处理器*** |
JP4101239B2 (ja) * | 2004-01-26 | 2008-06-18 | マイクロソフト コーポレーション | 自動クエリクラスタリング |
Also Published As
Publication number | Publication date |
---|---|
WO2006137223A1 (ja) | 2006-12-28 |
KR20080015110A (ko) | 2008-02-18 |
JPWO2006137223A1 (ja) | 2009-01-08 |
JP5163120B2 (ja) | 2013-03-13 |
US20090235233A1 (en) | 2009-09-17 |
EP1901168A4 (en) | 2012-04-11 |
US8589879B2 (en) | 2013-11-19 |
CN101208667A (zh) | 2008-06-25 |
EP1901168A1 (en) | 2008-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101208667B (zh) | 调试***及方法 | |
US9235497B2 (en) | Method and system for detecting concurrency programming errors in kernel modules and device drivers | |
JP3640187B2 (ja) | マルチプロセッサシステムの障害処理方法、マルチプロセッサシステム及びノード | |
GB2383437A (en) | Integrated hardware treace unit | |
US3964055A (en) | Data processing system employing one of a plurality of identical processors as a controller | |
CN104079454A (zh) | 一种设备异常检测方法和设备 | |
CN101334744B (zh) | 一种检测多处理器***故障的方法、***和装置 | |
JP2008146447A (ja) | フォールトトレラントコンピュータ | |
JP5277961B2 (ja) | 情報処理装置及びその故障隠蔽方法 | |
US8042008B2 (en) | Information processing device, transfer circuit and error controlling method for information processing device | |
CN101706752B (zh) | 一种软件错误现场定位的方法及装置 | |
JP2017097516A (ja) | デバッグサポートシステム | |
US7457999B2 (en) | Debug port system for control and observation | |
US8880957B2 (en) | Facilitating processing in a communications environment using stop signaling | |
CA2758682C (en) | Plant control system, data to be equalized selection apparatus, and data to be equalized selection method | |
JP2012198651A (ja) | クラスタシステム、仮想マシンサーバ、仮想マシンのフェイルオーバ方法、仮想マシンのフェイルオーバプログラム | |
JP2519276B2 (ja) | 障害情報収集処理方式 | |
JP4787551B2 (ja) | デバッグシステム、デバッグ方法およびプログラム | |
CN101119233A (zh) | 获取设备运行状态的方法、装置及*** | |
CN101311909A (zh) | 诊断***异样的方法 | |
CN100490343C (zh) | 一种通讯设备中主备用单元倒换的实现方法和装置 | |
CN101158920A (zh) | 一种检测操作***故障的方法和装置 | |
JP2008146148A (ja) | 計算機システム | |
KR20190080684A (ko) | 멀티코어 프로세서 기반의 plc 및 hmi 통합 시스템 | |
JP2006313406A (ja) | 障害情報収集システム |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120111 Termination date: 20170508 |
|
CF01 | Termination of patent right due to non-payment of annual fee |