程序执行装置以及其控制方法 技术领域 本发明涉及程序执行装置以及其控制方法, 尤其涉及由多个调试器 (debugger) 控制程序执行装置而不出现矛盾的程序执行装置以及其控制方法。
背景技术 近些年, 有这样的程序执行装置, 即其具有能够同时执行在单一的或多个处理器 上工作的多个程序的模拟器, 或安装有多个处理器的评估板等。这些程序执行装置对于程 序的开发以及调试有用。
尤其是通过将多个调试器连接到这些程序执行装置来同时进行多个程序的调试, 从而容易地发现问题。 此时, 原则上, 由程序执行装置执行的程序和以该程序为调试对象的 调试器一对一地对应。
能够并行执行多个程序且与多个调试器连接的程序执行装置, 在从调试器接受了 执行请求的情况下, 开始执行与进行了执行请求的调试器对应的程序。
在此, 该程序执行装置能够并行执行多个程序, 因此需要使由各个调试器进行调 试的多个程序同步以便执行。
因此, 提出了这样的多计算机调试器系统 (multicomputer debuggersystem), 即 通过在调试器间设置通信接口来使调试器的执行请求的定时一致, 从而实现多个程序的同 步执行 ( 例如, 专利文献 1)。
图 14 是示出多计算机调试器系统的构成的框图。
图 14 所示的多计算机调试器系统具备 : 程序执行装置 61, 能够并行执行多个程 序; 调试器 11 以及 12, 被连接到程序执行装置 61 ; 多计算机调试器 73, 是调试器间通信接 口。
并且, 程序执行装置 61 具备 : 程序执行部 62, 执行调试器 11 作为调试对象的程 序; 程序执行部 63, 执行调试器 12 作为调试对象的程序。
下述专利文献 1 所公开的多计算机调试器系统中, 为了使调试器 11 以及调试器 12 的程序执行请求同步, 利用作为调试器间通信接口的多计算机调试器 73。
接着, 以多计算机调试器系统中的作为典型的工作的 “停止” 、 “中断” 为例进行说 明。
( 停止工作 )
首先, 程序执行装置 61 正在并行执行多个程序的情况下, 被连接到程序执行装置 61 的调试器 11 以及调试器 12 中的、 例如 1 个调试器 11 进行停止请求。
此时, 程序执行装置 61 仅停止与调试器 11 对应的程序的执行。也就是说, 程序执 行装置 61 停止程序执行部 62, 而继续其他的程序的执行, 在此继续与调试器 12 对应的程序 的执行。或者, 程序执行装置 61 停止程序执行部 62, 并停止所有的程序的执行 ( 在此停止 与调试器 12 对应的程序的执行 ), 所有的调试器 ( 调试器 11 以及调试器 12) 转入停止状 态。
( 中断工作 )
并且, 在程序执行装置 61 并行执行多个程序的情况下, 在程序执行装置 61 检测断 点时, 与上述的停止同样地, 仅停止与检测出断点的程序对应的程序的执行。此时, 程序执 行装置 61 继续未检测出断点的其他程序的执行。或者, 程序执行装置 61 停止所有的程序 的执行, 所有的调试器 ( 调试器 11 以及调试器 12) 转入停止状态。
专利文献 1 : ( 日本 ) 特开平 8-171498 号公报
然而, 上述以往的技术存在以下课题。
程序执行装置 61 中, 为了同步执行多个程序, 在程序执行装置 61 中设置调试器间 通信接口 ( 多计算机调试器 73)。 但是, 要在程序执行装置 61 中设置通信接口, 则从通信接 口的规格策定到安装、 维护等需要工时。而且, 每增加与该通信接口对应的调试器的种类, 则工时就会增加。
并且, 程序执行装置 61 能够并行执行多个程序。但是, 例如因来自 1 个调试器 11 的停止请求而仅停止正在执行的多个程序中的与调试器 11 对应的 1 个程序, 而继续其他 的程序的执行的情况下, 则存储器或变量的值会被改写而妨碍调试。并且, 因来自 1 个调 试器, 例如来自 1 个调试器 11 的停止请求而停止所有的正在执行的程序的情况下, 未进行 停止请求的调试器 12 也转入停止状态。为此, 对于调试器 12 出现原本不必要的调试访问 (debug access), 而不能迅速地进行所需要的调试工作。
而且, 有关因断点而导致的停止, 存在与因停止请求而导致停止的情况同样的问 题。 也就是说, 仅使检测出断点的程序停止的情况下, 其他的程序的执行会继续而会妨碍调 试。 并且, 因检测出断点而使所有的程序的执行停止的情况下, 所有的调试器转入停止状态 而出现不必要的调试访问。
并且, 有关结束处理, 要判断多个程序是否都结束则需要设置通信接口, 需要安 装、 维护等工时。
并且, 有关调试器的连接, 如果在正在执行程序时连接调试器, 则因为调试器的复 位处理, 而使存储器或变量的值被改写而妨碍调试。 发明内容
本发明鉴于上述课题, 目的在于提供一种程序执行装置以及其控制方法, 其能够 不在调试器间设置通信接口而同步执行且抑制调试访问。
为了解决上述以往的课题, 本发明的控制方法, 用于控制程序执行装置, 所述程序 执行装置包括多个调试器和程序执行部, 所述程序执行部并行执行作为所述多个调试器的 调试对象的多个程序, 所述控制方法, 包括 : 保持步骤, 从所述多个调试器的每一个接受程 序的执行的开始请求或停止请求, 并按照所述多个调试器的每一个保持示出开始请求或停 止请求的标志 ; 以及程序执行控制步骤, 根据所述标志所示的所述开始请求以及所述停止 请求的组合进行控制, 使所述程序执行部开始或停止执行所述多个程序, 在所述程序执行 控制步骤中, 在已使所述程序执行部停止执行所述多个程序的情况下, 向与示出停止请求 的标志对应的调试器通知程序的执行被停止。
根据此构成, 能够不在调试器间设置通信接口, 而根据标志所示的请求的组合, 无 需调试器彼此的连携 ( 連携 ) 而同步执行程序或同步停止程序。而且, 在同步停止程序的情况下, 能够仅向进行了程序的执行的停止请求的调试器通知被停止这一事宜, 因此能够 抑制来自调试器的不必要的调试访问。
在此, 也可以是, 在所述程序执行控制步骤中, 在所述组合仅由所述开始请求构成 的情况下, 所述程序执行部开始执行所有的所述多个程序。
根据此构成, 即使程序执行装置接受了来自个别的调试器的执行请求, 也保留程 序的执行, 直到接受来自所有的调试器的执行请求为止。 据此, 能够在程序执行装置一侧使 程序的执行同步, 能够同步执行与每个调试器对应的程序而不需要调试器间进行通信。
并且, 也可以是, 在所述程序执行控制步骤中, 在所述组合包括所述停止请求的情 况下, 所述程序执行部停止执行所有的所述多个程序, 并仅向与该停止请求对应的调试器 通知程序的执行被停止。
根据此构成, 因为不向进行了停止请求的调试器以外的调试器进行停止的通知, 因此未进行停止请求的调试器不转入停止状态。为此, 能够防止出现未进行停止请求的调 试器的不必要的调试访问。
并且, 也可以是, 在所述保持步骤中, 在所述程序执行部从正在执行的所述多个程 序中的任一个程序检测出断点的情况下, 则视为接受了该程序的执行的停止请求而保持示 出来自与检测出所述断点的程序对应的调试器的停止请求的标志。 根据此构成, 与检测出断点的程序对应的调试器以外的调试器不会从程序执行装 置接收停止通知, 因此不会转入停止状态。 据此, 能够防止出现来自与检测出断点的程序无 关的调试器的不必要的调试访问。
并且, 本发明的控制方法, 用于控制程序执行装置, 所述程序执行装置包括多个调 试器和程序执行部, 所述程序执行部并行执行作为所述多个调试器的调试对象的多个程 序, 所述控制方法, 包括 : 切断请求保持步骤, 从所述多个调试器分别地接受用于切断该调 试器与所述程序执行装置的连接的切断请求, 并按照该多个调试器的每一个保持示出是否 进行了切断请求的标志 ; 以及执行结束控制步骤, 根据所述标志所示的所述切断请求的组 合进行控制, 以使所述程序执行装置结束工作, 在所述执行结束控制步骤中包括切断判定 步骤和程序执行装置结束步骤, 在所述切断判定步骤中, 根据所述标志判定连接到所述程 序执行装置的所有的调试器是否都进行了切断请求, 在所述程序执行装置结束步骤中, 在 所述切断判定步骤判定为连接到所述程序执行装置的所有的调试器都进行了切断请求的 情况下, 使所述程序执行装置结束工作。
根据此构成, 能够不在调试器间设置通信接口, 而根据所述切断判定步骤来使程 序执行装置结束。
并且, 本发明的控制方法, 用于控制程序执行装置, 所述程序执行装置包括多个调 试器和程序执行部, 所述程序执行部并行执行作为所述多个调试器的调试对象的多个程 序, 所述控制方法, 包括 : 执行标志保持步骤, 保持执行标志, 该执行标志示出所述程序执行 部是否正在执行程序 ; 复位接受步骤, 从连接到所述程序执行装置的调试器接受复位请求 ; 判定步骤, 判定接受的所述复位请求是否有效 ; 复位标志保持步骤, 保持复位标志, 该复位 标志按照所述判定结果示出所述复位请求是否有效 ; 以及复位步骤, 根据所述复位标志和 所述执行标志, 使所述程序执行装置复位。
根据此构成, 能够不在调试器间设置通信接口, 而根据所述调试器判定步骤来控
制复位处理, 不影响正在执行的程序而进行调试。
在此, 也可以是, 所述控制方法还包括通知步骤, 在所述判定步骤判定所述复位请 求为无效的情况下, 向与所述复位请求对应的所述调试器通知所述复位请求已变为无效。
根据此构成, 通过通知复位处理已变为无效这一事宜, 能够使开发者认识到复位 处理已为无效
在此, 也可以是, 在所述判定步骤中, 从连接到所述程序执行装置的调试器接受了 复位请求的情况下, 不管所述执行标志的值如何, 都将该复位请求判定为有效。
根据此构成, 能够在开发者所期望的定时强制进行复位。
在此, 也可以是, 所述控制方法还包括资源复位步骤, 根据所述复位标志和所述执 行标志, 使程序执行装置的调试资源复位, 在所述资源复位步骤中, 在所述复位标志示出所 述复位请求为无效, 且所述执行标志示出所述程序执行部正在执行程序的情况下, 使所述 程序执行装置的调试资源复位。
根据此构成, 通过连接调试器时仅使调试资源初始化, 从而防止在调试资源非正 常的情况下进行处理。
并且, 本发明的程序执行装置包括多个调试器和程序执行部, 所述程序执行部并 行执行作为所述多个调试器的调试对象的多个程序, 所述程序执行装置, 具备 : 保持部, 从 所述多个调试器的每一个接受程序的执行的开始请求或停止请求, 并按照所述多个调试器 的每一个保持示出开始请求或停止请求的标志 ; 以及程序执行控制部, 根据所述标志所示 的所述开始请求以及所述停止请求的组合进行控制, 使所述程序执行部开始或停止执行所 述多个程序, 所述程序执行控制部, 在已使所述程序执行部停止执行所述多个程序的情况 下, 向与示出停止请求的标志对应的调试器通知程序的执行被停止。 另外, 本发明不仅能够作为装置来实现, 也能够作为具有构成这样的装置的处理 单元的集成电路来实现, 或以构成该装置的处理单元作为步骤的方法来实现, 或作为使计 算机执行这些步骤的程序来实现, 或作为表示该程序的信息、 数据或信号来实现等。
根据本发明, 能够实现能够不在调试器间设置通信接口而同步执行且抑制调试访 问的程序执行装置以及其控制方法。
并且, 通过本发明的程序执行装置以及其控制方法, 不仅能够不在调试器间设置 通信接口而实现同步执行, 而且能够在同步停止、 同步中断程序时, 仅使必要的调试器转入 停止状态, 因此不出现不必要的调试访问而能够迅速地进行调试工作。
附图说明
图 1 是示出本发明的实施例的程序执行装置的外观的图。
图 2 是示出实施例 1 的模拟器以及连接到该模拟器的调试器的构成的框图。
图 3 是示出实施例 1 的程序执行再次开始判定步骤 S1 的处理的流程图。
图 4 是示出实施例 1 的程序停止步骤 S2 的处理的流程图。
图 5 是示出实施例 1 的中断步骤 S3 的处理的流程图。
图 6 是示出实施例 2 的模拟器以及连接到该模拟器的调试器的构成的框图。
图 7 是示出实施例 2 的程序执行结束判定步骤 S4 的处理的流程图。
图 8 是示出实施例 3 的模拟器以及连接到该模拟器的调试器的构成的框图。图 9 是示出实施例 3 的复位处理判定步骤 S5 的处理的流程图。 图 10 是示出实施例 3 的复位处理判定步骤 S6 的处理的流程图。 图 11 是示出实施例 3 的复位处理判定步骤 S7 的处理的流程图。 图 12 是示出实施例 3 的复位处理判定步骤 S8 的处理的流程图。 图 13 是示出本发明的实施例的模拟器以及连接到该模拟器的调试器的构成的框 图 14 是示出多计算机调试器系统的构成的框图。 符号说明 1、 61 程序执行装置 1a 主机装置 1b 显示装置 1c 输入装置 2 程序执行装置控制部 3、 62、 63 程序执行部 10 模拟器 11、 12 调试器 13、 14 执行请求标志 21、 22 连接请求标志 31、 32 复位标志 33 程序执行标志 73 多计算机调试器图。
具体实施方式
以下参照附图说明用于实施本发明的最优方式。
( 实施例 1)
图 1 是示出本发明的实施例的程序执行装置 1 的外观的图。程序执行装置 1 具备 主机装置 1a、 显示装置 1b 以及输入装置 1c。 程序执行装置 1 模拟单一的或多个处理器。 并 且, 程序执行装置 1 是数据处理装置, 执行称为模拟器的应用。模拟器能够同时执行在被模 拟的处理器上工作的多个程序。 在此, 模拟器是指, 通常, 实际上很难进行实验的情况下, 制 成其虚拟模型并进行模拟实验的硬件或软件。
另外, 作为本发明的实施例之一, 以下将程序执行装置 1 作为模拟器 10 来进行说 明, 但是即使程序执行装置 1 是安装了处理器的评估板, 本发明的实施以及效果也不会变。
图 2 是示出实施例 1 的模拟器 10 以及连接到该模拟器的调试器的构成的框图。
模拟器 10 具备程序执行装置控制部 2 和程序执行部 3, 并与调试器 11 和调试器 12 连接。
程序执行装置控制部 2 具备 : 执行请求标志 13, 保持来自调试器 11 的执行请求 ; 执行请求标志 14, 保持来自调试器 12 的执行请求。
另外, 为了简便, 作为本发明的实施例, 以连接 2 个调试器的构成进行说明, 但是 只要是 2 个以上, 连接几个调试器都可以。此时, 程序执行装置控制部 2 保持相当于连接到模拟器 10 的调试器的数量的数量的执行请求标志, 各个执行请求标志保持来自对应的调 试器的执行请求。 为此, 如果有 2 个以上的调试器连接到模拟器 10, 就能够以与本发明所公 开的内容同样的方法来实现同样的效果。
执行请求标志 13 保持来自调试器 11 的执行请求。在此, 作为初始值, 执行请求标 志 13 被设定为 0。接受来自调试器 11 的执行请求, 执行请求标志 13 被设定为 1, 从而保持 来自调试器 11 的执行请求。
并且, 由程序执行装置控制部 2 来变更执行请求标志 13 的设定值。另外, 执行请 求标志 14 与执行请求标志 13 同样, 因此省略其说明。
程序执行装置控制部 2, 根据执行请求标志 13 以及执行请求标志 14 所示的所述开 始请求以及停止请求的组合, 控制程序执行部 3 的执行的开始或停止。
具体而言, 程序执行装置控制部 2, 从连接到模拟器 10 的调试器 11 或调试器 12 接 受程序的执行请求或停止请求, 判定是否需要再次开始或停止程序的执行。 并且, 程序执行 装置控制部 2, 通过从正在执行的程序中检测断点来判定是否需要停止程序。
并且, 程序执行装置控制部 2, 按照是否需要再次开始程序的执行或停止程序的执 行的判定结果, 指示程序执行部 3 再次开始程序的执行或停止程序的执行。
并且, 程序执行装置控制部 2, 仅向与指示了程序执行部 3 停止程序的执行的程序 对应的调试器, 进行停止通知。
在此, 程序执行装置控制部 2 利用执行请求标志 13 以及执行请求标志 14 来判定 再次开始或停止程序的执行。
具体而言, 程序执行装置控制部 2 通过参照执行请求标志 13 以及执行请求标志 14 被设定的值, 判定再次开始程序的执行或停止程序的执行。 例如, 程序执行装置控制部 2, 如 果确认执行请求标志 13 以及执行请求标志 14 都被设定为 1, 则判定为程序执行部 3 的程序 为能够开始执行的状态, 如果程序执行部 3 未在执行程序, 则再次开始程序的执行。
在此, 例如, 程序执行部 3 停止程序的执行的情况下, 且程序执行装置控制部 2 确 认执行请求标志 13 被设定为 1 而执行请求标志 14 被设定为 0 的情况下, 程序执行装置控 制部 2 保留使程序的执行开始的控制, 直到执行请求标志 14 被设定为 1 为止。也就是说, 程序执行装置控制部 2 使程序执行部 3 的程序的执行停止, 直到执行请求标志 14 被设定为 1 为止。
并且, 例如, 程序执行部 3 正在执行程序的情况下, 且程序执行装置控制部 2 确认 执行请求标志 13 或执行请求标志 14 被设定为 0 的情况下, 程序执行装置控制部 2 判定为 程序执行部 3 处于不能继续程序的执行的状态, 如果程序执行部 3 正在执行程序则停止所 有的程序的执行。
程序执行部 3 能够并行执行或停止与多个调试器 ( 调试器 11 以及调试器 12) 的 每一个对应的程序。
并且, 程序执行部 3, 根据程序执行装置控制部 2 的指示, 执行或停止程序。
接着, 以作为模拟器 10 的典型的工作的 “再次开始” 、 “停止” 以及 “中断” 为例, 按 照调试器操作者的操作流程进行说明。
在此, 调试器操作者将多个调试器 ( 调试器 11 以及调试器 12) 连接到模拟器 10, 并利用模拟器 10 同时调试多个程序。首先, 调试器操作者将调试器 11 以及调试器 12 连接到模拟器 10。
然后, 调试器操作者将与每个调试器 ( 调试器 11 以及调试器 12) 分别对应的程序 加载到程序执行部 3。
调试器操作者, 在模拟器 10 中以调试器 11 以及调试器 12 开始执行多个程序的情 况下, 程序执行装置控制部 2 从调试器 11 或调试器 12 接受程序的执行请求。此时, 程序执 行装置控制部 2 接受程序的执行请求, 实施执行再次开始判定步骤 S1。
并且, 调试器操作者, 为了在模拟器 10 调试多个程序而停止单一的或多个程序的 执行的情况下, 程序执行装置控制部 2 实施程序执行停止步骤 S2。
并且, 调试器操作者, 为了调试多个程序而设置断点, 程序执行部 3 在执行程序时 检测出断点的情况下, 程序执行装置控制部 2 实施中断步骤 S3。
其次, 说明在程序执行装置控制部 2 实施的程序执行再次开始判定步骤 S1、 程序 执行停止步骤 S2 以及中断步骤 S3。
( 程序执行再次开始判定步骤 )
首先, 说明程序执行再次开始判定步骤 S1。 程序执行再次开始判定步骤 S1 是本发 明的实施例 1 中具有特征的程序执行再次开始判定方法。 图 3 是示出实施例 1 的程序执行再次开始判定步骤 S1 的处理的流程图。
模拟器 10 中的程序执行装置控制部 2, 从调试器 11 或调试器 12 接受程序的执行 请求, 开始程序执行再次开始判定步骤 S1。
首先, 程序执行装置控制部 2, 记忆从连接到模拟器 10 的调试器 11 或调试器 12 接 受了执行请求这一事宜 (S101 : 执行请求接受步骤 )。
在此, 程序执行装置控制部 2, 利用执行请求标志 13 或执行请求标志 14, 以明确是 从调试器 11 或调试器 12 中的哪一个调试器接受了执行请求。例如, 程序执行装置控制部 2, 在从调试器 11 接受了执行请求的情况下, 将执行请求标志 13 设定为 1, 在从调试器 12 接 受了执行请求的情况下, 将执行请求标志 14 设定为 1。在此, 执行请求标志 13 和执行请求 标志 14 的初始值为 0。
然后, 程序执行装置控制部 2, 判定是否从所有的调试器 ( 调试器 11 以及调试器 12) 接受了执行请求 (S102 : 执行请求受理判定步骤 )。
也就是说, 程序执行装置控制部 2 确认是否执行请求标志 13 和执行请求标志 14 这两者都被设定了 1。
程序执行装置控制部 2, 在 S102 判定为从所有的调试器 ( 调试器 11 以及调试 器 12) 接受了执行请求的情况下, 程序执行装置控制部 2 指示程序执行部 3 开始执行程序 (S103 : 程序执行再次开始步骤 )。
也就是说, 程序执行装置控制部 2, 在确认为执行请求标志 13 和执行请求标志 14 这两者都被设定了 1 的情况下, 指示程序执行部 3 开始执行程序。
并且, 结束程序执行再次开始判定步骤 S1。
另外, 程序执行装置控制部 2, 在 S102 判定为未从所有的调试器 ( 调试器 11 以及 调试器 12) 接受执行请求的情况下, 对程序执行部 3 不进行任何工作而结束程序执行再次 开始判定步骤 S1。
程序执行装置控制部 2, 如上所述, 实施程序执行再次开始判定步骤 S1。
另外, 在上述中虽未言及, 但是调试器 ( 调试器 11 或调试器 12) 向程序执行装置 1 进行了执行请求的情况下, 程序执行装置 1 不论实际上是否执行程序, 都返回接受了执行 请求这一应答, 因此调试器 ( 调试器 11 或调试器 12) 转入程序执行状态。
( 程序停止步骤 )
其次, 说明程序执行停止步骤 S2。 程序执行停止步骤 S2 是本发明的实施例 1 中具 有特征的程序执行停止方法。
图 4 是示出实施例 1 的程序执行停止步骤 S2 的处理的流程图。
模拟器 10 中的程序执行装置控制部 2 接受来自调试器 11 或调试器 12 的程序的 执行的停止请求, 开始程序执行停止步骤 S2。
首先, 程序执行装置控制部 2 识别是否从连接到模拟器 10 的调试器 11 或调试器 12 接受了程序的执行的停止请求。
在此, 程序执行装置控制部 2, 利用执行请求标志 13 或执行请求标志 14 来识别是 从调试器 11 或调试器 12 中的哪一个调试器接受了执行的停止请求。例如, 程序执行装置 控制部 2, 在从调试器 11 接受了执行的停止请求的情况下, 将执行请求标志 13 清 0 设定, 在 从调试器 12 接受了执行的停止请求的情况下, 将执行请求标志 14 清 0 设定。在此, 执行请 求标志 13 和执行请求标志 14 的初始值为 0。如在图 3 中的说明, 程序执行部 3 在执行与调 试器 11 以及调试器 12 对应的程序的情况下, 执行请求标志 13 和执行请求标志 14 被设定 为 1。 然后, 程序执行装置控制部 2 使来自连接到模拟器 10 的调试器的执行请求无效 (S201 : 执行请求无效化步骤 )。
具体而言, 程序执行装置控制部 2, 以执行请求标志 13 和执行请求标志 14 来识别 是从调试器 11 或调试器 12 中的哪一个调试器接受了停止请求, 并无效化发送了停止请求 的调试器的执行请求。 也就是说, 程序执行装置控制部 2, 在从调试器 11 接受了停止请求的 情况下, 将与调试器 11 对应的执行请求标志 13 清 0, 并确认执行请求标志 13 为 0, 并无效 化发送了停止请求的调试器 11 的执行请求。并且, 执行请求被无效化的调试器 11, 即使之 后向程序执行装置控制部 2 发送执行请求, 也不会反映到执行请求标志 13。
然后, 程序执行装置控制部 2 指示程序执行部 3 停止执行所有的程序 (S202 : 程序 执行停止步骤 )。程序执行部 3 接受来自程序执行装置控制部 2 的停止所有的程序的执行 的指示, 停止正在执行的所有的程序。
然后, 程序执行装置控制部 2, 仅向进行了停止请求的调试器通知已停止程序的执 行这一事宜 (S203 : 程序停止通知步骤 )。
然后, 结束程序执行停止步骤 S2。
程序执行装置控制部 2, 如上所述, 实施程序执行停止步骤 S2。
因为程序执行装置控制部 2 在步骤 S203 仅向进行了停止请求的调试器通知程序 执行的停止, 因此进行了停止请求的调试器以外的调试器维持执行状态。 为此, 不会出现来 自未进行停止请求的调试器的不必要的存储器参照等。据此, 程序执行装置 1 能够削减调 试器 ( 调试器 11 或调试器 12) 与程序执行装置 1 之间的通信, 能够迅速地处理来自进行了 停止请求的调试器 ( 调试器 11 或调试器 12) 的请求。
而且, 在调试器操作者进行了停止操作后, 来自调试器 11 或调试器 12 的请求会在
程序执行装置 1 迅速地被处理, 因此使调试器的操作者的作业高效化。
( 中断步骤 )
接着, 说明中断步骤 S3。 中断步骤 S3 是本发明的实施例中的具有特征的程序执行 停止方法。
图 5 是示出实施例 1 的中断步骤 S3 的处理的流程图。
模拟器 10 中的程序执行装置控制部 2, 从正在执行的程序检测出断点的情况下, 开始中断步骤 S3。
首先, 程序执行装置控制部 2 识别是从与连接到模拟器 10 的调试器 11 或调试器 12 中的哪一个对应的程序检测出断点的。
在此, 程序执行装置控制部 2, 利用执行请求标志 13 或执行请求标志 14, 来识别与 检测出断点的程序对应的调试器是调试器 11 或调试器 12 中的哪一个调试器。例如, 程序 执行装置控制部 2, 在与检测出断点的程序对应的调试器是调试器 11 的情况下, 将执行请 求标志 13 清 0 设定, 在与检测出断点的程序对应的调试器是调试器 12 的情况下, 将执行请 求标志 14 清 0 设定。
然后, 程序执行装置控制部 2, 与图 4 同样地, 使来自与检测出断点的程序对应的 调试器的执行请求无效 (S301 : 执行请求无效化步骤 )。 例如, 程序执行装置控制部 2, 在与检测出断点的程序对应的调试器是调试器 11 的情况下, 将与调试器 11 对应的执行请求标志 13 清 0。并且, 程序执行装置控制部 2 确认 执行请求标志 13 为 0, 并无效化来自调试器 11 的执行请求。
并且, 例如, 程序执行装置控制部 2, 在与检测出断点的程序对应的调试器为调试 器 12 的情况下, 将与调试器 12 对应的执行请求标志 14 清 0。并且, 程序执行装置控制部 2, 确认执行请求标志 14 为 0, 并无效化来自调试器 12 的执行请求。
然后, 程序执行装置控制部 2, 指示程序执行部 3 停止执行所有的程序 (S302 : 程序 执行停止步骤 )。程序执行部 3, 接受来自程序执行装置控制部 2 的所有的程序的执行的停 止指示, 停止正在执行的所有的程序。
然后, 程序执行装置控制部 2, 仅向与检测出断点的程序对应的调试器通知已停止 程序的执行这一事宜 (S303 : 停止通知步骤 )。
并且, 结束中断步骤 S3。
程序执行装置控制部 2, 如上所述, 实施中断步骤 S3。
程序执行装置控制部 2, 因为在步骤 S303 仅向与检测出断点的程序对应的调试 器通知程序执行的停止, 因此与检测出断点的程序对应的调试器以外的调试器维持执行状 态。因此, 不出现来自在断点未停止的调试器的不必要的存储器参照等。据此, 程序执行装 置 1, 能够削减调试器 ( 调试器 11 或调试器 12) 与程序执行装置 1 之间的通信, 能够迅速地 处理来自与检测出断点的程序对应的调试器 ( 调试器 11 或调试器 12) 的请求。
而且, 程序执行装置 1( 模拟器 10) 在断点停止后, 如果在程序执行装置 1 迅速地 处理来自调试器 11 或调试器 12 的请求, 则会使调试器的操作者的作业高效化。
如上所述, 实施例 1 所涉及的程序执行装置以及其控制方法, 无需调试器彼此的 连携就能够同步执行多个程序, 停止时也不会出现不必要的调试访问。
并且, 根据实施例 1 所涉及的程序执行装置以及其控制方法, 能够不论调试器的
状态和程序的执行状态是否对应而控制程序执行装置。
并且, 根据实施例 1 所涉及的程序执行装置以及其控制方法, 程序执行装置即使 接受了个别的调试器的执行请求, 也保留程序的执行, 直到从所有的调试器接受执行请求 为止, 从而能够在程序执行装置一侧使程序的执行同步, 而不需调试器之间的通信就能够 同步执行与每个调试器对应的程序。
并且, 根据实施例 1 所涉及的程序执行装置以及其控制方法, 对进行了停止请求 的调试器以外的调试器不进行停止通知, 以使未进行停止请求的调试器不转入停止状态, 从而能够防止出现未进行停止请求的调试器的不必要的调试访问。
并且, 根据实施例 1 所涉及的程序执行装置以及其控制方法, 与检测出断点的程 序对应的调试器之外的调试器不会从程序执行装置接收停止通知, 因此不会转入停止状 态。据此, 能够防止出现来自与检测出断点的程序无关的调试器的不必要的调试访问。
据此, 能够实现在调试器间不设置通信接口就能够同步执行且抑制调试访问的程 序执行装置以及其控制方法。
而且, 根据实施例 1 的程序执行装置以及其控制方法, 不仅能够在调试器间不设 置通信接口而实现同步执行, 而且也能够在使程序同步停止、 同步中断时仅使必要的调试 器转入停止状态, 因此能够防止出现不必要的调试访问而迅速地进行调试作业。
( 实施例 2)
在上述实施例 1 中, 说明了在调试器间不设置通信接口, 而根据标志所示的请求 的组合, 无需调试器彼此的连携而控制程序执行装置的方式的一个例子, 但是并不限定于 此。在实施例 2 中, 作为对程序执行装置进行控制的方式, 说明与实施例 1 不同的方式的 1 个例子。
图 6 是示出实施例 2 中的模拟器 10 以及连接到该模拟器 10 的调试器的构成的框 图。
模拟器 10 具备程序执行装置控制部 2 和程序执行部 3, 并与调试器 11、 调试器 12 连接。
程序执行装置控制部 2 具备 : 连接请求标志 21, 保持来自调试器 11 的连接请求或 切断请求 ; 连接请求标志 22, 保持来自调试器 12 的连接请求或切断请求。在此, 切断请求 是用于切断例如调试器 11 与模拟器 10 之间的连接的请求, 连接请求是物理性地新连接到 模拟器 10 的调试器用于与模拟器 10 连接的请求。
另外, 为了简便, 作为本发明的实施例说明连接有 2 个调试器的构成, 但是只要是 2 个以上, 连接几个调试器都可以。此时, 程序执行装置控制部 2 保持相当于连接到模拟器 10 的调试器的数量的数量的连接请求标志, 各个连接请求标志保持来自对应的调试器的连 接请求。 为此, 如果有 2 个以上的调试器连接到模拟器 10, 则能够以本发明所公开的内容相 同的方法, 实现同样的效果。
连接请求标志 21 保持来自调试器 11 的连接请求或切断请求。在此, 连接请求标 志 21 例如作为初始值被设定为 0。
并且, 由程序执行装置控制部 2 来变更连接请求标志 21 的设定值。
也就是说, 接受来自调试器 11 的连接请求, 连接请求标志 21 被设定为 1, 或接受切 断请求, 而连接请求标志 21 被设定为 0, 从而保持来自调试器 11 的连接请求或切断请求。另外, 连接请求标志 22 与连接请求标志 21 同样, 因此省略其说明。
程序执行装置控制部 2 从连接到模拟器 10 的调试器 11 或调试器 12 接受连接请 求或切断请求, 判定是否需要结束程序的执行。 在此, 结束程序的执行不仅包括使程序执行 部 3 结束正在执行的程序, 而且也包括关机等使模拟器 10 结束工作。
并且, 程序执行装置控制部 2, 按照是否需要结束程序的执行的判定结果, 指示程 序执行部 3 结束程序的执行。
在此, 程序执行装置控制部 2 利用连接请求标志 21 以及连接请求标志 22 来判定 程序的执行的结束。
具体而言, 程序执行装置控制部 2 参照连接请求标志 21 以及连接请求标志 22 被 设定的值, 来判定程序的执行的结束。 例如, 程序执行装置控制部 2, 如果确认为连接请求标 志 21 以及连接请求标志 22 都被设定为 0, 则判定为处于能够结束程序的执行的状态, 并结 束程序的执行。
而例如, 程序执行装置控制部 2 确认为连接请求标志 21 被设定为 0 而连接请求标 志 22 被设定为 1 的情况下, 能够判断为调试器 12 处于不能结束程序的执行的状态, 因此程 序执行装置控制部 2 保留结束程序的执行的控制, 直到连接请求标志 22 被设定为 0 为止。
接着, 说明本发明的实施例的程序执行结束判定步骤 S4。
图 7 是示出实施例 2 的程序执行结束判定步骤 S4 的处理的流程图。
模拟器 10 中的程序执行装置控制部 2 从调试器 11 或调试器 12 接受连接请求或 切断请求, 开始程序执行结束判定步骤 S4。
首先, 程序执行装置控制部 2 记忆从连接到模拟器 10 的调试器 11 或调试器 12 接 受了连接请求或切断请求这一事宜 (S401 : 连接请求或切断请求接受步骤 )。
在此, 程序执行装置控值部 2 利用连接请求标志 21 或连接请求标志 22, 来明确是 从调试器 11 或调试器 12 中的哪一个调试器接受了连接请求或切断请求。
例如, 程序执行装置控制部 2, 在从调试器 11 接受了连接请求的情况下, 将连接请 求标志 21 设定为 1, 在从调试器 12 接受了连接请求的情况下, 将连接请求标志 22 设定为 1。 相反, 程序执行装置控制部 2, 在从调试器 11 接受了切断请求的情况下, 将连接请求标志 21 设定为 0, 在从调试器 12 接受了切断请求的情况下, 将连接请求标志 22 设定为 0。在此, 连 接请求标志 21 和连接请求标志 22 的初始值为 0。
然后, 程序执行装置控值部 2 判定是否从所有的调试器 ( 调试器 11 以及调试器 12) 接受了切断请求 (S402 : 判断请求受理判定步骤 )。
也就是说, 程序执行装置控制部 2 确认是否连接请求标志 21 和连接请求标志 22 这两者都被设定为 0。
程序执行装置控制部 2, 在 S402 判定为从所有的调试器 ( 调试器 11 以及调试器 12) 接受了切断请求的情况下, 程序执行装置控制部 2 指示程序执行部 3 结束程序的执行 (S403 : 程序执行结束步骤 )。
也就是说, 程序执行装置控制部 2 在确认为连接请求标志 21 和连接请求标志 22 这两者都被设定为 0 的情况下, 指示程序执行部 3 结束程序的执行。
并且, 结束程序执行结束判定步骤 S4。
另外, 程序执行装置控制部 2, 在 S402 中判定为从任一个调试器 ( 调试器 11 或调试器 12) 接受了连接请求的情况下, 对程序执行部 3 不进行任何工作而结束程序执行结束 判定步骤 S4。
程序执行装置控制部 2, 如上所述, 实施程序执行结束判定步骤 S4。
以上, 根据实施例 2, 模拟器 10, 从连接到该模拟器 10 的调试器 11 以及调试器 12 个别地接受连接请求或切断请求, 来判定是否从连接到模拟器 10 的所有的调试器 ( 调试器 11 以及调试器 12) 接受了切断请求。并且, 模拟器 10, 在判定为从所有的调试器 ( 调试器 11 以及调试器 12) 接受了切断请求的情况下, 结束程序的执行。
这样, 实施例 2 所涉及的程序执行装置以及其控制方法, 在模拟器 10( 程序执行装 置 1) 判断为程序的调试已结束的时刻, 自动地结束程序的执行, 因此能够削减开发者以手 动来结束的工时。
如上所述, 根据实施例 2, 在调试器间不设置通信接口, 而根据标志所示的请求的 组合, 无需调试器彼此的连携而结束模拟器 10 的程序的执行。
( 实施例 3)
图 8 是示出实施例 3 的模拟器 10 以及连接到该模拟器 10 的调试器的构成的框图。
模拟器 10 具备程序执行装置控制部 2 和程序执行部 3, 并与调试器 11 以及调试器 12 连接。 程序执行装置控制部 2 具备 : 程序执行标志 33, 保持程序执行部 3 是否已执行程 序; 复位标志 31, 保持示出来自调试器 11 的复位请求的有效性的信息 ; 复位标志 32, 保持 示出来自调试器 12 的复位请求的有效性的信息。
另外, 为了简便, 作为本发明的实施例说明连接了 2 个调试器的构成, 但是只要是 2 个以上, 连接几个调试器都可以。此时, 程序执行装置控制部 2 保持相当于连接到模拟器 10 的调试器的数量的数量的复位标志, 各个复位标志与来自对应的调试器的复位请求对 应。 为此, 如果有 2 个以上的调试器连接到模拟器 10, 则能够以与本发明所公开的内容同样 的方法来实现同样的效果。
复位标志 31 保持示出来自调试器 11 的复位请求的有效性的信息。在此, 复位标 志 31 作为初始值被设定为 0, 由程序执行装置控制部 2 来变更设定值。
例如, 接受来自调试器 11 的复位请求, 如果其有效, 则复位标志 31 被设定为 1, 如 果其无效, 则复位标志 31 被设定为 0, 从而保持示出来自调试器 11 的复位请求是否有效的 信息。
程序执行标志 33 保持示出程序执行部 3 是否已执行程序的信息。在此, 程序执行 标志 33 作为初始值被设定为 0, 由程序执行装置控制部 2 来变更设定值。 并且, 所谓是否已 执行程序, 不仅包括是否在执行程序, 也包括是否已结束程序的执行。
例如, 程序执行标志 33, 在程序执行部 3 已执行程序的情况下, 被设定为 1。
另外, 复位标志 32 与复位标志 32 同样, 因此省略其说明。
程序执行装置控制部 2, 在将调试器新 ( 或者再度 ) 连接到模拟器 10 时, 从该调试 器接受复位请求, 判定是否需要复位处理。在此, 复位处理是使程序执行装置 1( 在此为模 拟器 10) 重返启动的状态的处理。
并且, 程序执行装置控制部 2, 按照是否需要复位处理的判定结果, 进行复位处理。
在此, 程序执行装置控制部 2, 利用程序执行标志 33、 复位标志 31 以及复位标志 32
来判定复位处理。
具体而言, 程序执行装置控制部 2, 通过参照程序执行标志 33 以及与发出复位请 求的例如调试器 11 对应的复位标志 31 的值, 从而判定复位处理。
并且, 例如程序执行装置控制部 2, 如果确认为程序执行标志 33 被设定为 1 而复位 标志 31 被设定为 0, 则继续程序的执行而不进行复位处理。 而如果确认为复位标志 31 被设 定为 1, 则进行复位处理并继续程序的执行。
另外, 对于复位标志 32 也与复位标志 31 同样。
接着, 说明实施例 3 中的复位处理判定步骤 S5。
图 9 是示出本发明的实施例 3 中的复位处理判定步骤 S5 的处理的流程图。
模拟器 10 中的程序执行装置控制部 2, 从调试器 11 或调试器 12 接受复位请求, 开 始复位处理判定步骤 S5。
首先, 程序执行装置控制部 2, 记忆从连接到模拟器 10 的调试器 11 或调试器 12 接 受了复位请求这一事宜 (S501 : 复位请求接受步骤 )。
然后, 程序执行装置控制部 2, 利用程序执行标志 33, 判定是否已执行程序 (S502 : 程序执行判定步骤 )。 也就是说, 程序执行装置控制部 2 确认程序执行标志 33 是否被设定为 1。
程序执行装置控制部 2, 在程序执行判定步骤 S502 中, 判定为已执行程序的情况 下, 不进行任何工作而结束复位处理判定步骤 S5。
也就是说, 程序执行装置控制部 2, 在确认为程序执行标志 33 被设定为 1 的情况 下, 不进行任何工作而结束复位处理判定步骤 S5。
相反, 程序执行装置控制部 2, 在程序执行判定步骤 S502 中, 在判定为未执行程序 的情况下, 则程序执行装置控制部 2 指示复位处理 (S503 : 复位处理执行步骤 )。
然后, 结束复位处理判定步骤 S5。
另外, 程序执行装置控制部 2, 在程序执行判定步骤 S502 判定从调试器 11 接受的 复位请求是否有效, 在其有效的情况下, 设定为 1, 并进入复位处理判定步骤 S5。相反, 在其 无效的情况下, 设定为 0, 结束复位处理判定步骤 S5。
程序执行装置控制部 2, 如上所述, 实施复位处理判定步骤 S5。
根据如上所述, 即使在正在执行程序时新连接了调试器的情况下, 也能够不影响 正在执行的程序而继续调试。
( 变形例 1)
其次, 说明本发明的实施例的复位处理判定步骤 S6。
图 10 是示出实施例 3 中的复位处理判定步骤 S6 的处理的流程图。
复位处理判定步骤 S6 是在上述复位处理判定步骤 S5 的基础上追加了复位处理无 效通知步骤 S604。另外, 与图 9 相同的要素附加同一符号, 并省略其说明。
程序执行装置控制部 2, 在程序执行判定步骤 S502 判定为已执行程序的情况下, 向发出了复位请求的调试器 ( 例如调试器 11) 通知复位处理已为无效这一事宜 (S604 : 无 效通知步骤 )。
其后, 结束复位处理判定步骤 S6。
程序执行装置执行部 2, 如上所述, 实施复位处理判定步骤 S6。
根据上述, 通过向调试器通知复位处理已变为无效这一事宜, 开发者能够认识到 复位处理已为无效, 而掌握模拟器 10( 程序执行装置 1) 的工作。
( 变形例 2)
其次, 说明本发明的实施例的复位处理判定步骤 S7。
图 11 是示出实施例 3 的复位处理判定步骤 S7 的处理的流程图。
复位处理判定步骤 S7 是在所述复位处理判定步骤 S5 的基础上追加了复位处理接 受判定步骤 S704。另外, 与图 9 相同的要素附加同一符号, 并省略详细的说明。
程序执行装置控制部 2, 在程序执行判定步骤 S502 判定为已执行程序的情况下, 判定是否接受复位处理。
也就是说, 程序执行装置控制部 2, 在确认为复位标志 31 被设定为 1 的情况下, 实 施复位处理执行步骤 S503。并且, 在实施复位处理执行步骤 S503 之后, 结束复位处理判定 步骤 S7。
相反, 程序执行装置控制部 2, 在确认为复位标志 31 被设定为 0 的情况下, 不进行 任何工作而结束复位处理判定步骤 S7。
另外, 复位标志 32 与复位标志 31 同样, 因此省略其说明。
程序执行装置控制部 2, 如上所述, 实施复位处理判定步骤 S7。
据此, 程序执行装置控制部 2, 如果从新连接的调试器 11 或调试器 12 接受复位请 求, 则能够不论程序执行标志 33 的状态而以开发者所期望的定时强制进行复位。
( 变形例 3)
其次, 说明本发明的实施例的复位处理判定步骤 S8。
图 12 是示出实施例 3 的复位处理判定步骤 S8 的处理的流程图。
复位处理判定步骤 S8 是在所述复位处理判定步骤 S5 的基础上追加了调试资源复 位处理执行步骤 S804。另外, 对于与图 9 相同的要素附加同一符号, 并省略其详细说明。
程序执行装置控制部 2, 在程序执行判定步骤 S502 判定为已执行程序的情况下, 执行调试资源的复位处理。
也就是说, 程序执行装置控制部 2, 在确认为程序执行标志 33 被设定为 1 的情况 下, 实施调试资源复位处理执行步骤 S804。并且, 实施调试资源复位处理执行步骤 S804 之 后, 结束复位处理判定步骤 S8。
程序执行装置控制部 2, 如上所述, 实施复位处理判定步骤 S7。
这样, 通过程序执行装置控制部 2 仅对正在执行程序时连接的调试器的调试资源 进行初始化, 从而能够防止调试资源在非正常的情况下进行处理。
以上, 根据实施例 2, 在调试器间不设置通信接口, 而根据标志所示的请求的组合, 无需调试器彼此的连携而进行复位处理或调试资源的初始化等。
如上所述, 根据本发明, 能够实现在调试器间不设置通信接口, 而根据标志所示的 请求的组合, 无需调试器彼此的连携而控制程序执行装置的程序执行装置以及其方法。
另外, 在实施例 1 ~ 3, 说明了在调试器间不设置通信接口, 而根据标志所示的请 求的组合, 无需调试器彼此的连携而控制程序执行装置的方式, 但是并不限定于此。 也就是 说, 如图 13 所示, 将这些全部组合起来的方式也包括在本发明的范围内。在此, 图 13 是示 出本发明的实施例的模拟器以及连接到该模拟器的调试器的构成的框图。以上, 根据实施例, 对本发明的程序执行装置以及其控制方法进行了说明, 但是本 发明并不限定于这些实施例。只要不超出本发明的宗旨, 对本发明的实施例进行了本领域 的技术人员所能想到的各种变形的方式, 或组合不同的实施例的构成要素来构筑的方式, 都包含在本发明的范围内。
本发明能够利用于程序执行装置以及其控制方法, 尤其能够利用于具有模拟多个 处理器的模拟器或安装了多个处理器的评估板的程序执行装置以及其控制方法, 或能够以 多调试器控制的系统 LSI 的模拟器的程序执行装置以及其控制方法。