專利名稱:調(diào)試系統(tǒng)、調(diào)試方法及程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及調(diào)試系統(tǒng)、調(diào)試方法及程序,更具體而言,本發(fā)明涉及具 有多個(gè)運(yùn)行單元的系統(tǒng)中的調(diào)試系統(tǒng)、調(diào)試方法及程序。
背景技術(shù):
近年來程序開發(fā)規(guī)模有了顯著增長(zhǎng),調(diào)試任務(wù)所需時(shí)間對(duì)產(chǎn)品開發(fā)進(jìn) 度有了越來越多的影響。結(jié)果,需要構(gòu)建一個(gè)能夠使調(diào)試的執(zhí)行更有效率的環(huán)境。諸如專利文獻(xiàn)1 "Processor Information Collector and Program Recording Medium Therefor"描述的調(diào)試系統(tǒng)之類的使用診斷處理器來支 持調(diào)試的方法是一種有效地執(zhí)行調(diào)試的方法。
如圖1所示,這類現(xiàn)有技術(shù)的調(diào)試系統(tǒng)配備有算術(shù)處理器組801、存 儲(chǔ)器設(shè)備802以及用于監(jiān)控算術(shù)處理器組801的操作狀態(tài)的診斷處理器 803。診斷處理器803還配備有用于檢測(cè)組成算術(shù)處理器組801的算術(shù) 處理器的每一個(gè)的停止?fàn)顟B(tài)的停止檢測(cè)器831,用于收集算術(shù)處理器的內(nèi) 部狀態(tài)的收集器832,用于將算術(shù)處理器的內(nèi)部狀態(tài)保存在存儲(chǔ)器設(shè)備 802中的寫單元834,以及用于初始化信息處理系統(tǒng)同時(shí)使存儲(chǔ)器設(shè)備802 中算術(shù)處理器的內(nèi)部狀態(tài)保持不變的初始化單元836。
現(xiàn)有技術(shù)的這類配置的調(diào)試系統(tǒng)操作如下。
停止檢測(cè)器831首先檢測(cè)組成算術(shù)處理器組801的算術(shù)處理器是否已 進(jìn)入停止?fàn)顟B(tài)。當(dāng)停止發(fā)生時(shí),收集器832收集算術(shù)處理器的內(nèi)部狀態(tài)并 將所收集的算術(shù)處理器的內(nèi)部狀態(tài)寫入存儲(chǔ)器設(shè)備802作為算術(shù)處理器內(nèi) 部狀態(tài)821。然后利用存儲(chǔ)器設(shè)備802中保存的未加改變的算術(shù)處理器的 內(nèi)部狀態(tài)來初始化信息處理系統(tǒng)。由于算術(shù)處理器的內(nèi)部狀態(tài)的信息即使 在初始化之后也保存在存儲(chǔ)器設(shè)備802中,因此該信息可用于執(zhí)行有關(guān)停 止發(fā)生的狀態(tài)的調(diào)試操作。
雖然如專利文獻(xiàn)1描述的現(xiàn)有技術(shù)之類的系統(tǒng)中安裝作為用于調(diào)試的
高端(high-function)專用硬件的診斷處理器803的方法可以取得提高調(diào)試 效率的效果,但該方法具有需要增加不對(duì)正常操作有幫助的額外硬件以及 提高系統(tǒng)成本的缺點(diǎn)。此外,意味著組件內(nèi)建的設(shè)備成本增加的要求特別 嚴(yán)格,這常常阻礙專用硬件的安裝。
另一方面,半導(dǎo)體集成電路的小型化和系統(tǒng)LSI的更多功能需求導(dǎo)致 多個(gè)諸如CPU之類的運(yùn)行單元在系統(tǒng)LSI中的安裝量的增加。專利文獻(xiàn)2 "Resetting Circuit and Resetting Method for Multiple CPU"中公開的調(diào)試系 統(tǒng)是用于增加調(diào)試效率同時(shí)避免用于調(diào)試的專用硬件所造成的成本增加的 現(xiàn)有技術(shù)的示例。
如圖2所示,現(xiàn)有技術(shù)的這類調(diào)試系統(tǒng)配備有用于控制包含多個(gè)CPU (CPU-A901禾卩CPU-B902)的系統(tǒng)LSI的重置和中斷的CPU控制電路
903。 CPU控制電路903具有將多個(gè)CPU (CPU-A901和CPU-B902)之一 設(shè)置到調(diào)試裝置中的能力,所述調(diào)試裝置中用于正常操作的程序被用于調(diào) 試的程序所取代。此外,CPU控制電路903還配備有中斷控制電路
904、 總線跟蹤功能905、母線(strap)采集電路906和調(diào)試控制電路 907。
參考圖3,本說明接下來涉及具有這類配置的現(xiàn)有技術(shù)調(diào)試系統(tǒng)的操作。
首先,當(dāng)CPU控制電路903檢測(cè)硬件重置時(shí),調(diào)試控制電路907發(fā)布 用于重置每個(gè)內(nèi)部功能塊(未示出)的命令(步驟S91)。
母線采集電路906接下來從母線設(shè)置單元908讀取諸如母線信息之類 的外部設(shè)置信息(步驟S92)。
當(dāng)已被讀取的母線信息指示正常操作時(shí)(步驟S93中的"否"),調(diào) 試控制電路907基于已被讀取的母線信息取消對(duì)CPU-A901和CPU-B902 以及對(duì)每個(gè)功能塊的重置(步驟S94)。
當(dāng)重置被取消時(shí),每個(gè)功能塊幵始工作(步驟S95)。
另一方面,當(dāng)已被讀取的母線信息指示調(diào)試時(shí)(步驟S93中的 "是"),調(diào)試過程開始(步驟S96)。
當(dāng)母線信息選擇CPU-B902作為調(diào)試器時(shí)(步驟S961中的"B"), 調(diào)試控制電路907取消對(duì)已被母線信息選擇的CPU-B902的重置(步驟 S%2)。
然后調(diào)試器CPU-B902被激活(步驟S963),并且當(dāng)完成啟動(dòng)操作后 (步驟S964中的"是"),目標(biāo)CPU-A901和每個(gè)功能塊的重置被取消 (步驟S965)。
另一方面,當(dāng)母線信息選擇CPU-A901作為調(diào)試器時(shí)(步驟S961中 的"A"),調(diào)試控制電路907取消對(duì)已被母線信息選擇的CPU-A901的 重置(步驟S966)。
然后調(diào)試器CPU-A901啟動(dòng)(歩驟S967),并且當(dāng)完成啟動(dòng)操作后 (步驟S968中的"是"),目標(biāo)CPU-B902和每個(gè)功能塊的重置被取消 (步驟S969)。
當(dāng)調(diào)試在多個(gè)運(yùn)行單元執(zhí)行相連操作的系統(tǒng)中運(yùn)行的程序時(shí),涉及多 個(gè)運(yùn)行單元之間通信的并且可由除運(yùn)行單元之外的組件從外部檢查的信息 或者在差錯(cuò)發(fā)生期間生成的信息被保存然后被檢査。但是在本方法中,差 錯(cuò)發(fā)生的原因在很多情況下無法充分調(diào)查。另一方面,當(dāng)使用人工生成由 正常操作程序或向調(diào)試技術(shù)員匯報(bào)發(fā)送/接收內(nèi)容的調(diào)試程序生成的發(fā)送內(nèi) 容的調(diào)試程序時(shí),差錯(cuò)發(fā)生的原因通??杀挥行У卣{(diào)査。因此在運(yùn)行單元 上實(shí)施這些調(diào)試程序以執(zhí)行調(diào)試任務(wù)。
但是,事先實(shí)施這些調(diào)試程序會(huì)增加CPU的負(fù)荷,并且由于調(diào)試程序
使用存儲(chǔ)區(qū)域,會(huì)影響正常操作程序的操作定時(shí)。結(jié)果,調(diào)試程序的存在 具有阻礙正常操作中可能發(fā)生的差錯(cuò)的發(fā)生,以及相反,導(dǎo)致只運(yùn)行正常 操作程序時(shí)不應(yīng)發(fā)生的差錯(cuò)的發(fā)生的缺點(diǎn)。
另外,在多個(gè)運(yùn)行單元執(zhí)行相連操作的系統(tǒng)內(nèi)運(yùn)行的程序中,發(fā)生差 錯(cuò)特別是定時(shí)產(chǎn)生的差錯(cuò)的運(yùn)行單元無法唯一確定,因此這類差錯(cuò)的發(fā)生 很難預(yù)測(cè)。當(dāng)運(yùn)行單元進(jìn)入停止?fàn)顟B(tài)或者對(duì)運(yùn)行單元的操作有影響的差錯(cuò) 發(fā)生時(shí),調(diào)試程序可能對(duì)處于停止?fàn)顟B(tài)的運(yùn)行單元不可用,或者調(diào)試程序 可能對(duì)受影響的操作所處的運(yùn)行單元不可用。結(jié)果,可能必須在不同的運(yùn) 行單元中操作調(diào)試程序。但是,當(dāng)差錯(cuò)發(fā)生的位置無法唯一確定時(shí),不受差錯(cuò)影響的運(yùn)行單元也無法確定。
專利文獻(xiàn)2描述的現(xiàn)有技術(shù)的方法的特征是在重置時(shí)指派激活調(diào)試程 序的運(yùn)行單元(調(diào)試CPU),并且在改變調(diào)試CPU時(shí)必須再次執(zhí)行重 置。結(jié)果,當(dāng)對(duì)已在重置時(shí)指派的調(diào)試CPU的操作有影響的差錯(cuò)發(fā)生時(shí), 狀態(tài)不能被調(diào)試。
如上所述,在現(xiàn)有技術(shù)的上述調(diào)試系統(tǒng)中,當(dāng)在多個(gè)運(yùn)行單元 (CPU)執(zhí)行相連操作的系統(tǒng)中執(zhí)行調(diào)試時(shí)會(huì)出現(xiàn)以下問題
(1) 當(dāng)調(diào)試程序被事先激活時(shí),操作定時(shí)與只運(yùn)行正常操作程序的情 況不同,因此調(diào)試程序的存在阻礙了正常操作中可能發(fā)生的差錯(cuò)的發(fā)生, 或者相反,導(dǎo)致只運(yùn)行正常操作程序時(shí)不應(yīng)發(fā)生的差錯(cuò)發(fā)生。
(2) 將運(yùn)行調(diào)試程序的運(yùn)行單元必須事先設(shè)置,但對(duì)已被設(shè)置的運(yùn)行 單元的操作有影響的差錯(cuò)的發(fā)生阻礙了對(duì)狀態(tài)的調(diào)試。
專利文獻(xiàn)l: JP-A-H11-184736
專利文獻(xiàn)2: JP-A-2004-16411
發(fā)明內(nèi)容
鑒于上述問題完成本發(fā)明,其目標(biāo)是提供在多個(gè)運(yùn)行單元執(zhí)行相連操 作的系統(tǒng)中允許在任何時(shí)刻任何運(yùn)行單元上激活調(diào)試程序以執(zhí)行調(diào)試任務(wù) 的調(diào)試系統(tǒng)、調(diào)試方法及程序。
為了取得上述目標(biāo),本發(fā)明的調(diào)試系統(tǒng)是用于執(zhí)行對(duì)多個(gè)運(yùn)行單元執(zhí)行相連操作的系統(tǒng)中運(yùn)行的程序的調(diào)試的調(diào)試系統(tǒng),所述調(diào)試系統(tǒng)包括
激活指令分發(fā)裝置,用于在收到指示激活調(diào)試程序的激活指令后,將激活指令分發(fā)給多個(gè)運(yùn)行單元;以及
多個(gè)調(diào)試程序激活裝置,它們對(duì)應(yīng)于多個(gè)運(yùn)行單元中的每一個(gè)被提 供,用于基于已由激活指令分發(fā)裝置分發(fā)的激活指令在相應(yīng)的運(yùn)行單元上 激活調(diào)試程序。
激活指令分發(fā)裝置可向?qū)?yīng)于已由激活指令指定的運(yùn)行單元的調(diào)試程 序激活裝置發(fā)送激活指令。
根據(jù)本發(fā)明,用于激活調(diào)試程序的調(diào)試程序激活裝置被提供給每個(gè)運(yùn)
行單元,且該調(diào)試程序激活裝置基于由激活指令分發(fā)裝置分發(fā)的激活指令 來執(zhí)行調(diào)試程序的激活。結(jié)果,任何時(shí)刻,甚至是在只運(yùn)行正常操作程序 的狀態(tài)中已確認(rèn)差錯(cuò)時(shí),都可以在執(zhí)行作為差錯(cuò)發(fā)生原因的過程的運(yùn)行單 元上激活調(diào)試程序并執(zhí)行調(diào)試操作。
此外,激活指令分發(fā)裝置可向與基于多個(gè)運(yùn)行單元中的每一個(gè)的操作 狀態(tài)確定的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置發(fā)送激活指令。
激活指令分發(fā)裝置還可檢測(cè)多個(gè)運(yùn)行單元中的每一個(gè)使用的存儲(chǔ)區(qū)域 的未占用容量,然后向與被檢測(cè)的未占用容量中存在剩余的運(yùn)行單元相對(duì) 應(yīng)的調(diào)試程序激活裝置發(fā)送激活指令。
該配置可避免由于未占用容量不足無法激活調(diào)試程序的狀態(tài)的發(fā)生。
激活指令分發(fā)裝置還可向與作為調(diào)試目標(biāo)的運(yùn)行單元關(guān)系很小或無關(guān) 的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置發(fā)送激活指令。
該配置可避免諸如在與執(zhí)行導(dǎo)致差錯(cuò)發(fā)生的過程的運(yùn)行單元一起執(zhí)行 相連操作的運(yùn)行單元上激活調(diào)試程序之類問題的發(fā)生,從而避免了檢查差 錯(cuò)發(fā)生的原因。
本發(fā)明的另一個(gè)調(diào)試系統(tǒng)還配備有中繼(relay)裝置,所述中繼裝置 對(duì)應(yīng)于多個(gè)運(yùn)行單元的任意之一被提供,用來將從通信端口發(fā)往調(diào)試程序 的命令中繼到由激活指令指定的運(yùn)行單元上的調(diào)試程序。
本發(fā)明可應(yīng)用于作為通信端口的通信目標(biāo)的運(yùn)行單元固定的系統(tǒng)。
本發(fā)明的另一個(gè)調(diào)試系統(tǒng)還配備有多個(gè)中繼裝置,所述多個(gè)中繼裝置 對(duì)應(yīng)于多個(gè)運(yùn)行單元中的每一個(gè)被提供,用來將從通信端口發(fā)往調(diào)試程序 的命令中繼到由激活指令指定的運(yùn)行單元上的調(diào)試程序。
根據(jù)本發(fā)明,中繼裝置被提供給每個(gè)運(yùn)行單元用于傳遞發(fā)往調(diào)試程序 的命令,通過該命令,即使特定運(yùn)行單元進(jìn)入停止?fàn)顟B(tài)時(shí),也可在不需要 對(duì)作為通信端口的通信目標(biāo)的運(yùn)行單元進(jìn)行復(fù)雜切換的前提下,在多個(gè)運(yùn) 行單元上同時(shí)激活多個(gè)調(diào)試程序。
本發(fā)明的另一個(gè)調(diào)試系統(tǒng)還配備有停止運(yùn)行單元避免裝置,用于避免 將激活指令發(fā)送到與處于停止?fàn)顟B(tài)的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝 置。
根據(jù)本發(fā)明,停止運(yùn)行單元避免裝置的配備可以避免調(diào)試程序激活指令被發(fā)送到與處于停止?fàn)顟B(tài)的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置的問題,從而避免了調(diào)試操作的運(yùn)行。
另外,本發(fā)明的另一個(gè)調(diào)試系統(tǒng)中,在多個(gè)運(yùn)行單元中的任意一個(gè)中待激活的調(diào)試程序配備有
物理-虛擬地址轉(zhuǎn)換裝置,用于將虛擬地址轉(zhuǎn)換為物理地址;
以及信息提取裝置,使用已被物理-虛擬地址轉(zhuǎn)換裝置轉(zhuǎn)換的物理地址,并考慮到操作系統(tǒng)在存儲(chǔ)器中安排控制信息的結(jié)構(gòu),來從如下存儲(chǔ)區(qū)域中提 取必要信息所述存儲(chǔ)區(qū)域被作為調(diào)試目標(biāo)并與激活了調(diào)試程序的運(yùn)行單 元不同的運(yùn)行單元所使用。
根據(jù)本發(fā)明,調(diào)試程序中物理-虛擬地址轉(zhuǎn)換裝置和信息提取裝置的配備允許調(diào)試程序參考被與已激活的運(yùn)行單元不同的運(yùn)行單元使用的存儲(chǔ)區(qū)域。結(jié)果,即使作為調(diào)試目標(biāo)的運(yùn)行單元處于停止?fàn)顟B(tài)時(shí),也可以從外部 檢查存儲(chǔ)區(qū)域的內(nèi)容。
另外,本發(fā)明的另一個(gè)調(diào)試系統(tǒng)還配備有差錯(cuò)檢測(cè)裝置,用于從多個(gè)運(yùn)行單元中檢測(cè)發(fā)生差錯(cuò)的運(yùn)行單元,并生成用于執(zhí)行對(duì)已檢出的運(yùn)行單元的調(diào)試的激活指令。
根據(jù)本發(fā)明,當(dāng)多個(gè)運(yùn)行單元中的任意運(yùn)行單元中發(fā)生差錯(cuò)時(shí),用于調(diào)試差錯(cuò)的調(diào)試程序激活指令可由差錯(cuò)檢測(cè)裝置生成以自動(dòng)激活調(diào)試程序。因此,調(diào)試任務(wù)可在不從外部生成調(diào)試程序激活指令的前提下執(zhí)行。
另外,本發(fā)明的另一個(gè)調(diào)試系統(tǒng)中,中斷處理器作為多個(gè)運(yùn)行單元中的每一個(gè)中發(fā)生中斷時(shí)首先被激活用于處理中斷的程序,其配備有
信息獲取/控制裝置,當(dāng)中斷從另一個(gè)運(yùn)行單元生成時(shí),用于在已事先 設(shè)置的存儲(chǔ)器中獲取信息;以及
響應(yīng)生成裝置,用于將已由信息獲取/控制裝置獲取的信息發(fā)送到生成 中斷的運(yùn)行單元;
并且,在多個(gè)運(yùn)行單元中的任一個(gè)中激活的調(diào)試程序配備有
運(yùn)行單元間中斷生成裝置,用于對(duì)作為調(diào)試目標(biāo)的運(yùn)行單元生成中斷;以及響應(yīng)接收裝置,用于接收來自作為調(diào)試目標(biāo)的運(yùn)行單元的響應(yīng)。
根據(jù)本發(fā)明,中斷處理器配備有用于在存儲(chǔ)器中獲取信息的信息獲取/ 控制裝置,并且調(diào)試程序配備有運(yùn)行單元間中斷生成裝置,由此即使在作 為調(diào)試目標(biāo)的運(yùn)行單元處于停止?fàn)顟B(tài)時(shí),也可以獲取諸如緩存器或寄存器 之類的存儲(chǔ)器中的信息來執(zhí)行調(diào)試任務(wù)。
如上述說明所述,本發(fā)明中調(diào)試程序激活指令分發(fā)裝置和調(diào)試程序激 活裝置的配備可以實(shí)現(xiàn)使得在任何時(shí)刻任何運(yùn)行單元中能夠激活調(diào)試程序 的配置,因此本發(fā)明可以獲得導(dǎo)致在只運(yùn)行正常操作程序的狀態(tài)中生成差 錯(cuò)的效果,或者可以繼續(xù)操作直至差錯(cuò)生成的前一刻然后在執(zhí)行導(dǎo)致差錯(cuò) 發(fā)生的過程的運(yùn)行單元中激活調(diào)試程序,然后實(shí)施調(diào)試任務(wù)。
圖1是示出傳統(tǒng)調(diào)試系統(tǒng)的配置示例的框圖2是示出傳統(tǒng)調(diào)試系統(tǒng)的另一個(gè)配置示例的框圖3是用于說明圖2所示調(diào)試系統(tǒng)的操作的流程圖4是示出用于操作本發(fā)明的目標(biāo)硬件的配置示例的框圖5是示出本發(fā)明的第一示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框圖6是示出圖5所示調(diào)試程序激活指令分發(fā)單元的示例的框圖7是用于說明圖5所示調(diào)試系統(tǒng)的操作的流程圖8是用于說明圖5和圖6所示調(diào)試程序激活指令分發(fā)單元的操作的 流程圖9是示出本發(fā)明的第二示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框圖IO是示出本發(fā)明的第三示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框圖11是示出本發(fā)明的第四示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框圖12是用于說明圖ll所示停止運(yùn)行單元避免單元的操作的流程圖13是示出本發(fā)明的第五示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框圖14是用于說明圖13所示物理-虛擬地址轉(zhuǎn)換器的第二物理-虛擬地 址轉(zhuǎn)換操作的流程圖15是用于說明圖13所示信息提取器的操作的流程圖16是示出本發(fā)明的第六示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框圖17是用于說明圖16所示差錯(cuò)檢測(cè)器的第二配置的操作的流程圖18是用于說明圖16所示差錯(cuò)檢測(cè)器的第三配置的操作的流程圖19是用于說明圖16所示差錯(cuò)檢測(cè)器的第四配置的操作的流程圖20是示出本發(fā)明的第七示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框圖21是用于說明圖20所示調(diào)試系統(tǒng)的操作的流程圖22是示出本發(fā)明的第八示例性實(shí)施例的調(diào)試系統(tǒng)的配置的框以及
圖23是用于說明圖22所示調(diào)試系統(tǒng)的操作的流程圖。
具體實(shí)施例方式
參考附圖,本說明接下來涉及本發(fā)明的實(shí)施例。
第一示例性實(shí)施例
參考附圖,本說明首先涉及本發(fā)明的第一示例性實(shí)施例的調(diào)試系統(tǒng)。
如圖4所示,本示例性實(shí)施例的調(diào)試系統(tǒng)配備有兩個(gè)運(yùn)行單元A和 B,通信端口 1,諸如RAM (隨機(jī)存取存儲(chǔ)器)的可重寫存儲(chǔ)器單元2, 以及例如由HDD (硬盤驅(qū)動(dòng)器)組成并存儲(chǔ)各種程序的程序存儲(chǔ)單元3。 存儲(chǔ)器單元2的存儲(chǔ)區(qū)域由運(yùn)行單元-A程序區(qū)域6和運(yùn)行單元-B程序區(qū)域 7組成。
如圖5所示,運(yùn)行單元"A程序區(qū)域6配備有調(diào)試程序激活指令分發(fā) 單元(圖5中表示為"分發(fā)單元")61,調(diào)試程序激活單元(圖5中表示 為"激活單元")62,調(diào)試程序63,以及正常操作程序64。這些組件被 提供為在運(yùn)行單元A上運(yùn)行的程序。
另外,如圖5所示,運(yùn)行單元-B程序區(qū)域7還配備有調(diào)試程序激活指 令分發(fā)單元71、調(diào)試程序激活單元72,調(diào)試程序73,以及正常操作程序 74。這些組件被提供為在運(yùn)行單元B上運(yùn)行的程序。
這種情況下,調(diào)試程序激活指令分發(fā)單元61和71以及調(diào)試程序激活 單元62和72在運(yùn)行單元A和B上被激活之前僅被存儲(chǔ)為存儲(chǔ)器單元2中 的程序而不執(zhí)行各種操作。但是,為了簡(jiǎn)化說明,本文中調(diào)試程序激活指 令分發(fā)單元61和71以及調(diào)試程序激活單元62和72被描述為單獨(dú)執(zhí)行各種操作的組件。
這些各種程序從程序存儲(chǔ)單元3讀入存儲(chǔ)器單元2并存儲(chǔ)到存儲(chǔ)器單 元2的預(yù)定區(qū)域。
在收到從通信端口 1發(fā)送的調(diào)試程序的激活指令(下午簡(jiǎn)稱為"激活
指令")后,調(diào)試程序激活指令分發(fā)單元61和71將收到的調(diào)試程序分發(fā) 到由激活指令指定的運(yùn)行單元。調(diào)試程序激活單元62和72對(duì)應(yīng)于運(yùn)行單 元A和B的每一個(gè)被提供,并基于已由激活指令分發(fā)單元61和71分發(fā)的 激活指令來激活相應(yīng)的調(diào)試程序63和73。
如圖6所示,調(diào)試程序激活指令分發(fā)單元61配備有接收來自通信 端口 1的激活指令的接收器611;將激活指令發(fā)送到調(diào)試程序激活單元62 的發(fā)送器614;使用運(yùn)行單元間通信來將激活指令發(fā)送到其他運(yùn)行單元B 的發(fā)送器612;使用運(yùn)行單元間通信來接收從其他運(yùn)行單元B發(fā)送的激活 指令的接收器615;以及改變作為通信端口 1的通信目標(biāo)的運(yùn)行單元的通 信目標(biāo)改變單元613。
調(diào)試程序激活指令分發(fā)單元71類似地配備有接收器711、發(fā)送器 714、發(fā)送器712、接收器715以及通信目標(biāo)改變單元713。
參考圖5和圖7的流程圖,本說明接下來涉及本實(shí)施例的調(diào)試系統(tǒng)的 總體操作。
已作為外部控制終端(未示出)的輸入被施加的激活指令首先被發(fā)送 到通信端口 1。該激活指令包括指定其中將激活調(diào)試程序的運(yùn)行單元的代 碼,以及指定將被激活的調(diào)試程序的類型的代碼。
這種情況下,已經(jīng)收到來自通信端口 1的調(diào)試程序激活指令(步驟 Sl)的調(diào)試程序激活指令分發(fā)單元61和71將該激活指令分發(fā)到激活指令 中指定的并且其中將激活調(diào)試程序的多個(gè)運(yùn)行單元,并將激活指令發(fā)布給 調(diào)試程序激活單元62和72 (步驟S2)。然后調(diào)試程序激活單元62和72 激活調(diào)試程序63和73 (步驟S3)。
當(dāng)調(diào)試程序63和73接收來自通信端口 1的命令(步驟S4)時(shí),由調(diào) 試程序63和73提供的命令分析單元(未示出)分析該命令。當(dāng)從通信端 口 1接收的命令為調(diào)試命令(步驟S5中的"否")時(shí),根據(jù)該命令運(yùn)行操作內(nèi)容,并執(zhí)行調(diào)試任務(wù)。在這種情況下,數(shù)據(jù)還可取決于操作內(nèi)容通 過通信端口 1來發(fā)送和接收。當(dāng)從通信端口 1接收的命令為"結(jié)束"命令
(步驟S5中的"是")時(shí),調(diào)試程序63和73結(jié)束該調(diào)試。
這種情況下的命令分析單元是用于分析收到的由調(diào)試程序63和73組 成的命令內(nèi)容的裝置。除了上述"結(jié)束"命令,命令類型例如還包括用于 讀取存儲(chǔ)器或寄存器的內(nèi)容的命令以及用于將值寫入存儲(chǔ)器或寄存器的命 令。
參考圖6和圖8的流程圖,本說明接下來涉及調(diào)試程序激活指令分發(fā) 單元61和71的操作。此處的說明涉及通信端口 1的中斷目的地的初始值 為運(yùn)行單元A的情況。
首先,調(diào)試程序激活指令從通信端口 l發(fā)送,中斷對(duì)運(yùn)行單元A生成
(步驟Sll)且激活指令分發(fā)單元61被激活。然后接收器11接收來自通 信端口 1的激活指令(步驟S12)并確定目的地。這種情況下,當(dāng)目的地 為運(yùn)行單元A (步驟S21中的"是")時(shí),發(fā)送器614將激活指令發(fā)送到 運(yùn)行單元A的調(diào)試程序激活單元62 (步驟S22)。另一方面,當(dāng)目的地為 運(yùn)行單元B (步驟S21中的"否")時(shí),使用運(yùn)行單元間通信的發(fā)送器 612將激活指令發(fā)送到運(yùn)行單元B (步驟S23)。當(dāng)B側(cè)運(yùn)行單元上的激 活指令分發(fā)單元71接下來通過接收器715接收該激活指令(步驟S24) 時(shí),通信目標(biāo)改變單元713將通信端口 1的通信目標(biāo)改變?yōu)檫\(yùn)行單元B
(步驟S25),且發(fā)送器714將激活指令發(fā)送到調(diào)試程序激活單元72。
在本示例性實(shí)施例中,說明假設(shè)調(diào)試程序由來自通信端口 1的調(diào)試程 序激活指令的接收來激活。也可以有另一個(gè)配置,其中使用定時(shí)器來應(yīng)用 激活指令,由此調(diào)試程序在固定時(shí)間間隔流逝后被激活,然后此時(shí)的狀態(tài) 被檢查?;蛘撸鶕?jù)設(shè)置斷點(diǎn)(breakpoint)的方法或者作為調(diào)試目標(biāo)的程 序本身在到達(dá)特定點(diǎn)時(shí)發(fā)出激活指令的方法,程序可在程序到達(dá)特定位置
時(shí)激活調(diào)試程序。
另外,雖然此處的說明涉及本實(shí)施例中系統(tǒng)配備有兩個(gè)運(yùn)行單元A和 B的示例,但本實(shí)施例很容易擴(kuò)展到配備有諸如三個(gè)或更多數(shù)目的運(yùn)行單 元的系統(tǒng)。
另外,雖然此處的說明涉及本實(shí)施例中激活調(diào)試程序的運(yùn)行單元被事 先指定且調(diào)試激活指令分發(fā)單元61和71將激活指令分發(fā)到由激活指令指 定的運(yùn)行單元的情況,但激活調(diào)試程序的運(yùn)行單元被自動(dòng)選擇的配置也是 可以的。例如,調(diào)試程序激活指令分發(fā)單元61和71可具有如下配置,其中激活指令被發(fā)送到與基于運(yùn)行單元A和B的操作狀態(tài)確定的運(yùn)行單元相 對(duì)應(yīng)的調(diào)試程序激活單元。這種情況下,運(yùn)行單元A和B的操作狀態(tài)例如 指示運(yùn)行單元A和B的每一個(gè)使用的存儲(chǔ)區(qū)域的未占用容量或者運(yùn)行單元 A和B之間的連接狀態(tài)。
當(dāng)基于運(yùn)行單元A和B的每一個(gè)的存儲(chǔ)區(qū)域的未占用容量選擇了分發(fā) 目的地時(shí),激活指令分發(fā)單元61和71可具有如下配置,其中運(yùn)行單元A 和B的,一個(gè)的存儲(chǔ)區(qū)域的未占用容量被檢測(cè),且激活指令被分發(fā)到與被 檢測(cè)的未占用容量中存在剩余的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活單元。采 用這類配置的模式包括運(yùn)行單元A和B的每一個(gè)上的激活指令分發(fā)單元 61和71檢測(cè)未占用容量然后將未占用容量匯報(bào)給其他運(yùn)行單元的模式, 以及運(yùn)行單元A和B的每一個(gè)上的激活指令分發(fā)單元61和71通過直接參 考其他運(yùn)行單元使用的存儲(chǔ)區(qū)域來獨(dú)立檢測(cè)未占用容量的模式。
本示例性實(shí)施例的說明采用兩個(gè)運(yùn)行單元A和B執(zhí)行相連操作的系統(tǒng) 作為示例。三個(gè)或更多運(yùn)行單元A和B執(zhí)行相連操作的系統(tǒng)中使甩的程序 為調(diào)試目標(biāo)時(shí),激活指令的分發(fā)目的地可以通過查清連接狀態(tài)來確定。
在這種情況下,激活指令分發(fā)單元61和71可具有如下配置,其中每 個(gè)程序首先檢測(cè)與其他程序的通信路徑有保證,然后將激活指令分發(fā)到與 執(zhí)行相連操作且作為調(diào)試目標(biāo)的程序關(guān)系很小或無關(guān)的運(yùn)行單元。作為這 種情況下檢測(cè)通信路徑已有保證的方法,可以采用由程序檢測(cè)已執(zhí)行了函 數(shù)調(diào)用來保證通信路徑的方法,或者可以采用調(diào)查保存了通信路徑的狀態(tài) 的存儲(chǔ)區(qū)域的方法。
另一方面,作為調(diào)試目標(biāo)的程序與其他運(yùn)行單元上工作的程序執(zhí)行相 連操作時(shí),可以釆用如下配置,其中激活指令不僅分發(fā)到作為調(diào)試目標(biāo)的 程序工作的運(yùn)行單元,而且分發(fā)到相連的運(yùn)行單元,然后相連的程序作為 一個(gè)集合被當(dāng)作調(diào)試目標(biāo)。
說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng)的效果。
在本示例性實(shí)施例中,調(diào)試程序激活指令分發(fā)單元61和71以及調(diào)試程序激活單元62和72 —起被提供為在運(yùn)行單元A和B上運(yùn)行的程序,并且還具有如下配置,其中接收激活指令后在運(yùn)行單元A和B任意之一上激活調(diào)試程序,由此可以實(shí)現(xiàn)增加調(diào)試任務(wù)的效率而不伴隨由調(diào)試專用的硬件造成的成本增加。
另外,本示例性實(shí)施例中調(diào)試程序激活指令分發(fā)單元61和71以及調(diào)試程序激活單元62和72的配備使得調(diào)試程序可以在任何時(shí)刻任何運(yùn)行單元上激活。結(jié)果,差錯(cuò)可以在只運(yùn)行正常操作程序的狀態(tài)中生成,或者可 以運(yùn)行正常操作程序直至差錯(cuò)生成的前一刻,接著可以在執(zhí)行導(dǎo)致差錯(cuò)發(fā)生的過程的運(yùn)行單元上激活調(diào)試程序,然后執(zhí)行調(diào)試任務(wù)。
另外,本實(shí)施例中還可有如下配置,其中可以使用定時(shí)器來應(yīng)用調(diào)試程序的激活指令,然后在固定時(shí)間間隔流逝后激活調(diào)試程序。該配置的采用可以消除調(diào)試技術(shù)員應(yīng)用激活指令時(shí)產(chǎn)生的調(diào)試程序的激活定時(shí)發(fā)散 (divergence)的影響,還可以高時(shí)間精度地調(diào)整激活定時(shí)。
另外,在本示例性實(shí)施例中,可采用如下配置,其中通過使用設(shè)置斷點(diǎn)的方法或者作為調(diào)試目標(biāo)的程序本身在到達(dá)特定位置時(shí)發(fā)出激活指示的方法,程序可在程序到達(dá)特定點(diǎn)時(shí)激活調(diào)試程序。采用這種類型的配置, 即使情形阻礙通過只調(diào)整激活時(shí)刻對(duì)到達(dá)被觀察位置的時(shí)刻的固定,調(diào)試 程序也可在期望觀察的時(shí)間點(diǎn)被激活。
此外,在有些情況下,存儲(chǔ)區(qū)域被已運(yùn)行的正常操作程序使用,因此 調(diào)試程序無法被另外激活。另一方面,調(diào)試程序包括無論它們被激活的運(yùn)行單元如何都可以執(zhí)行調(diào)試任務(wù)的類型。在這種情況下,本示例性實(shí)施例中可采樣如下配置,其中每個(gè)運(yùn)行單元的存儲(chǔ)區(qū)域的未占用容量被檢測(cè), 且激活指令被分發(fā)到未占用容量有剩余的運(yùn)行單元。采用這種類型的配置可以避免發(fā)出激活指令時(shí)由于未占用容量不足無法激活調(diào)試程序的運(yùn)行單元。
另外,在運(yùn)行涉及相連操作的程序的運(yùn)行單元上激活調(diào)試程序?qū)τ趫?zhí)行相連操作且相連操作阻礙調(diào)試任務(wù)的程序的操作有影響。在這種情況下,本實(shí)施例可采用查清連接狀態(tài)然后發(fā)出激活指令的配置。采用這種類 型的配置,調(diào)試程序可在與運(yùn)行連接了操作的程序的運(yùn)行單元不同的運(yùn)行 單元上被激活。
第二示例性實(shí)施例
參考附圖,本說明接下來涉及本發(fā)明的第二示例性實(shí)施例的調(diào)試系統(tǒng)。
上述說明中描述的第一示例性實(shí)施例是將本發(fā)明應(yīng)用到作為通信端口 的通信目標(biāo)的運(yùn)行單元可以改變的系統(tǒng)的情況。但是,取決于系統(tǒng),存在 一些作為通信端口的通信目標(biāo)的運(yùn)行單元無法改變,即作為通信端口的通 信目標(biāo)的運(yùn)行單元是固定的系統(tǒng)。當(dāng)本發(fā)明被應(yīng)用到這種類型的系統(tǒng)時(shí), 即使為每個(gè)運(yùn)行單元提供了調(diào)試程序激活指令分發(fā)單元,也無法將命令發(fā) 送到已在非通信端口的通信目標(biāo)的運(yùn)行單元上激活的調(diào)試程序。
本示例性實(shí)施例的調(diào)試系統(tǒng)具有可以被應(yīng)用到作為通信端口的通信目 標(biāo)的運(yùn)行單元是固定的系統(tǒng)的配置。
如圖9所示,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中與圖5 所示第一示例性實(shí)施例的配置相比,添加了用于中繼在另一個(gè)運(yùn)行單元中 運(yùn)行的調(diào)試程序的通信的中繼單元65。
中繼單元65是在兩個(gè)運(yùn)行單元A和B的運(yùn)行單元A上運(yùn)行的組件, 并將從通信端口 1向調(diào)試程序63和73發(fā)送的命令中繼到已由激活指令指 定的運(yùn)行單元上的調(diào)試程序。
本示例性實(shí)施例中作為通信端口 1的通信目標(biāo)的運(yùn)行單元固定為運(yùn)行 單元A。當(dāng)來自通信端口 1的命令的目的地為運(yùn)行單元A時(shí),中繼單元65 發(fā)送命令到運(yùn)行單元A的調(diào)試程序63,來自通信端口 l的命令的目的地為 運(yùn)行單元B時(shí),中繼單元65發(fā)送該命令到運(yùn)行單元B的調(diào)試程序73。
本示例性實(shí)施例的激活指令分發(fā)單元61和71使得圖6所示激活指令 分發(fā)單元61和71的通信目標(biāo)改變單元613和713、 A側(cè)運(yùn)行單元上的運(yùn) 行單元間通信接收器615以及B側(cè)運(yùn)行單元上的運(yùn)行單元間通信發(fā)送器 712和通信端口接收器711可以省略。
本示例性實(shí)施例的總體操作與本發(fā)明的第一示例性實(shí)施例的總體操作相同。不同于圖8所示用于改變通信端口的通信目標(biāo)的步驟的省略,激活指令分發(fā)單元61和71的操作與本發(fā)明的第一示例性實(shí)施例相同。
雖然本示例性實(shí)施例的說明涉及配備有兩個(gè)運(yùn)行單元A和B的系統(tǒng)的示例,本實(shí)施例很容易擴(kuò)展到諸如三個(gè)或更多數(shù)目的運(yùn)行單元。 說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng)的效果。
在本示例性實(shí)施例中,運(yùn)行單元A程序區(qū)域6中提供了中繼單元65 用于中繼通信到調(diào)試程序63和73,且該中繼單元65的提供是為了將通信 中繼到在運(yùn)行單元B中運(yùn)行的調(diào)試程序73。因此本發(fā)明可被應(yīng)用到作為通 信端口 1的通信目標(biāo)的運(yùn)行單元固定為運(yùn)行單元A且不可改變的系統(tǒng)。此 外,由于不直接與通信端口 1通信的運(yùn)行單元B上的調(diào)試程序73也可以 通過中繼單元65來進(jìn)行通信,因此多個(gè)調(diào)試程序63和73可在多個(gè)運(yùn)行單 元A和B上同時(shí)使用。
第三示例性實(shí)施例
參考附圖,本說明接下來涉及本發(fā)明的第三示例性實(shí)施例的調(diào)試系統(tǒng)。
與第一示例性實(shí)施例的調(diào)試系統(tǒng)相同,本示例性實(shí)施例的調(diào)試系統(tǒng)是 如下系統(tǒng),其中本發(fā)明被應(yīng)用到允許作為通信端口的通信目標(biāo)的運(yùn)行單元 改變的系統(tǒng)。
在允許作為通信端口的通信目標(biāo)的運(yùn)行單元改變的系統(tǒng)中,命令可以 通過切換通信端口來發(fā)送到調(diào)試程序。但是,當(dāng)多個(gè)調(diào)試程序同時(shí)運(yùn)行 時(shí),料想切換通信端口中會(huì)出現(xiàn)問題。此外,改變作為通信端口的通信目 標(biāo)的運(yùn)行單元的處理需要一定量的開銷。
結(jié)果,即使作為通信端口的通信目標(biāo)的運(yùn)行單元可以改變,使用圖9 所示第二示例性實(shí)施例的調(diào)試系統(tǒng)中的中繼單元來將各種類型的命令中繼 到調(diào)試程序也能排除改變通信端口的處理需要并獲得處理的減少。
但是,當(dāng)采用該中繼單元只在特定運(yùn)行單元中提供的配置時(shí),提供中 繼單元的運(yùn)行單元中停止?fàn)顟B(tài)(stalled state)的發(fā)生也會(huì)阻礙中繼單元本 身發(fā)揮作用。
結(jié)果,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中為每個(gè)運(yùn)行單
元提供中繼單元,以便即使在任何運(yùn)行單元中發(fā)生停止?fàn)顟B(tài),各種類型的 命令也可被中繼到調(diào)試程序。
下面的說明涉及將本發(fā)明應(yīng)用到存在三個(gè)運(yùn)行單元A、 B和C的系統(tǒng) 中的情況。
如圖10所示,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,與圖5所
示第一示例性實(shí)施例中的配置相比,新添加運(yùn)行單元C程序區(qū)域8,還添 加了 A側(cè)運(yùn)行單元上的中繼單元65、 B側(cè)運(yùn)行單元上的中繼單元75以及 C側(cè)運(yùn)行單元上的中繼單元85用于中繼在其他運(yùn)行單元中運(yùn)行的調(diào)試程序 的通信。
本實(shí)施例中的中繼單元65、 75和85是分別運(yùn)行于三個(gè)運(yùn)行單元A、 B和C的組件;這些中繼單元65、 75和85將從通信端口 1發(fā)往調(diào)試程序 63、 73和83的命令中繼到已由激活指令指定的運(yùn)行單元上的調(diào)試程序。
運(yùn)行單元C程序區(qū)域8配備有調(diào)試程序激活指令分發(fā)單元81,調(diào)試 程序激活單元82,調(diào)試程序83和正常操作程序84。這些組件形成為在運(yùn) 行單元C上運(yùn)行的程序。
本示例性實(shí)施例中激活指令分發(fā)單元61和71的操作類似于本發(fā)明的 第一示例性實(shí)施例的操作。此外,激活指令分發(fā)單元81的操作類似于激 活指令分發(fā)單元61和71的操作。但是,由于在激活第二及后續(xù)調(diào)試程序 時(shí)切換被認(rèn)為是無意義的,因此在激活指令分發(fā)單元61、 71和81的操作 中改變通信端口1的通信目標(biāo)的步驟無需執(zhí)行。
雖然說明涉及本示例性實(shí)施例中配備有三個(gè)運(yùn)行單元A、 B和C的系 統(tǒng)的示例,但本示例性實(shí)施例很容易擴(kuò)展到任意數(shù)目的運(yùn)行單元,如四個(gè) 或更多。
說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng)的效果。
在本示例性實(shí)施例中,在運(yùn)行單元A、 B和C的每一個(gè)中提供中繼單 元65、 75和85用于中繼通信到調(diào)試程序,且本實(shí)施例具有如下配置,允 許在其他運(yùn)行單元中運(yùn)行的調(diào)試程序的通信在任何運(yùn)行單元處被中繼。結(jié) 果,即使特定的運(yùn)行單元中發(fā)生停止?fàn)顟B(tài),多個(gè)調(diào)試程序63、 73和83也 可在多個(gè)運(yùn)行單元A、 B和C中同時(shí)使用而不需要麻煩地切換作為通信端
口 1的通信目標(biāo)的運(yùn)行單元A、 B和C。
例如,在圖10所示本示例性實(shí)施例的調(diào)試系統(tǒng)中,描述了分別激活
三個(gè)調(diào)試程序63、 73和83的示例。
在圖10的示例中,運(yùn)行單元A被設(shè)為作為通信端口 1的通信目標(biāo)的 運(yùn)行單元。結(jié)果,各種類型的命令通過為運(yùn)行單元A提供的中繼單元65 被中繼到調(diào)試程序63、調(diào)試程序73和調(diào)試程序83。運(yùn)行單元A由于任何 原因進(jìn)入停止?fàn)顟B(tài)時(shí),中繼單元65也停止發(fā)揮作用。結(jié)果,作為通信端 口 1的通信目標(biāo)的運(yùn)行單元從運(yùn)行單元A變?yōu)檫\(yùn)行單元B,且通過在運(yùn)行 單元B中提供的中繼單元75可實(shí)現(xiàn)將各種命令中繼到調(diào)試程序73和83。 通過這種方式,調(diào)試程序可在兩個(gè)運(yùn)行單元B和C上同時(shí)被激活而無需為 每個(gè)通信切換作為通信端口 1的通信目標(biāo)的運(yùn)行單元的麻煩處理,所述通 信例如去往運(yùn)行單元B的與調(diào)試程序73的通信以及去往運(yùn)行單元C的與 調(diào)試程序83的通信。第四示例性實(shí)施例
參考附圖,本說明接下來涉及本發(fā)明的第四示例性實(shí)施例的調(diào)試系統(tǒng)。
在上述第一至第三示例性實(shí)施例中,調(diào)試程序激活指令被分發(fā)到由調(diào) 試程序激活指令指定的運(yùn)行單元或分發(fā)到由激活指令分發(fā)單元選擇的運(yùn)行 單元。但是,有些情況下,調(diào)試程序?qū)⒈患せ畹倪\(yùn)行單元已進(jìn)入停止?fàn)?態(tài),因此調(diào)試程序的激活是不可能的。
為了避免發(fā)生這類問題,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置, 其中當(dāng)選擇調(diào)試程序可以被激活的運(yùn)行單元時(shí),處于停止?fàn)顟B(tài)因此調(diào)試程 序無法被激活的運(yùn)行單元不被選擇。
如圖11所示,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中與圖5 所示第一示例性實(shí)施例的配置相比,提供了停止運(yùn)行單元避免單元(圖11 中稱為"避免單元")66和76來運(yùn)行這樣的進(jìn)程,該進(jìn)程用于避免停止 運(yùn)行單元并將激活指令發(fā)送到可以運(yùn)行程序的運(yùn)行單元的激活指令分發(fā)單 元。
為調(diào)試程序可被激活的多個(gè)運(yùn)行單元A和B的每一個(gè)安排停止運(yùn)行單
元避免單元66和76。然后停止運(yùn)行單元避免單元66和76執(zhí)行處理以使 得激活指令不發(fā)送到處于停止?fàn)顟B(tài)的運(yùn)行單元。
更具體而言,運(yùn)行單元A的停止運(yùn)行單元避免單元66通知通信端口 1 將運(yùn)行單元A當(dāng)作作為激活指令的分發(fā)源的運(yùn)行單元(換言之,作為通信 端口 l的通信目標(biāo)的運(yùn)行單元),并且運(yùn)行單元B的停止運(yùn)行單元避免單 元76通知通信端口 1將運(yùn)行單元B當(dāng)作激活指令的分發(fā)源。
在如圖4中配備有兩個(gè)運(yùn)行單元A和B的系統(tǒng)中,停止運(yùn)行單元避免 單元66和76被配置為交替激活為"運(yùn)行單元A、 B、 A、 B、 ...、 A、 B"。配備有三個(gè)或更多運(yùn)行單元的系統(tǒng)中,停止運(yùn)行單元避免單元被配 置為使用定時(shí)器或者通過正常操作期間使用的定時(shí)器中斷處理器中的程序 來相繼激活。實(shí)現(xiàn)停止運(yùn)行單元避免單元66和76的實(shí)際方法不必要求交 替激活或相繼激活,但將要描述的本配置對(duì)于有效地結(jié)合差錯(cuò)檢測(cè)器更可 取。
定時(shí)器中斷處理器是在定時(shí)器中斷發(fā)生時(shí)首先被激活以處理定時(shí)器中 斷的程序。若運(yùn)行單元配備有定時(shí)器中斷功能,則該定時(shí)器中斷處理器是 通常使用的程序。
本示例性實(shí)施例的總體操作與本發(fā)明的第一示例性實(shí)施例的總體操作 相同,除了增加了用于選擇可在圖7的流程圖中接收激活指令之前激活調(diào) 試程序的運(yùn)行單元的步驟。
參考圖12,本說明接下來涉及停止運(yùn)行單元避免單元66和76的操 作。在圖12中,步驟S71和步驟S74不是故意的選擇,而是根據(jù)在該時(shí) 間點(diǎn)的條件必然的選擇過程。換言之,步驟S72是由運(yùn)行單元A運(yùn)行的過 程,但運(yùn)行單元A處于停止?fàn)顟B(tài)時(shí)程序不運(yùn)行。結(jié)果,步驟S71的分支指 示向步驟S73繼續(xù)而不執(zhí)行步驟S72的過程。類似地,步驟S75是由運(yùn)行 單元B運(yùn)行的過程,但運(yùn)行單元B處于停止?fàn)顟B(tài)時(shí)程序不運(yùn)行。結(jié)果,步 驟S74的分支指示向步驟S76繼續(xù)而不執(zhí)行步驟S75的過程。此處的說明 假設(shè)B是作為調(diào)試程序的激活指令分發(fā)源的運(yùn)行單元(換言之,作為通信 端口 1的通信目標(biāo)的運(yùn)行單元)的初始值。
首先,在步驟S71階段,當(dāng)運(yùn)行單元A不處于停止?fàn)顟B(tài)時(shí)(步驟S71 中的"否"),運(yùn)行單元A上的停止運(yùn)行單元避免單元66將作為調(diào)試程
序激活指令分發(fā)源的運(yùn)行單元的設(shè)置值改變?yōu)檫\(yùn)行單元A (步驟S72)。
該過程通過改變通信端口 1的通信目標(biāo)來執(zhí)行。當(dāng)此刻存在激活指令時(shí)
(步驟S73中的"是"),激活指令被發(fā)送到已被設(shè)置的運(yùn)行單元(這種 情況下,為運(yùn)行單元A)(步驟S77)。
另一方面,當(dāng)步驟S73中不存在激活指令(步驟S73中的"否")時(shí) 且如果運(yùn)行單元B不處于停止?fàn)顟B(tài)(步驟S74中的"否"),運(yùn)行單元B 上的停止運(yùn)行單元避免單元76則將作為調(diào)試程序激活指令分發(fā)源的運(yùn)行 單元改變?yōu)檫\(yùn)行單元B (步驟S75)。若此刻存在激活指令(步驟S76中 的"是"),則激活指令被發(fā)送到已被設(shè)置的運(yùn)行單元(這種情況下,為 運(yùn)行單元B)(步驟S77)。若不存在激活指令(步驟S76中的
"否"),則過程返回開始。
若步驟S71處運(yùn)行單元A停止,則過程前進(jìn)到步驟S73而不執(zhí)行步驟 S72的過程,但若存在激活指令,則作為調(diào)試程序激活指令分發(fā)源的運(yùn)行 單元為運(yùn)行單元B。結(jié)果,調(diào)試程序激活指令被發(fā)送到停止的運(yùn)行單元因 而無法激活的狀態(tài)可以避免。另一方面,若步驟S74處運(yùn)行單元B停止, 則同樣的發(fā)明可以避免調(diào)試程序激活指令被發(fā)送到未能激活的運(yùn)行單元B 的狀態(tài)。
本方法很容易擴(kuò)展到存在三個(gè)或更多運(yùn)行單元的情況,并且若任何運(yùn) 行單元在工作,則工作的運(yùn)行單元被設(shè)為調(diào)試程序激活指令的分發(fā)源。 但是,涉及以下情況時(shí)需要小心
一個(gè)小心點(diǎn)是如下情況,其中作為調(diào)試程序激活指令分發(fā)源的運(yùn)行單 元在步驟S72中改變?yōu)檫\(yùn)行單元A,接著運(yùn)行單元A在步驟S73中收到激 活指令之前停止。步驟S75和步驟S76之間的情況相同。這種情況下,調(diào) 試程序激活指令不被接受,但固定的時(shí)間間隔流逝后,作為調(diào)試程序激活 指令分發(fā)源的運(yùn)行單元被非停止的運(yùn)行單元改變,因此希望存在激活失敗 時(shí)激活指令在固定時(shí)間間隔流逝后被發(fā)出的配置??紤]到所有運(yùn)行單元停 止的情況可采用如下配置,其中過程終止,且在盡管激活指令已重發(fā)固定 次數(shù)激活仍失敗時(shí)生成差錯(cuò)報(bào)告。
另一個(gè)小心點(diǎn)是如下情況,其中雖然通過前述方法處理調(diào)試程序激活 指令分發(fā)單元可以實(shí)現(xiàn)運(yùn)行,但由激活指令指定的調(diào)試程序?qū)⒈患せ畹倪\(yùn) 行單元中的停止?fàn)顟B(tài)會(huì)阻礙激活。這種情況下可采用如下配置,其中若固 定的時(shí)間間隔流逝后無法確認(rèn)激活,則生成差錯(cuò)報(bào)告。但是,若差錯(cuò)檢測(cè)/ 激活指令生成器(待述)的差錯(cuò)檢測(cè)方法檢測(cè)到停止?fàn)顟B(tài)并確定激活不可 能,則優(yōu)選使用立即生成差錯(cuò)報(bào)告并在另一個(gè)運(yùn)行單元上激活調(diào)試程序的 方法。
為了消除分開指定用于激活的運(yùn)行單元的必要,優(yōu)選采用如下配置, 其中參考與作為調(diào)試目標(biāo)且與激活了調(diào)試程序的運(yùn)行單元不同的運(yùn)行單元 有關(guān)的存儲(chǔ)區(qū)域,激活調(diào)試程序用于分析作為調(diào)試目標(biāo)的運(yùn)行單元或者用 于分析在該運(yùn)行單元上工作的程序的狀態(tài),并且在作為激活指令分發(fā)源的 運(yùn)行單元上激活調(diào)試程序。這種情況下,在激活指令分發(fā)單元的功能中, 對(duì)將激活指令轉(zhuǎn)移到另一個(gè)運(yùn)行單元的功能的需要可以排除。
說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng)的效果。
在本示例性實(shí)施例中,采用如下配置,其中停止運(yùn)行單元避免單元66
和76阻止激活指令被發(fā)往調(diào)試程序不能運(yùn)行的運(yùn)行單元,結(jié)果,即使運(yùn)
行單元由于差錯(cuò)而停止且運(yùn)行單元的操作受影響,只要存在可用的運(yùn)行單 元,仍可在該運(yùn)行單元上激活調(diào)試程序。第五示例性實(shí)施例
說明接下來涉及本發(fā)明的第五示例性實(shí)施例。
在上述第一到第四示例性實(shí)施例中,調(diào)試程序能夠只參考與已激活的 運(yùn)行單元有關(guān)的存儲(chǔ)區(qū)域。但是,在有些情況下,在作為調(diào)試目標(biāo)的運(yùn)行 單元上工作的程序的狀態(tài)可以通過參考存儲(chǔ)區(qū)域被使用的方式來分析。
本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中允許從激活了調(diào)試程 序的運(yùn)行單元通過參考作為調(diào)試目標(biāo)的運(yùn)行單元的存儲(chǔ)區(qū)域來執(zhí)行調(diào)試任
如圖13所示,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中與圖5 所示第一示例性實(shí)施例的配置相比,調(diào)試程序63和73分別被調(diào)試程序67 和77所取代。
調(diào)試程序67配備有物理-虛擬地址轉(zhuǎn)換器671和用于分析狀態(tài)的信息
提取器672。
物理-虛擬地址轉(zhuǎn)換器671將虛擬地址轉(zhuǎn)換成物理地址。
信息提取器672使用已由物理-虛擬地址轉(zhuǎn)換器671轉(zhuǎn)換的物理地址并
考慮到OS (操作系統(tǒng))在存儲(chǔ)器中安排控制信息的結(jié)構(gòu)以從正常操作程
序74正在使用的存儲(chǔ)區(qū)域中提取必要信息。
調(diào)試程序77類似地配備有物理-虛擬地址轉(zhuǎn)換器772和信息提取器
772。
下面的說明涉及在運(yùn)行單元A上激活調(diào)試程序的操作示例,在運(yùn)行單 元B上激活調(diào)試程序77時(shí)操作相同。
物理-虛擬地址轉(zhuǎn)換器671執(zhí)行第一物理-虛擬地址轉(zhuǎn)換操作,其中 虛擬地址和物理地址的偏移(差別)信息被調(diào)整以執(zhí)行虛擬地址和物理地 址的相互轉(zhuǎn)換;以及第二物理-虛擬地址轉(zhuǎn)換操作,其中物理/虛擬地址轉(zhuǎn) 換表的信息被分析以將虛擬地址和物理地址置于對(duì)應(yīng)關(guān)系。
說明首先涉及第一物理-虛擬地址轉(zhuǎn)換操作。
第一物理-虛擬地址轉(zhuǎn)換操作是用于處理諸如OS內(nèi)核靜態(tài)保存的區(qū)域 之類的保存在寬范圍內(nèi)連續(xù)的物理地址的區(qū)域(下文稱為"連續(xù)區(qū)域") 的操作。
在連續(xù)區(qū)域中,當(dāng)對(duì)應(yīng)于特定虛擬地址的物理地址已知時(shí),可以發(fā)現(xiàn) 虛擬地址和物理地址之間的差別。在連續(xù)區(qū)域中,當(dāng)虛擬地址增加n個(gè)單 位時(shí),相應(yīng)的物理地址也增加n個(gè)單位。結(jié)果,保存虛擬地址和物理地址 之間的差別然后調(diào)整該差別可以實(shí)現(xiàn)從虛擬地址到物理地址的轉(zhuǎn)換以及從 物理地址到虛擬地址的轉(zhuǎn)換。
雖然由另外的計(jì)算獲得的值可用作虛擬地址和物理地址的差別,但在 有些OS中,對(duì)應(yīng)于連續(xù)區(qū)域的起點(diǎn)的虛擬地址是預(yù)定的。在這種情況 下,差別可基于指派到每個(gè)CPU的存儲(chǔ)區(qū)域起點(diǎn)處的物理地址信息來計(jì) 算。優(yōu)選如下配置,其中指派到每個(gè)CPU的存儲(chǔ)區(qū)域起點(diǎn)處的物理地址信 息可以獲得,且差別可被自動(dòng)計(jì)算。
參考圖14,本說明接下來涉及第二物理-虛擬地址轉(zhuǎn)換操作。
第二物理-虛擬地址轉(zhuǎn)換操作是高端OS中使用的方法,而且是用于處 理使用物理-虛擬地址表來控制例如用戶程序的虛擬地址的方法的操作。在 用戶程序中,對(duì)應(yīng)于連續(xù)虛擬地址的存儲(chǔ)區(qū)域不一定連續(xù)且物理地址無法 通過差別來唯一確定,因此需要多道措施。
在第二物理-虛擬地址轉(zhuǎn)換操作中,使用第一物理-虛擬地址轉(zhuǎn)換操作 來獲取OS持有的物理-虛擬地址轉(zhuǎn)換表的物理地址(步驟S101)。
該物理地址用于引用物理-虛擬地址轉(zhuǎn)換表以及獲取物理-虛擬地址轉(zhuǎn)
換表的內(nèi)容(歩驟S102)。
在高端OS中,物理/虛擬轉(zhuǎn)換表可在多層上提供,且轉(zhuǎn)換不一定通過 單個(gè)引用來完成。因此,當(dāng)轉(zhuǎn)換未完成時(shí)(步驟S103中的"否"),接 下來將要引用的物理-虛擬轉(zhuǎn)換表的虛擬地址從物理-虛擬轉(zhuǎn)換表的內(nèi)容中 獲得(步驟S104)。
重復(fù)這些過程并獲得目標(biāo)物理地址時(shí)(步驟S103中的"是"),獲 得的物理地址被匯報(bào)(步驟S105),第二物理-虛擬地址轉(zhuǎn)換操作完成。 參考圖15,本說明接下來涉及信息提取器672的操作。 物理-虛擬地址轉(zhuǎn)換基于具有充當(dāng)基點(diǎn)(base point)的數(shù)據(jù)結(jié)構(gòu)的虛 擬地址被執(zhí)行(步驟S201),且被引用數(shù)據(jù)處的物理地址被獲得。
當(dāng)允許直接引用數(shù)據(jù)的物理地址可被映射時(shí),采用如下配置,其中必 要的數(shù)據(jù)可通過例如將具有的結(jié)構(gòu)與待引用的數(shù)據(jù)相似或相同的結(jié)構(gòu)變量 映射到相關(guān)物理地址(步驟S202)然后引用數(shù)據(jù)(步驟S203)來獲取。
或者,具有的結(jié)構(gòu)與待引用的數(shù)據(jù)相似或相同的變量可以事先準(zhǔn)備, 然后獲取的物理地址用于將待引用數(shù)據(jù)復(fù)制到準(zhǔn)備好的變量的區(qū)域中,然 后引用這些數(shù)據(jù)。雖然這種形式允許數(shù)據(jù)即使在物理地址不允許直接引用 數(shù)據(jù)時(shí)也能被引用,但是它負(fù)擔(dān)了需要用于復(fù)制的開銷的缺陷。
當(dāng)數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單時(shí),通過這些處理來完成提取(步驟S204中的 "是")且匯報(bào)提取結(jié)果(步驟S206),由此完成處理。但是,取決于數(shù) 據(jù),例如具有列表結(jié)構(gòu)的數(shù)據(jù)可以按分散的狀態(tài)安排。
當(dāng)必要數(shù)據(jù)缺失或在初始引用中只是部分可用時(shí)(歩驟S204中的 "否"),指示下一列表位置的地址被獲取(步驟S205)。由于該地址由 虛擬地址記錄,因此物理地址通過執(zhí)行物理-虛擬地址轉(zhuǎn)換來獲得(步驟
S201),且下一列表的內(nèi)容被參閱(步驟S202和步驟S203)。重復(fù)該過
程數(shù)次直至必要的數(shù)據(jù)完整。
在本示例性實(shí)施例中,在不使用虛擬地址的OS中,不需要步驟S201 的物理-虛擬地址轉(zhuǎn)換,且類似的功能可以通過不包含該處理的過程來實(shí) 現(xiàn)。
另外,雖然說明涉及本實(shí)施例中配備有兩個(gè)運(yùn)行單元A和B的系統(tǒng)的 示例,但本實(shí)施例很容易擴(kuò)展到配備有諸如三個(gè)或更多等任意數(shù)目的運(yùn)行 單元的系統(tǒng)。
在本示例性實(shí)施例中,提供調(diào)試程序用于通過參考與作為調(diào)試目標(biāo)且 與激活了調(diào)試程序的運(yùn)行單元不同的運(yùn)行單元有關(guān)的存儲(chǔ)區(qū)域來分析調(diào)試 目標(biāo)運(yùn)行單元的狀態(tài)或在該運(yùn)行單元中工作的程序。結(jié)果,無論作為調(diào)試 目標(biāo)的運(yùn)行單元的狀態(tài)如何,調(diào)試任務(wù)都可執(zhí)行。
另一方面,諸如運(yùn)行單元中提供的寄存器或緩存器之類的資源僅通過 參考運(yùn)行單元所使用的存儲(chǔ)區(qū)域無法被檢查。因此發(fā)生諸如由于無法參考
寄存器內(nèi)容導(dǎo)致無法獲得必要的調(diào)試信息,或者由于最新信息繼續(xù)留在緩 存中因此僅通過參考存儲(chǔ)區(qū)域無法檢査最新信息之類問題的可能性出現(xiàn)。
結(jié)果,在本示例性實(shí)施例中,用于讀出、寫入和控制運(yùn)行單元中提供 的寄存器或緩存器的單元內(nèi)資源控制單元(未示出)可通過作為調(diào)試目標(biāo) 的運(yùn)行單元上的調(diào)試程序來形成。該單元內(nèi)資源控制單元由寄存器內(nèi)容讀/ 寫單元(未示出)和緩存器控制單元(未示出)組成。
當(dāng)讀寄存器的內(nèi)容時(shí),讀指令被應(yīng)用到作為調(diào)試目標(biāo)的運(yùn)行單元上的 調(diào)試程序,讀由寄存器讀/寫單元執(zhí)行,然后匯報(bào)結(jié)果。當(dāng)執(zhí)行寫操作時(shí), 寫指令及寫數(shù)據(jù)被應(yīng)用到作為調(diào)試目標(biāo)的運(yùn)行單元上的調(diào)試程序,然后寫 由寄存器讀/寫單元執(zhí)行。
在接受釋放緩存內(nèi)容的指令后,緩存器控制單元實(shí)施控制以使得運(yùn)行 單元運(yùn)行緩存器釋放命令。當(dāng)緩存器的釋放完成時(shí),最新信息寫入存儲(chǔ) 器。結(jié)果,獲取信息的調(diào)試程序能夠觀察其他運(yùn)行單元中的存儲(chǔ)區(qū)域?;?者,作為調(diào)試目標(biāo)的運(yùn)行單元上的調(diào)試程序可以具有將讀緩存器的內(nèi)容匯
報(bào)給外部的配置?;蛘?,希望存在允許控制緩存器的操作模式或者控制內(nèi) 容的更新的配置。
在作為調(diào)試目標(biāo)的運(yùn)行單元上的調(diào)試程序運(yùn)行期間,在該運(yùn)行單元提 供的寄存器中,操作中使用的寄存器或與諸如程序計(jì)數(shù)器之類的程序的進(jìn) 展有關(guān)的寄存器的內(nèi)容被保存于存儲(chǔ)器區(qū)域的堆棧區(qū)域中。但是,存在這 些堆棧區(qū)域的內(nèi)容留在緩存器中且最新值不在存儲(chǔ)區(qū)域中保存的可能性。 結(jié)果,上述緩存器控制單元的使用實(shí)現(xiàn)了如下配置,其中所保存的寄存器 的內(nèi)容或者通過將緩存的內(nèi)容釋放到存儲(chǔ)區(qū)域或者通過直接讀取緩存的內(nèi) 容來獲得,從而實(shí)現(xiàn)了在作為調(diào)試目標(biāo)的程序運(yùn)行期間被保存的寄存器內(nèi) 容的獲取。
通過采用這類操作,當(dāng)調(diào)試程序可以在作為調(diào)試目標(biāo)的運(yùn)行單元中使 用時(shí),配備有寄存器內(nèi)容讀/寫單元和緩存器控制單元的調(diào)試程序可在作為 調(diào)試目標(biāo)的運(yùn)行單元上使用,且存儲(chǔ)區(qū)域可被參考。結(jié)果,獲得信息的調(diào) 試程序能夠?qū)崿F(xiàn)無法正常運(yùn)行的寄存器或緩存器讀入、寫出和控制。第六示例性實(shí)施例
說明接下來涉及本發(fā)明的第六十例性實(shí)施例的調(diào)試系統(tǒng)。 在上述第一至第五示例性實(shí)施例中,當(dāng)運(yùn)行單元中發(fā)生某些類型的差 錯(cuò)時(shí),來自外部控制終端的激活指令的輸入是必要的。
本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中即使激活指令不作為 來自外部的控制終端的輸入來應(yīng)用,當(dāng)運(yùn)行單元中發(fā)生某些類型的差錯(cuò) 時(shí),激活指令也會(huì)自動(dòng)生成。
如圖16所示,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中與圖
5所示第一示例性實(shí)施例的調(diào)試系統(tǒng)相比,添加了差錯(cuò)檢測(cè)器68和78用
于檢測(cè)差錯(cuò)的發(fā)生。
差錯(cuò)檢測(cè)器68和78在運(yùn)行單元A和B中檢測(cè)到差錯(cuò)的發(fā)生后生成調(diào) 試程序激活指令。
在這種情況下,系統(tǒng)可具有這樣的配置以使得差錯(cuò)檢測(cè)器68和78的 差錯(cuò)檢測(cè)只匯報(bào)給外部控制終端。但是,優(yōu)選采用配備有如下裝置的配 置,所述裝置用于在檢測(cè)到差錯(cuò)發(fā)生的時(shí)刻暫停差錯(cuò)發(fā)生的運(yùn)行單元或程
序、作為差錯(cuò)發(fā)生原因的運(yùn)行單元或程序或者其他運(yùn)行單元或程序。
配備有差錯(cuò)檢測(cè)器68和78的運(yùn)行單元不一定需要與配備有調(diào)試程序
激活單元62和72的運(yùn)行單元一致,且差錯(cuò)檢測(cè)器68和78可只在運(yùn)行單
元A和B中提供。
本實(shí)施例的總體操作與上述示例性實(shí)施例的任意一個(gè)的總體操作相
同,除了在接收調(diào)試程序激活指令的步驟之前添加了通過差錯(cuò)檢測(cè)器68
和78檢測(cè)差錯(cuò)的步驟。
說明接下來涉及差錯(cuò)檢測(cè)器68和78的配置和操作。 差錯(cuò)包括其發(fā)生由系統(tǒng)匯報(bào)的差錯(cuò)(下文稱為"運(yùn)行期間差錯(cuò)")和
阻礙正常操作且不由系統(tǒng)匯報(bào)的差錯(cuò)。運(yùn)行期間差錯(cuò)包括不當(dāng)?shù)拇鎯?chǔ)器參
考、不當(dāng)?shù)拿钸\(yùn)行和硬件異常。阻礙正常操作的差錯(cuò)包括由無限循環(huán)和
失控造成的停止。
說明首先涉及瞄準(zhǔn)運(yùn)行期間差錯(cuò)的差錯(cuò)檢測(cè)器68和78的第一配置。 在這種情況下,差錯(cuò)檢測(cè)器68和78的每一個(gè)由用于接收系統(tǒng)的差錯(cuò)匯報(bào) 的差錯(cuò)接收器(未示出)和用于匯報(bào)差錯(cuò)的發(fā)生的通知單元(未示出)組 成。在具有使特定程序在運(yùn)行期間差錯(cuò)發(fā)生后運(yùn)行的配置的系統(tǒng)中,差錯(cuò) 檢測(cè)器可在特定程序中提供。
當(dāng)差錯(cuò)檢測(cè)器作為運(yùn)行單元上的程序被提供以瞄準(zhǔn)運(yùn)行期間差錯(cuò)時(shí), 差錯(cuò)被運(yùn)行期間差錯(cuò)發(fā)生的運(yùn)行單元的差錯(cuò)檢測(cè)器檢測(cè)。在這種情況下, 激活調(diào)試程序的運(yùn)行單元可成為差錯(cuò)發(fā)生然后激活指令生成的運(yùn)行單元。 另一方面,當(dāng)調(diào)試程序在運(yùn)行期間發(fā)生差錯(cuò)的運(yùn)行單元中被激活時(shí),程序 的激活對(duì)運(yùn)行單元或存儲(chǔ)區(qū)域造成的效果阻礙差錯(cuò)原因的確定的可能性出 現(xiàn)。在這種情況下,優(yōu)選采用如下配置,其中調(diào)試程序激活指令被發(fā)給另 一個(gè)運(yùn)行單元,且第五示例性實(shí)施例中的調(diào)試程序67和77被激活。
說明接下來涉及瞄準(zhǔn)阻礙正常操作的差錯(cuò)的差錯(cuò)檢測(cè)器68和78的第 二配置。在這種情況下,差錯(cuò)檢測(cè)器68和78由以下部件組成更新信息 讀取單元(未示出),用于讀取已被在作為調(diào)試目標(biāo)的運(yùn)行單元上運(yùn)行的 程序更新的信息;正常更新檢査單元(未示出),用于檢查信息更新是否 被正確執(zhí)行;以及差錯(cuò)發(fā)生通知單元(未示出),用于匯報(bào)差錯(cuò)的發(fā)生。
參考圖17,本說明接下來涉及差錯(cuò)檢測(cè)器68和78的第二配置的操
作。此處的說明涉及如下示例,其中差錯(cuò)發(fā)生通知單元被提供為調(diào)試程序 激活指令生成器,其用于在檢測(cè)到差錯(cuò)的發(fā)生后生成調(diào)試程序激活指令。 更新信息讀取單元首先讀取已被另一個(gè)運(yùn)行單元上運(yùn)行的程序更新的
信息(步驟S301)?;谠撔畔?,正常更新檢查單元檢查更新是否在正確 地執(zhí)行(步驟S302)。若更新在正確地執(zhí)行(步驟S303中的"是"), 則正常更新檢查單元檢查下一更新。若檢測(cè)到由于發(fā)生差錯(cuò)因此更新不正 常(步驟S303中的"否"),則調(diào)試程序激活指令生成器生成調(diào)試程序 激活指令(步驟S304)并將激活指令應(yīng)用到調(diào)試程序激活單元。被程序更 新的信息可通過提供用于更新信息的程序來獲取。但是,通過使用在系統(tǒng) 內(nèi)部被OS用作被程序更新的信息的時(shí)間信息,不提供另外的程序也可實(shí) 現(xiàn)差錯(cuò)檢測(cè)器。
說明接下來涉及瞄準(zhǔn)阻礙正常操作的差錯(cuò)的差錯(cuò)檢測(cè)器68和78的第 三配置。在這種情況下,差錯(cuò)檢測(cè)器68和78每個(gè)都配備有以下部件中 斷生成器(未示出),用于生成作為調(diào)試目標(biāo)的運(yùn)行單元的中斷;響應(yīng)檢 查單元(未示出),用于檢查來自作為調(diào)試目標(biāo)的運(yùn)行單元的響應(yīng),以及 激活指令生成器(未示出),用于生成調(diào)試程序激活指令。此外,作為運(yùn) 行單元的運(yùn)行單元還配備有用于響應(yīng)指示的響應(yīng)單元。
參考圖18,本說明接下來涉及差錯(cuò)檢測(cè)器的第三配置的操作。
中斷生成器首先對(duì)其他運(yùn)行單元生成中斷(步驟S311),然后等待響 應(yīng)返回(歩驟S312)。當(dāng)預(yù)定時(shí)間間隔內(nèi)收到響應(yīng)時(shí)(步驟S313中的 "是"),確定操作正常,生成下一中斷。若預(yù)定時(shí)間間隔內(nèi)未返回響應(yīng) (步驟S313中的"否"),則確定由于差錯(cuò)不可能有響應(yīng),且激活指令 生成器生成調(diào)試程序激活指令(步驟S314)并將激活指令應(yīng)用到調(diào)試程序 激活單元。雖然此處的說明涉及確定標(biāo)準(zhǔn)是預(yù)定時(shí)間間隔內(nèi)響應(yīng)返回的情 況,但是確定標(biāo)準(zhǔn)還可以取決于返回的響應(yīng)是正常的還是非正常的。
說明接下來涉及用于瞄準(zhǔn)阻礙正常操作的差錯(cuò)的差錯(cuò)檢測(cè)器68和78 的第四配置。該配置可以通過添加如下裝置來實(shí)現(xiàn),所述裝置用于調(diào)查停 止運(yùn)行單元避免單元(圖11的停止運(yùn)行單元避免單元66和76)中當(dāng)前選擇了哪個(gè)運(yùn)行單元,以選擇可以激活調(diào)試程序的運(yùn)行單元,所述停止運(yùn)行 單元避免單元避免已停止的運(yùn)行單元。
參考圖19,本說明接下來涉及差錯(cuò)檢測(cè)器68和78的第四配置的操
在如圖19的差錯(cuò)檢測(cè)器68和78的第四配置中,除了圖12中停止運(yùn) 行單元避免單元66和76的操作外,還添加了用于確定當(dāng)前由停止運(yùn)行單 元避免單元66和76設(shè)置了哪個(gè)運(yùn)行單元的步驟S78和S79。
在圖19中,步驟S71和步驟S74不是故意的選擇,而是根據(jù)這些時(shí) 刻的狀態(tài)不可避免的選擇過程。換言之,步驟S72是由運(yùn)行單元A運(yùn)行的 過程,且運(yùn)行單元A停止時(shí)該程序不運(yùn)行。結(jié)果,步驟S71的分支示出處 理前進(jìn)到步驟S73而不執(zhí)行步驟S72的過程。類似地,步驟S75是由運(yùn)行 單元B運(yùn)行的過程,且運(yùn)行單元B停止時(shí)該程序不運(yùn)行。結(jié)果,步驟S74 的分支示出處理前進(jìn)到步驟S76而不執(zhí)行步驟S75的過程。在這種情況 下,說明假設(shè)作為調(diào)試程序激活指令分發(fā)源的運(yùn)行單元的初始值為運(yùn)行單 元B。
當(dāng)運(yùn)行單元A未停止時(shí)(步驟S71的"否"),初始設(shè)置值為運(yùn)行單 元B (步驟S78的"是"),因此運(yùn)行單元A上的程序?qū)⒆鳛檎{(diào)試程序激 活指令分發(fā)源的運(yùn)行單元改變?yōu)檫\(yùn)行單元A (步驟S72)。另一方面,當(dāng) 運(yùn)行單元A停止時(shí)(步驟S71的"是"),處理前進(jìn)到步驟S73而不執(zhí)行 歩驟S72的過程。若此處不存在激活指令(步驟S73的"否"),則若運(yùn) 行單元B未停止(步驟S74的"否"),則處理前進(jìn)到歩驟S79的調(diào)查。 在步驟S79中,設(shè)置為調(diào)試程序激活指令分發(fā)源的運(yùn)行單元被調(diào)查。若設(shè) 置的運(yùn)行單元為A (步驟S79的"是"),則該調(diào)查是正常的。若設(shè)置的 運(yùn)行單元不為A (步驟S79的"否"),則指示無法運(yùn)行步驟S72,從而 可以檢測(cè)到運(yùn)行單元A上的差錯(cuò)。在這種情況下,處理前進(jìn)到步驟S77, 激活指令被發(fā)送到設(shè)置的運(yùn)行單元(這種情況下為運(yùn)行單元B),然后調(diào) 試程序被激活。若運(yùn)行單元B在這種情況下停止(步驟S74的"是"), 則差錯(cuò)在步驟S78中被類似地檢測(cè)(步驟S78的"否"),且調(diào)試程序被 激活。差錯(cuò)檢測(cè)器的上述第一至第四配置不互相排斥,可以任何方式結(jié)合。 說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng)的效果。
在本示例性實(shí)施例中,采用配備有差錯(cuò)檢測(cè)器68和78并且可以檢査 差錯(cuò)的發(fā)生的配置,從而,即使在檢查差錯(cuò)的發(fā)生很麻煩的系統(tǒng)中,也可 激活調(diào)試程序,且在驗(yàn)證差錯(cuò)發(fā)生后開始調(diào)試任務(wù)。
另外,在本示例性實(shí)施例中,可采用提供了如下裝置的配置,所述裝 置用于在檢測(cè)到差錯(cuò)發(fā)生后停止發(fā)生差錯(cuò)的運(yùn)行單元或程序,停止作為差 錯(cuò)發(fā)生原因的運(yùn)行單元或程序,或者停止另一個(gè)運(yùn)行單元或程序。采用這 類配置能夠避免差錯(cuò)發(fā)生后的處理進(jìn)展妨礙對(duì)差錯(cuò)發(fā)生原因的調(diào)查的情 況。
另外,在本示例性實(shí)施例中,可提供差錯(cuò)檢測(cè)器68和78用于在檢測(cè)到差錯(cuò)的發(fā)生后生成調(diào)試程序激活指令。這類配置的采用允許調(diào)試任務(wù)可 在不要求調(diào)試技術(shù)員確定調(diào)試程序?qū)⒈患せ畹倪\(yùn)行單元或調(diào)試程序的類型 然后激活調(diào)試程序的前提下開始。
第七示例性實(shí)施例
說明接下來涉及本發(fā)明的第七示例性實(shí)施例的調(diào)試系統(tǒng)。
根據(jù)第五示例性實(shí)施例的上述調(diào)試系統(tǒng),有關(guān)特定運(yùn)行單元的存儲(chǔ)內(nèi) 容即使在運(yùn)行單元停止時(shí)也能被讀取。但是,已進(jìn)入停止?fàn)顟B(tài)的運(yùn)行單元 的寄存器或緩存器的內(nèi)容就連第五示例性實(shí)施例調(diào)試系統(tǒng)也無法讀取。這 種無能為力起源于如下事實(shí),即運(yùn)行單元進(jìn)入停止?fàn)顟B(tài)時(shí)寄存器或緩存器 的內(nèi)容通常無法讀取。
本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,當(dāng)特定的運(yùn)行單元停止 時(shí),該配置允許該運(yùn)行單元的寄存器和緩存器的內(nèi)容被讀取以執(zhí)行調(diào)試。
如圖20所示,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中與上 述第一示例性實(shí)施例的配置相比,運(yùn)行單元A程序區(qū)域6中的調(diào)試程序63 配備有運(yùn)行單元間中斷生成器(圖20中表示為"中斷生成器")631和響 應(yīng)接收器632,另外,在作為調(diào)試目標(biāo)的運(yùn)行單元中運(yùn)行的中斷處理器69 配備有響應(yīng)生成器691和信息獲取/控制單元692。
運(yùn)行單元間中斷生成器631對(duì)作為調(diào)試目標(biāo)的運(yùn)行單元B生成中斷。 響應(yīng)接收器632通過響應(yīng)生成器791接收來自作為調(diào)試目標(biāo)的運(yùn)行單元B
的響應(yīng)。
當(dāng)中斷已從另一個(gè)運(yùn)行單元B生成時(shí),信息獲取/控制單元692獲取事 先設(shè)置的諸如寄存器、緩存器和閃存之類的存儲(chǔ)區(qū)域中的信息。響應(yīng)生成 器691將由信息獲取/控制單元692獲得的信息發(fā)送到導(dǎo)致生成中斷的運(yùn)行 單元B。
在圖5所示的第一示例性實(shí)施例中,中斷處理器69未示出,但中斷 處理器是典型運(yùn)行單元中被提供為標(biāo)準(zhǔn)的程序。
另外,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中運(yùn)行單元B程 序區(qū)域7中的調(diào)試程序73類似地配備有運(yùn)行單元間中斷生成器731和響應(yīng) 接收器732,且在作為調(diào)試目標(biāo)的運(yùn)行單元中運(yùn)行的中斷處理器79配備有 響應(yīng)生成器791和信息獲取/控制單元792。
雖然圖20示出將本示例性實(shí)施例的調(diào)試系統(tǒng)應(yīng)用到第一示例性實(shí)施 例的配置的示例,但是可將該調(diào)試系統(tǒng)類似地應(yīng)用到第二至第六示例性實(shí) 施例。
參考圖21的流程圖,本說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng) 的操作。此處的說明涉及從運(yùn)行單元A的調(diào)試程序63執(zhí)行B側(cè)運(yùn)行單元 的調(diào)試的示例。
調(diào)試程序63首先對(duì)作為目標(biāo)的運(yùn)行單元B發(fā)布運(yùn)行單元間中斷(步 驟S401),之后運(yùn)行單元B的中斷處理器79被激活(步驟S402)。在該 中斷處理器79中,信息獲取/控制單元792用來執(zhí)行對(duì)作為目標(biāo)的運(yùn)行單 元B的寄存器、緩存器和閃存的信息收集、寫入和控制(步驟S403)。 然后響應(yīng)生成器791生成對(duì)運(yùn)行單元A的響應(yīng)(歩驟S404),且運(yùn)行單 元A使用響應(yīng)接收器632接收該響應(yīng)(步驟S405)。當(dāng)這些操作的內(nèi)容 僅為控制時(shí),響應(yīng)中只需要包含涉及控制結(jié)果的信息。另一方面,當(dāng)操作 的內(nèi)容包含信息收集時(shí),響應(yīng)還包含所收集的信息。
此外,可采用如下配置,其中中斷處理器79是在B側(cè)運(yùn)行單元上周 期性生成的定時(shí)器中斷的中斷處理器,且其中運(yùn)行單元A使用通信單元 (未示出)來將用于執(zhí)行目標(biāo)處理的運(yùn)行控制的指令應(yīng)用到運(yùn)行單元B。
但是,這樣的配置引起用于執(zhí)行運(yùn)行控制的定時(shí)只是周期性生成定時(shí)器中 斷的定時(shí)的限制。
在本示例性實(shí)施例中,可以通過同樣的方案來實(shí)現(xiàn)從運(yùn)行單元B的調(diào) 試程序73執(zhí)行A側(cè)運(yùn)行單元的調(diào)試這一情況下的操作。
雖然此處本示例性實(shí)施例中的說明涉及配備有兩個(gè)運(yùn)行單元A和B的
系統(tǒng)的示例,但是該應(yīng)用很容易擴(kuò)展到配備有諸如三個(gè)或更多等任意數(shù)目
的運(yùn)行單元的系統(tǒng)。
說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng)的效果。
在本示例性實(shí)施例中,調(diào)試程序63和73配備有運(yùn)行單元間中斷生成 器631和731以及響應(yīng)接收器632和732;且在作為調(diào)試目標(biāo)的運(yùn)行單元 中運(yùn)行的中斷處理器配備有信息獲取/控制單元692和792以及響應(yīng)生成器 691和791。然后作為調(diào)試目標(biāo)的運(yùn)行單元經(jīng)歷中斷,所述中斷隨后從不 是作為調(diào)試目標(biāo)的運(yùn)行單元的運(yùn)行單元上工作的調(diào)試程序中生成,且信息 收集和控制由中斷處理器執(zhí)行。
如前面的說明中所描述,中斷處理器是中斷生成時(shí)首先被激活用于處 理中斷的程序。結(jié)果,運(yùn)行單元A和B的中斷處理器69和79中信息獲取 /控制單元692和792以及響應(yīng)生成器691和791的分別提供使得即使在運(yùn) 行單元A和B已停止時(shí)也能讀取已進(jìn)入停止?fàn)顟B(tài)的運(yùn)行單元的緩存器或寄 存器的內(nèi)容。第八示例性實(shí)施例
說明接下來涉及本發(fā)明的第八示例性實(shí)施例的調(diào)試系統(tǒng)。
上述第一至第七示例性實(shí)施例是在運(yùn)行單元進(jìn)入停止?fàn)顟B(tài)時(shí)執(zhí)行特定 運(yùn)行單元的調(diào)試的系統(tǒng)。
可以考慮如下情況,其中當(dāng)運(yùn)行單元進(jìn)入停止?fàn)顟B(tài)時(shí),正在被正常操 作程序運(yùn)行的特定過程經(jīng)歷失控。當(dāng)特定過程以這種方式經(jīng)歷失控時(shí),整 體運(yùn)行單元進(jìn)入停止?fàn)顟B(tài)并且甚至在其他過程無故障時(shí)也停止工作。
本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中即使在特定過程經(jīng)歷 失控且運(yùn)行單元進(jìn)入停止?fàn)顟B(tài)時(shí),發(fā)生失控的處理也暫停且差錯(cuò)被糾正以' 將停止的運(yùn)行單元返回到正常狀態(tài)。圖22示出本示例性實(shí)施例的調(diào)試系統(tǒng)的配置。圖22示出如下配置,
其中當(dāng)運(yùn)行單元B變成作為調(diào)試目標(biāo)的運(yùn)行單元時(shí),只能從運(yùn)行單元A為 運(yùn)行單元B執(zhí)行調(diào)試。當(dāng)任何運(yùn)行單元經(jīng)歷來自其他任意運(yùn)行單元的調(diào)試
時(shí),必須在每個(gè)運(yùn)行單元中提供同樣的配置。
如圖22所示,本示例性實(shí)施例的調(diào)試系統(tǒng)具有如下配置,其中與圖5 所示第一示例性實(shí)施例的調(diào)試系統(tǒng)的配置相比,調(diào)試程序63配備有運(yùn)行 單元間中斷生成器(圖22中表示為"中斷處理器")631和響應(yīng)接收器 632,且在運(yùn)行單元B中運(yùn)行的中斷處理器79配備有響應(yīng)生成器791和過 程控制單元793,運(yùn)行單元B是作為調(diào)試目標(biāo)的運(yùn)行單元。
運(yùn)行單元間中斷生成器631對(duì)作為調(diào)試目標(biāo)的運(yùn)行單元B生成中斷。 響應(yīng)接收器632通過響應(yīng)生成器791接收來自作為調(diào)試目標(biāo)的運(yùn)行單元的 響應(yīng)。
過程控制單元793實(shí)施對(duì)在作為調(diào)試目標(biāo)的運(yùn)行單元B上激活的正常 操作程序74的過程控制并暫停經(jīng)歷失控的過程。響應(yīng)生成器791將作為 過程控制單元793的過程控制結(jié)果獲得的信息發(fā)送到運(yùn)行單元B,對(duì)運(yùn)行 單元B已生成了中斷。
參考圖23的流程圖,本說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng) 的操作。圖23示出從運(yùn)行單元A的調(diào)試程序63執(zhí)行B側(cè)運(yùn)行單元上的過 程控制的示例。
調(diào)試程序63首先對(duì)作為調(diào)試目標(biāo)的運(yùn)行單元B發(fā)布運(yùn)行單元間中斷 '(步驟S401),之后運(yùn)行單元B的中斷處理器79被激活(步驟S402)。 在該中斷處理器79中,過程控制單元793用于實(shí)施對(duì)在運(yùn)行單元B中運(yùn) 行的正常操作程序74的過程控制(步驟S406)。然后響應(yīng)由響應(yīng)生成器 791生成并發(fā)送到運(yùn)行單元A (步驟S404),且運(yùn)行單元A使用響應(yīng)接收 器632接收響應(yīng)(步驟S405)。
另外,可采用如下配置,其中在B側(cè)運(yùn)行單元上周期性生成的定時(shí)器 中斷的中斷處理器被當(dāng)作中斷處理器79,且運(yùn)行單元A使用通信單元 (未示出)來給運(yùn)行單元B發(fā)指令用于執(zhí)行對(duì)目標(biāo)過程的運(yùn)行控制。但是 這種配置的情況下,所實(shí)施運(yùn)行控制的定時(shí)只限于周期性生成的定時(shí)中斷
的定時(shí)。
以下方法是用于實(shí)現(xiàn)對(duì)作為控制目標(biāo)的過程的處理控制的具體方法。 在第一過程控制方法中,OS的調(diào)度程序配備有過程控制變更單元, 用于基于來自外部的指令變更由調(diào)度程序?qū)嵤┑倪^程控制。于是過程控制
可通過將過程變更指令從中斷處理器79中的過程控制單元793發(fā)送到過
程控制變更單元來實(shí)現(xiàn)。
在第二過程控制方法中,提供過程控制信號(hào)發(fā)布單元,用于通過類似
OS的API (應(yīng)用程序接口)(諸如系統(tǒng)調(diào)用)的程序從中斷處理器79中 的過程控制單元793向作為控制目標(biāo)的過程發(fā)布過程控制信號(hào)。于是該方 法可以通過由過程控制信號(hào)發(fā)布單元向作為控制目標(biāo)的過程發(fā)布過程控制 信號(hào)來實(shí)現(xiàn)。
在第三過程控制方法中,在中斷處理器79中提供地址變更單元,用 于將存儲(chǔ)區(qū)域中保存的作為控制目標(biāo)的過程的返回地址改變?yōu)榱硪坏刂贰?于是該方法可以通過由中斷處理器79中的地址變更單元將返回地址改變 為錯(cuò)誤地址從而生成錯(cuò)誤地址引用異常來實(shí)現(xiàn)。
在這種情況下,因?yàn)橛僧惓R鸬姆钦=K止過程由OS執(zhí)行,所以 僅生成異常的過程就可導(dǎo)致過程終止。但是,各種類型的過程控制可以通 過采用導(dǎo)致實(shí)施不同于非正常終止過程的控制的配置來執(zhí)行,如在異常處 理器中促使過程終止。
在第四過程控制方法中,在中斷處理器79中提供命令變更單元,用 于將存儲(chǔ)區(qū)域中保存的作為控制目標(biāo)的過程的返回地址處存在的命令改變 為其他命令。該方法可以通過由中斷處理器79中的命令變更單元將返回 地址處的存在的命令替換為調(diào)試命令或錯(cuò)誤命令并生成異常來實(shí)現(xiàn)。因?yàn)?OS執(zhí)行由異常引起的非正常終止過程,所以僅生成異常的過程就可導(dǎo)致 過程終止。但是,各種過程控制可以通過采用導(dǎo)致執(zhí)行不同于非正常終止 過程的控制的配置來實(shí)施,如在異常處理器中促使過程終止。
存在用于從被提供為用戶過程的調(diào)試程序發(fā)布用于過程控制的系統(tǒng)調(diào) 用和用于執(zhí)行過程控制的現(xiàn)有方法。當(dāng)這類方法被使用且在運(yùn)行單元上運(yùn) 行的任意過程經(jīng)歷失控時(shí),控制不轉(zhuǎn)移到調(diào)試程序,結(jié)果過程控制無法實(shí)
施。但是,當(dāng)從內(nèi)部中斷處理器79執(zhí)行過程控制的上述過程控制的任一 個(gè)被使用時(shí),由于中斷處理器79以高于用戶過程的優(yōu)先級(jí)被執(zhí)行,因此 即使存在經(jīng)歷失控的過程,也可執(zhí)行過程控制。
在本示例性實(shí)施例中,可以通過同樣的方案來實(shí)現(xiàn)從運(yùn)行單元B的調(diào) 試程序執(zhí)行A惻運(yùn)行單元上的調(diào)試這一情況下的操作。
雖然本說明的提供涉及本實(shí)施例中配備有兩個(gè)運(yùn)行單元A和B的系統(tǒng) 的示例,但是本發(fā)明很容易擴(kuò)展到配備有諸如三個(gè)或更多等任意數(shù)目的運(yùn) 行單元的系統(tǒng)。
說明接下來涉及本示例性實(shí)施例的調(diào)試系統(tǒng)的效果。
在本示例性實(shí)施例中,采用如下配置,其中在由作為調(diào)試目標(biāo)的運(yùn)行 單元B運(yùn)行的中斷處理器79中提供過程控制單元793,且對(duì)作為調(diào)試目標(biāo) 的過程的控制從中斷處理器79的內(nèi)部執(zhí)行。然后對(duì)作為調(diào)試目標(biāo)的運(yùn)行 單元B的中斷從不是作為調(diào)試目標(biāo)的運(yùn)行單元B的運(yùn)行單元A上工作的 調(diào)試程序63中生成并在中斷處理器79中實(shí)施過程控制,由此可以從除作 為調(diào)試目標(biāo)的運(yùn)行單元B以外的運(yùn)行單元A執(zhí)行過程控制。此外,由于過 程控制是從以高于用戶過程的優(yōu)先級(jí)運(yùn)行的中斷處理器79內(nèi)部執(zhí)行的, 因此即使存在經(jīng)歷失控的過程,經(jīng)歷失控的過程也可暫停,發(fā)生差錯(cuò)的狀 態(tài)可被分析以執(zhí)行諸如變量?jī)?nèi)容校正之類的過程,進(jìn)而,程序可再次運(yùn)行 以觀察差錯(cuò)是否已被解決。通過重復(fù)這些過程,停止的運(yùn)行單元最終可返 回到正確的操作。
工業(yè)適用性
本發(fā)明可應(yīng)用于在配備有多個(gè)運(yùn)行單元的系統(tǒng)LSI中使用的調(diào)試系 統(tǒng)。本發(fā)明還可應(yīng)用于在配備有多個(gè)運(yùn)行單元的嵌入式系統(tǒng)中使用的調(diào)試 系統(tǒng)并可應(yīng)用于配備有多個(gè)運(yùn)行單元的計(jì)算機(jī)系統(tǒng)。
權(quán)利要求
1.一種調(diào)試系統(tǒng),用于執(zhí)行對(duì)在有多個(gè)運(yùn)行單元執(zhí)行相連操作的系統(tǒng)中運(yùn)行的程序的調(diào)試,所述調(diào)試系統(tǒng)包括激活指令分發(fā)裝置,用于在收到指示激活調(diào)試程序的激活指令后,將所述激活指令分發(fā)給所述多個(gè)運(yùn)行單元;以及多個(gè)調(diào)試程序激活裝置,它們對(duì)應(yīng)于所述多個(gè)運(yùn)行單元中的每一個(gè)被提供,用于基于已由所述激活指令分發(fā)裝置分發(fā)的激活指令在相應(yīng)的運(yùn)行單元上激活調(diào)試程序。
2. 如權(quán)利要求1所述的調(diào)試系統(tǒng),其中所述激活指令分發(fā)裝置向?qū)?yīng) 于已由所述激活指令指定的所述運(yùn)行單元的調(diào)試程序激活裝置發(fā)送所述激 活指令。
3. 如權(quán)利要求1所述的調(diào)試系統(tǒng),其中所述激活指令分發(fā)裝置向與基 于所述多個(gè)運(yùn)行單元中的每一個(gè)的操作狀態(tài)確定的運(yùn)行單元相對(duì)應(yīng)的調(diào)試 程序激活裝置發(fā)送所述激活指令。
4. 如權(quán)利要求1所述的調(diào)試系統(tǒng),其中所述激活指令分發(fā)裝置檢測(cè)所 述多個(gè)運(yùn)行單元中的每一個(gè)所使用的存儲(chǔ)區(qū)域的未占用容量,然后向與被 檢測(cè)的未占用容量中存在剩余的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置發(fā)送 所述激活指令。
5. 如權(quán)利要求1所述的調(diào)試系統(tǒng),其中所述激活指令分發(fā)裝置向與作 為調(diào)試目標(biāo)的運(yùn)行單元關(guān)系很小或無關(guān)的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活 裝置發(fā)送所述激活指令。
6. 如權(quán)利要求1所述的調(diào)試系統(tǒng),還包括中繼裝置,所述中繼裝置對(duì)應(yīng)于所述多個(gè)運(yùn)行單元中的任意之一被提供,用來將從通信端口發(fā)往調(diào)試 程序的命令中繼到由所述激活指令指定的運(yùn)行單元上的調(diào)試程序。
7. 如權(quán)利要求1所述的調(diào)試系統(tǒng),還包括多個(gè)中繼裝置,所述多個(gè)中繼裝置對(duì)應(yīng)于所述多個(gè)運(yùn)行單元中的每一個(gè)被提供,用來將從通信端口發(fā) 往調(diào)試程序的命令中繼到由所述激活指令指定的運(yùn)行單元上的調(diào)試程序。
8. 如權(quán)利要求1所述的調(diào)試系統(tǒng),還包括停止運(yùn)行單元避免裝置,用于避免將所述激活指令發(fā)送到與處于停止?fàn)顟B(tài)的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程 序激活裝置。
9. 如權(quán)利要求1所述的調(diào)試系統(tǒng),其中在所述多個(gè)運(yùn)行單元中的任意 一個(gè)中待激活的調(diào)試程序配備有物理-虛擬地址轉(zhuǎn)換裝置,用于將虛擬地址轉(zhuǎn)換為物理地址;以及 信息提取裝置,其使用已被所述物理-虛擬地址轉(zhuǎn)換裝置轉(zhuǎn)換的物理地 址,并考慮到操作系統(tǒng)在存儲(chǔ)器中安排控制信息的結(jié)構(gòu)以從如下存儲(chǔ)區(qū)域 中提取必要信息所述存儲(chǔ)區(qū)域被作為調(diào)試目標(biāo)并與激活了所述調(diào)試程序 的運(yùn)行單元不同的運(yùn)行單元所使用。
10. 如權(quán)利要求1所述的調(diào)試系統(tǒng),還包括差錯(cuò)檢測(cè)裝置,用于從所 述多個(gè)運(yùn)行單元中檢測(cè)發(fā)生差錯(cuò)的運(yùn)行單元,并生成用于執(zhí)行對(duì)已檢出的 運(yùn)行單元的調(diào)試的激活指令。
11. 如權(quán)利要求1所述的調(diào)試系統(tǒng),其中中斷處理器作為當(dāng)所述多個(gè) 運(yùn)行單元中的每一個(gè)中發(fā)生中斷時(shí)首先被激活用于處理中斷的程序,該中 斷處理器配備有信息獲取/控制裝置,用于當(dāng)從另一個(gè)運(yùn)行單元生成中斷時(shí),在已事先 設(shè)置的存儲(chǔ)區(qū)域中獲取信息;以及響應(yīng)生成裝置,用于將已由所述信息獲取/控制裝置獲取的信息發(fā)送到生成中斷的運(yùn)行單元;并且,在所述多個(gè)運(yùn)行單元中的任一個(gè)中激活的調(diào)試程序配備有 運(yùn)行單元間中斷生成裝置,用于對(duì)作為調(diào)試目標(biāo)的運(yùn)行單元生成中 斷;以及響應(yīng)接收裝置,用于接收來自作為調(diào)試目標(biāo)的運(yùn)行單元的響應(yīng)。
12. —種調(diào)試方法,用于執(zhí)行對(duì)在多個(gè)運(yùn)行單元執(zhí)行相連操作的系統(tǒng)中運(yùn)行的程序的調(diào)試,所述方法包括以下步驟在收到指示激活調(diào)試程序的激活指令后,將所述激活指令分發(fā)給所述多個(gè)運(yùn)行單元;以及通過對(duì)應(yīng)于所述多個(gè)運(yùn)行單元中的每一個(gè)提供的調(diào)試程序激活裝置, 基于已被分發(fā)的所述激活指令在相應(yīng)的運(yùn)行單元上激活調(diào)試程序。
13. 如權(quán)利要求12所述的調(diào)試方法,其中在所述分發(fā)激活指令的步驟 中,所述激活指令被發(fā)送到對(duì)應(yīng)于已由所述激活指令指定的運(yùn)行單元的調(diào) 試程序激活裝置。
14. 如權(quán)利要求12所述的調(diào)試方法,其中在所述分發(fā)激活指令的步驟中,所述激活指令被發(fā)送到與基于所述多個(gè)運(yùn)行單元中的每一個(gè)的操作狀 態(tài)確定的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置。
15. 如權(quán)利要求12所述的調(diào)試方法,其中在所述分發(fā)激活指令的步驟 中,所述多個(gè)運(yùn)行單元中的每一個(gè)使用的存儲(chǔ)區(qū)域的未占用容量被檢測(cè), 且所述激活指令被發(fā)送到與被檢測(cè)的未占用容量中存在剩余的運(yùn)行單元相 對(duì)應(yīng)的調(diào)試程序激活裝置。
16. 如權(quán)利要求12所述的調(diào)試方法,其中在所述分發(fā)所述激活指令的 步驟中,所述激活指令被發(fā)送到與作為調(diào)試目標(biāo)的運(yùn)行單元關(guān)系很小或無 關(guān)的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置。
17. 如權(quán)利要求12所述的調(diào)試方法,還包括如下步驟,其中對(duì)應(yīng)于所 述多個(gè)運(yùn)行單元中的任意之一提供的中繼裝置將從通信端口發(fā)往調(diào)試程序 的命令中繼到由所述激活指令指定的運(yùn)行單元上的調(diào)試程序。
18. 如權(quán)利要求12所述的調(diào)試方法,還包括如下步驟,其中對(duì)應(yīng)于所 述多個(gè)運(yùn)行單元中的每一個(gè)提供的任意一個(gè)中繼裝置將從通信端口發(fā)往調(diào) 試程序的命令中繼到由所述激活指令指定的運(yùn)行單元上的調(diào)試程序。
19. 如權(quán)利要求12所述的調(diào)試方法,其中在所述分發(fā)激活指令的步驟 中,所述激活指令不被發(fā)送到與處于停止?fàn)顟B(tài)的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程 序激活裝置。
20. 如權(quán)利要求12所述的調(diào)試方法,還包括如下步驟,其中 在所述多個(gè)運(yùn)行單元中的任意一個(gè)上激活的調(diào)試程序內(nèi)提供的物理-虛擬地址轉(zhuǎn)換裝置將虛擬地址轉(zhuǎn)換為物理地址;并且使用已被所述物理-虛擬地址轉(zhuǎn)換裝置轉(zhuǎn)換的物理地址并考慮到操作系 統(tǒng)在存儲(chǔ)器中安排控制信息的結(jié)構(gòu),從如下存儲(chǔ)區(qū)域中提取必要信息所 述存儲(chǔ)區(qū)域被作為調(diào)試目標(biāo)并與激活了所述調(diào)試程序的運(yùn)行單元不同的運(yùn) 行單元所使用。
21. 如權(quán)利要求12所述的調(diào)試方法,還包括從所述多個(gè)運(yùn)行單元中檢 測(cè)發(fā)生差錯(cuò)的運(yùn)行單元并生成用于執(zhí)行對(duì)已檢出的運(yùn)行單元的調(diào)試的激活 指令的步驟。
22. 如權(quán)利要求12所述的調(diào)試方法,還包括如下步驟,其中 在所述多個(gè)運(yùn)行單元中的任一個(gè)上激活的調(diào)試程序內(nèi)提供的運(yùn)行單元間中斷生成裝置對(duì)作為調(diào)試目標(biāo)的運(yùn)行單元生成中斷;在中斷處理器中提供的信息獲取/控制裝置在已經(jīng)從另一個(gè)運(yùn)行單元生 成中斷時(shí),獲取已事先設(shè)置的存儲(chǔ)區(qū)域中的信息,其中所述中斷處理器是 在所述多個(gè)運(yùn)行單元中的每一個(gè)中生成中斷時(shí)首先被激活用于處理中斷的 程序;已由所述信息獲取/控制裝置獲取的信息被發(fā)送到生成中斷的運(yùn)行單 元;并且已激活調(diào)試程序的運(yùn)行單元接收來自作為調(diào)試目標(biāo)的運(yùn)行單元的響應(yīng)。
23. —種致使計(jì)算機(jī)運(yùn)行調(diào)試方法的程序,所述調(diào)試方法用于執(zhí)行對(duì)在多個(gè)運(yùn)行單元執(zhí)行相連操作的系統(tǒng)中運(yùn)行的程序的調(diào)試,所述程序致使所述計(jì)算機(jī)運(yùn)行以下過程,其中在收到指示激活調(diào)試程序的激活指令后,將所述激活指令分發(fā)給所述多個(gè)運(yùn)行單元;并且基于已被分發(fā)的所述激活指令,對(duì)應(yīng)于所述多個(gè)運(yùn)行單元中的每一個(gè) 提供的調(diào)試程序激活裝置在相應(yīng)的運(yùn)行單元上激活調(diào)試程序。
24. 如權(quán)利要求23所述的程序,其中,在所述激活指令被分發(fā)的所述 過程中,所述激活指令被發(fā)送到對(duì)應(yīng)于已由所述激活指令指定的運(yùn)行單元 的調(diào)試程序激活裝置。
25. 如權(quán)利要求23所述的程序,其中,在所述激活指令被分發(fā)的所述 過程中,所述激活指令被發(fā)送到與基于所述多個(gè)運(yùn)行單元中的每一個(gè)的操作狀態(tài)確定的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置。
26. 如權(quán)利要求23所述的程序,其中,在所述激活指令被分發(fā)的所述過程中,所述多個(gè)運(yùn)行單元中的每一個(gè)使用的存儲(chǔ)區(qū)域的未占用容量被檢測(cè),且所述激活指令被發(fā)送到與被檢測(cè)的未占用容量中存在剩余的運(yùn)行單 元相對(duì)應(yīng)的調(diào)試程序激活裝置。
27. 如權(quán)利要求23所述的程序,其中,在所述激活指令被分發(fā)的所述過程中,所述激活指令被發(fā)送到與作為調(diào)試目標(biāo)的運(yùn)行單元關(guān)系很小或無 關(guān)的運(yùn)行單元相對(duì)應(yīng)的調(diào)試程序激活裝置。
28. 如權(quán)利要求23所述的程序,其中,致使計(jì)算機(jī)進(jìn)一步運(yùn)行如下過 程,其中對(duì)應(yīng)于所述多個(gè)運(yùn)行單元中的任意之一提供的中繼裝置將從通信 端口發(fā)往調(diào)試程序的命令中繼到由所述激活指令指定的運(yùn)行單元上的調(diào)試 程序。
29. 如權(quán)利要求23所述的程序,其中,致使計(jì)算機(jī)進(jìn)一步運(yùn)行如下過 程,其中對(duì)應(yīng)于所述多個(gè)運(yùn)行單元中的每一個(gè)提供的任意一個(gè)中繼裝置將 從通信端口發(fā)往調(diào)試程序的命令中繼到由所述激活指令指定的運(yùn)行單元上 的調(diào)試程序。
30. 如權(quán)利要求23所述的程序,其中,在所述激活指令被分發(fā)的所述 過程中,所述激活指令不被發(fā)送到與處于停止?fàn)顟B(tài)的運(yùn)行單元相對(duì)應(yīng)的調(diào) 試程序激活裝置。
31. 如權(quán)利要求23所述的程序,致使計(jì)算機(jī)進(jìn)一步運(yùn)行以下過程,其中在所述多個(gè)運(yùn)行單元中的任意一個(gè)上激活的調(diào)試程序內(nèi)提供的物理-虛 擬地址轉(zhuǎn)換裝置將虛擬地址轉(zhuǎn)換為物理地址;并且使用已被所述物理-虛擬地址轉(zhuǎn)換裝置轉(zhuǎn)換的物理地址并考慮到操作系 統(tǒng)在存儲(chǔ)器中安排控制信息的結(jié)構(gòu),從如下存儲(chǔ)區(qū)域中提取必要信息所 述存儲(chǔ)區(qū)域被作為調(diào)試目標(biāo)并與激活了所述調(diào)試程序的運(yùn)行單元不同的運(yùn) 行單元所使用。
32. 如權(quán)利要求23所述的程序,其中,致使計(jì)算機(jī)進(jìn)一步運(yùn)行如下過 程,其中從所述多個(gè)運(yùn)行單元中檢測(cè)發(fā)生差錯(cuò)的運(yùn)行單元,并生成用于執(zhí) 行對(duì)已檢出的運(yùn)行單元的調(diào)試的激活指令。
33. 如權(quán)利要求23所述的程序,其中,致使計(jì)算機(jī)進(jìn)一步運(yùn)行以下過 程,其中在所述多個(gè)運(yùn)行單元中的任一個(gè)上激活的調(diào)試程序內(nèi)提供的運(yùn)行單元 間中斷生成裝置對(duì)作為調(diào)試目標(biāo)的運(yùn)行單元生成中斷;在中斷處理器中提供的信息獲取/控制裝置在從另一個(gè)運(yùn)行單元生成中 斷時(shí),獲取已事先設(shè)置的存儲(chǔ)區(qū)域中的信息,其中所述中斷處理器是在所 述多個(gè)運(yùn)行單元中的每一個(gè)中生成中斷時(shí)首先被激活用于處理中斷的程序;已由所述信息獲取/控制裝置獲取的信息被發(fā)送到生成中斷的運(yùn)行單元;并且已激活調(diào)試程序的運(yùn)行單元接收來自作為調(diào)試目標(biāo)的運(yùn)行單元的響應(yīng)。
全文摘要
在收到從通信端口(1)發(fā)送的調(diào)試程序激活指令后,調(diào)試程序激活指令分發(fā)單元(61及71)將收到的調(diào)試程序激活指令分發(fā)給由這些激活指令指定的運(yùn)行單元。調(diào)試程序激活單元(62及72)針對(duì)每個(gè)運(yùn)行單元(A和B)被提供,并基于激活指令分發(fā)單元(61及71)分發(fā)的激活指令,在由這些激活指令指定的運(yùn)行單元上激活調(diào)試程序(63及73)。
文檔編號(hào)G06F11/28GK101208667SQ200680022720
公開日2008年6月25日 申請(qǐng)日期2006年5月8日 優(yōu)先權(quán)日2005年6月22日
發(fā)明者酒井淳嗣, 鈴木紀(jì)章 申請(qǐng)人:日本電氣株式會(huì)社