專利名稱:排錯裝置及排錯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及例如系統(tǒng)LSI的設(shè)計(jì)開發(fā)研究中使用的開發(fā)環(huán)境,特別是涉及系統(tǒng)LSI的設(shè)計(jì)開發(fā)環(huán)境的排錯(debug)裝置及排錯方法。
背景技術(shù):
像多媒體應(yīng)用那樣,存在需要實(shí)時處理的應(yīng)用。為了能夠?qū)崟r處理,有必要避開計(jì)算機(jī)輔助設(shè)計(jì)的系統(tǒng)硬件(CASH)的存儲器的再充填(refill)引起的開銷時間(overhead time)。因此多媒體應(yīng)用中使用的處理器有除了命令計(jì)算機(jī)輔助設(shè)計(jì)的系統(tǒng)硬件(CASH)的存儲器外還搭載命令存儲器(以下稱為“IMEM”)的。
如圖12所示,主存儲器由例如同步(synchronous)DRAM(SDRAM)構(gòu)成。該主存儲器具有例如256M比特左右的大容量。又,IMEM僅是例如數(shù)十k比特的容量的RAM,可以在一個命令周期取出命令,能夠高速動作。
主存儲器內(nèi)存儲著多條命令構(gòu)成的程序碼(以下簡稱為“代碼”)。該主存儲器內(nèi)的多個代碼被傳送到IMEM的覆蓋(overlay)區(qū)域,在IMEM得到執(zhí)行。也就是說,IMEM如上所述是小容量的存儲器。因此,將整個程序存儲于IMEM的覆蓋區(qū)域是困難的。因此,將程序分割為多個代碼,將該代碼按照程序的執(zhí)行傳送到覆蓋區(qū)域執(zhí)行。因此在覆蓋區(qū)域存儲的代碼每當(dāng)傳送代碼時被置換為最新的代碼。
例如在圖12,主存儲器內(nèi)有代碼1和代碼2,執(zhí)行代碼1時,它被拷貝于IMEM的覆蓋區(qū)域。另外,執(zhí)行代碼2時,它被拷貝于IMBM的覆蓋區(qū)域。因此代碼1被代碼2所覆蓋。因此,在IMEM上的地址A如果有放置代碼1的命令,就有放置代碼2的命令。IMEM的內(nèi)容由不同的多個任務(wù)置換,或由同一任務(wù)置換。
但是,在對程序進(jìn)行排錯時,最經(jīng)常使用的排錯手段有斷點(diǎn)(break-point)。這是執(zhí)行要達(dá)到該地址時中止執(zhí)行的方法。但是在IMEM上多個代碼被覆蓋的情況下,設(shè)定的中斷(break)命令或不被執(zhí)行,或有時錯誤地執(zhí)行。作為程序的執(zhí)行,有利用模擬器執(zhí)行和利用裝置執(zhí)行,中斷命令不起作用的情況也有以下多種。
(1)用模擬器執(zhí)行的情況通常,斷點(diǎn)執(zhí)行時的地址存儲于模擬器的內(nèi)部區(qū)域,程序計(jì)數(shù)器(PC)的值與存儲的斷點(diǎn)的地址一致時中斷。但是,如上所述在IMEM上有多個代碼被置換。因此有在想要中斷的地址以外的地址中斷,造成錯誤中斷的情況。例如以圖12的代碼1的命令執(zhí)行中斷的情況,在該情況下模擬器存儲地址A(將其稱為命令1的執(zhí)行地址)。但是如果比代碼1更早地執(zhí)行代碼2,則命令2被置換于命令1的地址。因此,由代碼2的命令實(shí)施中斷??傊?,在不希望發(fā)生的時候搞錯而發(fā)生中斷。
(2)以實(shí)際裝置執(zhí)行的情況作為實(shí)際裝置的中斷手段,有硬中斷和軟中斷兩種。硬中斷的動作與上述模擬器的情況相似。亦即斷點(diǎn)執(zhí)行時的地址存儲于硬件,例如地址中斷寄存器。在程序計(jì)數(shù)器(PC)的值與地址中斷寄存器存儲的值一致的情況下中斷。在該情況下,和模擬器的情況相同,有搞錯而發(fā)生中斷的情況。
另一方面,圖13表示軟中斷的例子。在軟中斷的情況下,利用例如改寫程序使中斷發(fā)生。例如在利用圖13A所示的命令1使其中斷的情況下,首先,如圖13B所示,命令1退避到排錯監(jiān)視器區(qū)域,如圖13C所示,設(shè)定dbreak命令(發(fā)生排錯中斷的命令)代替命令1。也就是說程序從命令1改寫為dbreak命令。然后,一旦執(zhí)行dbreak命令,就中斷以后的命令的執(zhí)行,控制轉(zhuǎn)移到排錯處理器(handler)或監(jiān)視器。其后,利用排錯處理器或監(jiān)視器,使命令1返回原來的地址。但是,在IMEM上有多個代碼被覆蓋的情況下,有時不執(zhí)行上述軟中斷。
例如,如圖14A所示,考慮以在IMEM存儲的代碼1的命令1使其中斷的情況。在該情況下如圖14B所示,在IMEM的地址A具有的命令1被置換為dbreak命令。但是在其后,如圖14C所示,一旦代碼1被代碼2所覆蓋,所述dbreak命令就被置換為命令2。其后,如圖14D所示,在代碼1再度被代碼2所覆蓋的情況下,IMEM上的代碼1的地址A上dbreak命令消失。因此,一旦程序計(jì)數(shù)器的輸出值到達(dá)地址A,命令1就得到執(zhí)行而不中斷。
這樣,已有的排錯有在打算中斷的地址不能夠中斷,在搞錯的地址中斷的情況,難于高效率地對程序進(jìn)行排錯。為此,希望開發(fā)研制在程序代碼被覆蓋的情況下,在應(yīng)該使其中斷的地址可以確實(shí)使其中斷,同時可以防止在搞錯的地址中斷,能夠高效率地對程序進(jìn)行排錯的排錯裝置和排錯方法。
本發(fā)明之二提供一種排錯方法,該方法包括步驟從在第1存儲裝置存儲,由識別符識別的多個程序碼中,將應(yīng)該執(zhí)行的程序碼傳送到第2存儲裝置的存儲區(qū)域、將程序·計(jì)數(shù)器的輸出值與輸入的中斷命令中設(shè)定的地址加以比較、所述比較結(jié)果,在程序·計(jì)數(shù)器的輸出值與由所述中斷命令設(shè)定的地址一致的情況下,將由中斷命令設(shè)定的識別符與傳送到所述第2存儲裝置的存儲區(qū)域的程序碼的識別符加以比較、所述識別符的比較結(jié)果,這些識別符一致的情況下,中斷執(zhí)行所述程序碼。
圖1是適用于本發(fā)明第1實(shí)施形態(tài)的排錯裝置的一個例子的結(jié)構(gòu)圖。
圖2是表示圖1的一部分的結(jié)構(gòu)圖。
圖3是說明被覆蓋的代碼用的圖。
圖4是具體表示圖1和圖2的結(jié)構(gòu)的結(jié)構(gòu)圖。
圖5是表示中斷命令的輸入形式的圖。
圖6是用模擬器排錯的情況下的動作流程圖。
圖7是表示本實(shí)施例中的排錯器(debugger)用的對象的圖。
圖8A、圖8B是在實(shí)際裝置進(jìn)行排錯的情況下的動作圖。
圖9A、圖9B表示本發(fā)明第3實(shí)施形態(tài),是代碼和ID的生成方法的另一例子的說明圖。
圖10表示本發(fā)明第4實(shí)施形態(tài),是用GUI輸入中斷命令的例子的說明圖。
圖11是表示圖10的動作的流程圖。
圖12表示已有的排錯器的動作。
圖13A~圖13C表示已有的軟中斷的例子。
圖14A~圖14D表示已有的排錯器的動作。
具體實(shí)施形態(tài)下面參照附圖對本發(fā)明的實(shí)施形態(tài)進(jìn)行說明。
第1實(shí)施形態(tài)圖1是適用于第1實(shí)施形態(tài)的排錯裝置的總體結(jié)構(gòu)的一個例子?;?上配置有處理器的芯片2。該芯片2通過JTAG(Joint Test Action Group)端口3連接于JTAG控制器4。該JTAG控制器4連接于個人電腦(或工作站)5。該個人電腦5中存儲著控制編入芯片2中的程序的排錯的排錯器6以及模擬程序的模擬器7。
圖2表示收容于所述芯片2的處理器的大概結(jié)構(gòu)。CPU11是內(nèi)藏有作為命令存儲器的IMEM12。CPU11連接于總線13??偩€13上通過SDRAMC(SDRAM控制器)14連接著作為主存儲器的SDRAM15。該SDRAM15具有例如256M比特左右的巨大容量,配置于例如芯片2的外部。還有,總線13上連接在上述IMEM12與SDRAM15之間控制數(shù)據(jù)的傳送的DMAC(DMA控制器)16。上述IMEM12由具有能夠在例如1命令周期取出命令的例如數(shù)十k比特左右的容量的高速RAM構(gòu)成。
下面參照圖3、4對圖1、2的具體結(jié)構(gòu)進(jìn)行說明。還有,在圖3、4中與圖1、2相同的部分標(biāo)以相同的符號。
首先,利用圖3對被覆蓋的代碼進(jìn)行說明。在本實(shí)施形態(tài)中,被覆蓋的代碼具有兩種地址。如圖3所示,代碼被執(zhí)行之前被置于較低速的存儲器,在本實(shí)施形態(tài)中被置于SDRAM。這時的地址稱為配置地址。在圖3中,地址1表示配置地址。該代碼1在執(zhí)行時存儲于IMEM。這時的地址稱為代碼1的執(zhí)行地址。圖3中所示的地址A是代碼1中的命令A(yù)的執(zhí)行地址的例子。在該實(shí)施形態(tài)中,一個代碼不具有多個執(zhí)行地址??傊?,假定不在IMEM的別的執(zhí)行地址存儲。
圖4具體表示圖1和圖2的結(jié)構(gòu)。在SDRAM15中,存儲著作為控制程序的OS(Operating System;操作系統(tǒng))和多個任務(wù)、即任務(wù)1、任務(wù)2、……的代碼。另一方面,IMEM12被分割為例如兩個數(shù)據(jù)區(qū)(bank)。在數(shù)據(jù)區(qū)1拷貝OS中的常駐部。還有,IMEM12具有例如4個覆蓋區(qū)域1、2、3、4。覆蓋區(qū)域及任務(wù)的數(shù)目是任意的,只要至少有一個即可。覆蓋區(qū)域1、2配置于數(shù)據(jù)區(qū)1,覆蓋區(qū)域3、4配置于數(shù)據(jù)區(qū)2。在這些覆蓋區(qū)域的每一個,各任務(wù)的代碼被置換。
上述SDRAM15內(nèi)的任務(wù)1的代碼被分為代碼1-1、代碼1-2-1~代碼1-4-2。各代碼在執(zhí)行之前被拷貝于IMEM12的對應(yīng)的覆蓋區(qū)域。也就是說,代碼1-1被拷貝于覆蓋區(qū)域1,代碼1-2-1和代碼1-2-2被拷貝于覆蓋區(qū)域2。又,代碼1-3被拷貝于覆蓋區(qū)域3,代碼1-4-1和代碼1-4-2被拷貝于覆蓋區(qū)域4。也就是說,覆蓋區(qū)域2為代碼1-2-1和代碼1-2-2共有,覆蓋區(qū)域4為代碼1-4-1和代碼1-4-2共有。各任務(wù)的代碼利用例如程序預(yù)先設(shè)定。
各代碼具有作為識別符的ID。該ID有例如16比特的長度,前頭的8比特記錄任務(wù)的識別符,剩下的8比特記錄在任務(wù)內(nèi)獨(dú)特(unique)的識別符。例如代碼1-1的ID為0x0101,代碼1-2-1的ID為0x0102。各代碼的ID利用語言工具設(shè)定。
又,對應(yīng)于各覆蓋區(qū)域設(shè)置變數(shù)存儲區(qū)域OVR1、2、3、4。亦即變數(shù)存儲區(qū)域OVR1、2、3、4分別對應(yīng)于覆蓋區(qū)域1、2、3、4。該變數(shù)存儲區(qū)域OVR1、2、3、4表示哪一個代碼被拷貝于IMEM 12的哪一個覆蓋區(qū)域。例如在代碼1-1被拷貝于覆蓋區(qū)域1的情況下,變數(shù)存儲區(qū)域OVR1存儲代碼1-1的ID0x0101。該變數(shù)存儲區(qū)域OVR1-4可以被例如排錯器、模擬器、OS、任務(wù)中的任何一個參考。所述ID以及變數(shù)存儲區(qū)域OVR1-4存儲于例如SDRAM15內(nèi)。
在本實(shí)施形態(tài)中,變數(shù)存儲區(qū)域OVR1、2、3、4構(gòu)成操作系統(tǒng)的核心,利用常駐于IMEM12的核心程序(kernel)或任務(wù)管理程序首先更新。例如在當(dāng)前執(zhí)行任務(wù)2的狀態(tài)下,核心程序從任務(wù)2切換為任務(wù)1的情況下,核心程序首先把變數(shù)存儲區(qū)域OVR1變更為0x0101。其后,把SDRAM15代碼1-1拷貝到IMEM 12的覆蓋區(qū)域1。其后,任務(wù)1把例如代碼1-3拷貝到覆蓋區(qū)域3。在這種情況下,首先,變數(shù)存儲區(qū)域OVR3變更為0x0104。其后,DAMC16啟動,代碼1-3被拷貝到覆蓋區(qū)域3。覆蓋區(qū)域1和覆蓋區(qū)域配置于不同的數(shù)據(jù)區(qū)(Bank)。因此代碼1-1的執(zhí)行與利用代碼1-3的DMA的傳送并行執(zhí)行。還有,各代碼采用構(gòu)成作為程序的構(gòu)成單位的節(jié)(section)的代碼。
下面對斷點(diǎn)的設(shè)定方法進(jìn)行說明。斷點(diǎn)在使排錯器6啟動的狀態(tài)下利用個人電腦(或工作站)5的例如鍵盤輸入。也就是說,斷點(diǎn)利用鍵盤輸入的中斷命令設(shè)定。
圖5表示中斷命令的輸入形式。在圖5所示的中斷命令中,在“dbg>break”之后指定想要指定的執(zhí)行地址、表示覆蓋區(qū)域的變數(shù)存儲區(qū)域以及ID。在圖5所示的例子的情況下,執(zhí)行地址是地址A,變數(shù)存儲區(qū)域是OVR1,ID是0x0101。這一記述的意思表示,在程序計(jì)數(shù)器的輸出值與執(zhí)行地址A一致時,在由變數(shù)存儲區(qū)域名指定的覆蓋區(qū)域1存在由ID決定的代碼的情況下執(zhí)行中斷。
圖6表示用圖4所示的模擬器排錯的情況下的動作。用模擬器7執(zhí)行的情況下,由排錯器6向模擬器7提供上述中斷條件(執(zhí)行地址、變數(shù)存儲區(qū)域名、ID)。由模擬器7保持該中斷條件。模擬器一邊執(zhí)行命令一邊首先將模擬器具有的程序計(jì)數(shù)器(PC)的計(jì)數(shù)值與執(zhí)行地址加以比較(ST1)。在這些值一致的情況下,對設(shè)定的變數(shù)存儲區(qū)域名和實(shí)際變數(shù)之間是否一致,以及設(shè)定的ID與實(shí)際ID之間是否一致進(jìn)行比較(ST2)。亦即在例如圖5所示的例子中,對變數(shù)存儲區(qū)域OVR1的值是否等于代碼1-1的ID(0x0101)進(jìn)行比較。在這些值一致的情況下執(zhí)行中斷(ST3)。
也就是說,在例如IMEM12上拷貝的代碼1被別的代碼置換的情況下,利用中斷命令設(shè)定的變數(shù)存儲區(qū)域名和ID與變數(shù)存儲區(qū)域OVR1-4中的任何一個存儲的ID不一致。因此不被中斷。又,在執(zhí)行代碼1的情況下,代碼1被從SDRAM15拷貝到IMEM12。在該狀態(tài)下程序計(jì)數(shù)器的輸出值與設(shè)定的斷點(diǎn)的地址A一致時,由中斷命令設(shè)定的變數(shù)存儲區(qū)域名和ID與變數(shù)存儲區(qū)域OVR1-4中的任何一個存儲的ID一致。因此可以在設(shè)定的地址可靠地中斷。
還有,變數(shù)存儲區(qū)域名和ID又可以由排錯器6保持。又,模擬器又可以采用直接參照變數(shù)存儲區(qū)域OVR1-4的結(jié)構(gòu)。
還有,在上述說明中,首先將程序計(jì)數(shù)器(PC)的值與執(zhí)行地址進(jìn)行比較,這些值一致時,比較設(shè)定的變數(shù)存儲區(qū)域名與實(shí)際變數(shù)之間是否一致,設(shè)定的ID和實(shí)際ID是否一致。但是,該比較順序又可以反過來。也就是說,又可以首先比較設(shè)定的變數(shù)存儲區(qū)域名與實(shí)際變數(shù)之間是否一致,設(shè)定的ID和實(shí)際ID是否一致,在這些值一致的情況下,對程序計(jì)數(shù)器的值與執(zhí)行地址進(jìn)行比較。
下面參照圖7和圖8對用實(shí)際裝置進(jìn)行排錯的情況下的動作進(jìn)行說明。
圖7是表示本實(shí)施例中的排錯器(debugger)用的對象。如圖7所示,在排錯器用的程序中,各節(jié)(代碼)作為排錯信息具有與節(jié)的前頭對應(yīng)的配置地址和執(zhí)行地址。所述配置地址表示節(jié)存儲于SDRAM15時節(jié)的前頭地址。所述執(zhí)行地址表示在節(jié)IMEM12存儲時的節(jié)的前頭地址。一旦用戶輸入圖5所示的中斷條件,首先,圖8A所示的IMEM12的地址中具有的命令就退避到排錯器6的未圖示的監(jiān)視器區(qū)域。也就是,根據(jù)中斷命令的想要中斷的執(zhí)行地址,IMEM12的地址A具有的命令1退避到排錯器6的未圖示的監(jiān)視器區(qū)域。
其后,如圖8B所示,在地址A寫入作為中斷命令的dbreak命令。與此同時,利用dbreak命令將SDRAM存儲的代碼1的命令1寫在上面。
在SDRAM15的命令1的配置地址如下所述求得。排錯器根據(jù)中斷命令的執(zhí)行地址,取得該執(zhí)行地址所屬的代碼的排錯器用的對象。從該排錯器用的對象了解節(jié)的前頭的配置地址。對該配置地址添加從節(jié)內(nèi)的配置地址到命令1的偏移量(offset)(相對地址),以此可以得到在SDRAM15的地址1。
這樣,IMEM12的執(zhí)行地址與SDRAM15的配置地址這兩個地址上寫入dbreak命令。因此,IMEM12的代碼1被別的代碼置換,即使是在dbreak命令被別的命令覆蓋的情況下,也會在執(zhí)行代碼1時從SDRAM15再次把代碼1拷貝到IMEM12。其結(jié)果是,dbreak命令也再度拷貝于IMEM上。因此在IMEM12中dbreak命令沒有消除,所以在地址A能夠確實(shí)實(shí)施中斷。
采用上述第1實(shí)施形態(tài),在各代碼設(shè)定ID,在IMEM12的覆蓋區(qū)域上拷貝的代碼利用在變數(shù)存儲區(qū)域OVR1-4存儲的ID管理。還有,設(shè)定斷點(diǎn)的中斷命令對應(yīng)于使其中斷的執(zhí)行地址,具有變數(shù)存儲區(qū)域名和ID。因此在用模擬器排錯的情況下,拷貝在IMEM12上的代碼被別的代碼置換時,中斷命令設(shè)定的變數(shù)存儲區(qū)域名和ID與變數(shù)存儲區(qū)域的變數(shù)存儲區(qū)域名和ID不一致。因此不被中斷。又,執(zhí)行中斷命令設(shè)定的代碼的情況下,對應(yīng)的代碼被從SDRAM15拷貝到IMEM12。這時,變數(shù)存儲區(qū)域的變數(shù)存儲區(qū)域名和ID與中斷命令設(shè)定的一致。因此,即使是在代碼被覆蓋的情況下也能夠在設(shè)定的地址確實(shí)執(zhí)行中斷。
又,利用實(shí)際裝置進(jìn)行排錯時,在IMEM12存儲的代碼的執(zhí)行地址和存儲于SDRAM15的同一代碼的配置地址這兩個地址上寫入中斷命令。因此即使是IMEM12存儲的代碼被別的代碼置換的情況下,中斷命令也沒有消失。所以能夠在設(shè)定中斷命令的地址確實(shí)地使其中斷。
而且變數(shù)存儲區(qū)域具有多個區(qū)域。所以即使是設(shè)定多個排錯區(qū)域的情況下,也能夠確實(shí)在所要的地址中斷。
第2實(shí)施形態(tài)下面對本發(fā)明的第2實(shí)施形態(tài)加以說明。
上述第1實(shí)施形態(tài)是核心程序和任務(wù)更新變數(shù)存儲區(qū)域OVR1-4的內(nèi)容。而第2實(shí)施形態(tài)則是DMAC(DMA控制器)16更新變數(shù)存儲區(qū)域OVR1-4的內(nèi)容。由于采用這樣的結(jié)構(gòu),用戶不必考慮更新變數(shù)存儲區(qū)域OVR1-4。
在這種情況下,存在DMAC16的硬件更新變數(shù)存儲區(qū)域OVR1-4的內(nèi)容的方法以及設(shè)置使DMAC16啟動用的函數(shù),利用該函數(shù),借助于軟件更新變數(shù)存儲區(qū)域OVR1-4的內(nèi)容的方法。
又,也考慮使模擬器具有更新變數(shù)存儲區(qū)域OVR1-4的內(nèi)容的功能。但是在該情況下不能夠用實(shí)際裝置使其中斷。
采用上述第2實(shí)施形態(tài),利用DMAC16更新變數(shù)存儲區(qū)域OVR1-4的內(nèi)容,這樣,用戶在執(zhí)行用戶設(shè)定的覆蓋時不必變更變數(shù)存儲區(qū)域OVR1-4。因此可以減輕用戶的負(fù)擔(dān)。
第3實(shí)施形態(tài)圖9A、圖9B表示本發(fā)明第3實(shí)施形態(tài)。
如圖9A所示,例如也可以使排錯器能夠從源程序生成具有代碼以及與各代碼對應(yīng)的ID的表。在采用這樣的結(jié)構(gòu)的情況下,用戶只要輸入中斷命令即可,能夠進(jìn)一步減輕用戶的負(fù)擔(dān)。
又如圖9B所示,例如也可以使編譯程序能夠從源程序生成具有代碼以及與各代碼對應(yīng)的ID的表。在采用這樣的結(jié)構(gòu)的情況下,也與上面所述相同,用戶只要輸入中斷命令即可,能夠減輕用戶的負(fù)擔(dān)。
第4實(shí)施形態(tài)在上述第1~第3實(shí)施形態(tài)中,中斷命令從鍵盤輸入。但是并不限定于此。
圖10表示本發(fā)明的第4實(shí)施形態(tài),表示用GUI(圖形用戶界面;Graphics UserInterface)輸入中斷命令的例子。在個人電腦或工作站的顯示器31上顯示例如排錯器6源窗口32。該源窗口32上顯示用C語言或匯編語言記載的源程序。該源程序由例如配置地址或執(zhí)行地址、命令構(gòu)成??捎捎脩羧我庠O(shè)定是顯示配置地址還是顯示執(zhí)行地址。
又,顯示配置地址的源程序與顯示執(zhí)行地址的源程序可以分別在不同點(diǎn)窗口顯示。例如圖10所示的窗口321顯示包含配置地址的源程序,窗口322顯示包含執(zhí)行地址的源程序。還有,可以顯示窗口321和窗口322兩者中的任一個,又可以同時顯示窗口321和窗口322兩者。又可以選擇顯示哪一個覆蓋區(qū)域的源程序。
在源窗口32的近旁,顯示指示排錯器6的工作的多個圖標(biāo)33、34、35。其中圖標(biāo)35是促使中斷命令生成的圖標(biāo)。
圖11表示排錯器6的大概動作。在圖10表示的狀態(tài)中,使光標(biāo)36向顯示于窗口321或窗口322的源程序的所要的行移動,一旦點(diǎn)擊圖標(biāo)35(ST11),就自動生成圖5所示的中斷命令。也就是說,排錯器6根據(jù)圖7所示的排錯器用執(zhí)行程序的排錯信息求執(zhí)行地址、變數(shù)存儲區(qū)域名、以及ID(ST12),根據(jù)這些數(shù)據(jù)生成上述中斷命令(ST13)。這時,在源窗口顯示配置地址的情況下,從排錯信息取得執(zhí)行地址編入中斷命令。還有,本實(shí)施形態(tài)中不限于生成上述中斷命令本身的情況,又可以生成相當(dāng)于上述中斷命令的信息。
采用上述第4實(shí)施形態(tài),用戶只要使光標(biāo)移動到顯示器31顯示的源程序的所要的行,點(diǎn)擊中斷命令生成用的圖標(biāo)35即可。因此用戶不需要識別變數(shù)存儲區(qū)域名及ID。更加便于操作。
對那些業(yè)內(nèi)熟練技術(shù)人員而言,其他的優(yōu)勢和修改將容易聯(lián)想到。因此,發(fā)明的更主要的方面不應(yīng)被局限于在此所描述的細(xì)節(jié)和有代表性的實(shí)施例中。從而不背離附加權(quán)利要求所定義的普通發(fā)明概念的精神和范圍,可以做出不同的修改。
權(quán)利要求
1.一種排錯(debug)裝置,其特征在于,包含存儲利用識別符識別的多個程序碼的第1存儲裝置、至少具有一個存儲區(qū)域的第2存儲裝置,所述第1存儲裝置中存儲的所述多個程序碼中,被執(zhí)行的程序碼存儲于所述存儲區(qū)域、存儲在所述第2存儲裝置的所述存儲區(qū)域存儲的所述程序碼的所述識別符的第1變數(shù)存儲區(qū)域、以及在由輸入的指令指定的地址中,在所述指令中設(shè)定的識別符與所述第1變數(shù)存儲區(qū)域存儲的識別符一致的情況下,中斷執(zhí)行所述程序碼的控制部。
2.根據(jù)權(quán)利要求1所述的排錯裝置,其特征在于,所述多個程序碼包含于至少由1個所述程序碼構(gòu)成的任務(wù)(task)中,所述識別符包含所述任務(wù)的識別符和任務(wù)內(nèi)的程序碼的識別符。
3.根據(jù)權(quán)利要求1所述的排錯裝置,其特征在于,還包含存儲與所述程序碼對應(yīng)的識別符的第2變數(shù)存儲區(qū)域。
4.根據(jù)權(quán)利要求1所述的排錯裝置,其特征在于,所述第1變數(shù)存儲區(qū)域中存儲的識別符更新控制程序的核心程序(kernel)。
5.根據(jù)權(quán)利要求1所述的排錯裝置,其特征在于,所述第1變數(shù)存儲區(qū)域中存儲的識別符更新控制程序的任務(wù)管理程序。
6.根據(jù)權(quán)利要求1所述的排錯裝置,其特征在于,還具備把所述第1存儲裝置中存儲的程序碼傳送到所述第2存儲裝置的DMA控制器。
7.根據(jù)權(quán)利要求6所述的排錯裝置,其特征在于,在所述第1變數(shù)存儲區(qū)域中存儲的識別符對應(yīng)于利用所述DMA控制器進(jìn)行的程序碼的傳送更新。
8.根據(jù)權(quán)利要求1所述的排錯裝置,其特征在于,所述第1變數(shù)存儲區(qū)域中存儲的識別符參照對所述程序碼進(jìn)行排錯(debug)的排錯程序(debugger)
9.根據(jù)權(quán)利要求1所述的排錯裝置,其特征在于,所述第1變數(shù)存儲區(qū)域的識別符直接參照試執(zhí)行所述程序碼的模擬器。
10.一種排錯方法,其特征在于,從在第1存儲裝置存儲,由識別符識別的多個程序碼中,將應(yīng)該執(zhí)行的程序碼傳送到第2存儲裝置的存儲區(qū)域,將程序·計(jì)數(shù)器的輸出值與輸入的中斷命令中設(shè)定的地址加以比較,所述比較結(jié)果,在程序·計(jì)數(shù)器的輸出值與由所述中斷命令設(shè)定的地址一致的情況下,將由中斷命令設(shè)定的識別符與傳送到所述第2存儲裝置的存儲區(qū)域的程序碼的識別符加以比較,所述識別符的比較結(jié)果,這些識別符一致的情況下,中斷執(zhí)行所述程序碼。
11.根據(jù)權(quán)利要求10所述的排錯方法,其特征在于,在從所述第1存儲裝置向所述第2存儲裝置傳送程序碼之前,在所述第1存儲裝置存儲的各程序碼設(shè)定所述識別符。
12.根據(jù)權(quán)利要求10所述的排錯方法,其特征在于,將傳送到所述第2存儲裝置的存儲區(qū)域的程序碼的識別符存儲于第1變數(shù)存儲區(qū)域。
13.根據(jù)權(quán)利要求12所述的排錯方法,其特征在于,所述第1變數(shù)存儲區(qū)域的識別符更新控制程序的核心程序。
14.根據(jù)權(quán)利要求12所述的排錯方法,其特征在于,所述第1變數(shù)存儲區(qū)域的識別符更新控制程序的任務(wù)管理程序。
15.根據(jù)權(quán)利要求12所述的排錯方法,其特征在于,所述第1變數(shù)存儲區(qū)域的識別符對應(yīng)于利用DMA控制器進(jìn)行的程序碼的傳送更新。
16.根據(jù)權(quán)利要求10所述的排錯方法,其特征在于,所述程序碼及與各程序碼對應(yīng)的識別符根據(jù)源程序生成排錯程序。
17.根據(jù)權(quán)利要求10所述的排錯方法,其特征在于,所述程序碼及與各程序碼對應(yīng)的識別符根據(jù)源程序生成編譯程序。
18.根據(jù)權(quán)利要求10所述的排錯方法,其特征在于,在將程序·計(jì)數(shù)器的輸出值與輸入的中斷命令中設(shè)定的地址加以比較之前,在顯示器上顯示源程序以及促使中斷命令的生成的圖標(biāo)(icon),相應(yīng)于所述圖標(biāo)的操作,根據(jù)與所述顯示器上顯示的源程序的指定部分對應(yīng)的地址及所述識別符,生成所述中斷命令或相當(dāng)于所述中斷命令的信息。
19.根據(jù)權(quán)利要求18所述的排錯方法,其特征在于,使所述顯示器同時顯示表示包含配置地址的源程序的第1窗口、以及表示包含執(zhí)行地址的源程序的第1窗口。
20.一種排錯方法,其特征在于,從在第1存儲裝置存儲,由識別符識別的多個程序碼中,將應(yīng)該執(zhí)行的程序碼拷貝到第2存儲裝置的存儲區(qū)域的所述存儲區(qū)域的程序碼具有表示在所述第1存儲區(qū)域存儲時的程序碼的首部的首部地址以及執(zhí)行地址;在傳送到所述存儲區(qū)域的程序碼的第1地址寫入中斷命令;在與留在所述第1存儲裝置的所述程序碼的所述第1地址對應(yīng)的第2地址寫入所述中斷命令。
21.根據(jù)權(quán)利要求20所述的排錯方法,其特征在于,所述第2地址由所述首部地址與所述第1地址相加求得。
22.根據(jù)權(quán)利要求20所述的排錯方法,其特征在于,將與所述程序碼的首部對應(yīng)的首部地址與執(zhí)行地址提供給排錯程序。
23.根據(jù)權(quán)利要求20所述的排錯方法,其特征在于,在從所述第1存儲裝置向所述第2存儲裝置傳送程序碼之前,在所述第1存儲裝置存儲的各程序碼設(shè)定所述識別符。
24.根據(jù)權(quán)利要求20所述的排錯方法,其特征在于,將傳送到所述第2存儲裝置的存儲區(qū)域的程序碼的識別符存儲于第1變數(shù)存儲區(qū)域。
25.根據(jù)權(quán)利要求24所述的排錯方法,其特征在于,所述第1變數(shù)存儲區(qū)域的識別符更新控制程序的核心程序。
26.根據(jù)權(quán)利要求24所述的排錯方法,其特征在于,所述第1變數(shù)存儲區(qū)域的識別符更新控制程序的任務(wù)管理程序。
27.根據(jù)權(quán)利要求24所述的排錯方法,其特征在于,所述第1變數(shù)存儲區(qū)域的識別符對應(yīng)于利用所述DMA控制器進(jìn)行的程序碼的傳送更新。
28.根據(jù)權(quán)利要求20所述的排錯方法,其特征在于,程序碼及與各程序碼對應(yīng)的識別符根據(jù)源程序生成排錯程序。
29.根據(jù)權(quán)利要求20所述的排錯方法,其特征在于,程序碼及與各程序碼對應(yīng)的識別符根據(jù)源程序生成編譯程序。
30.根據(jù)權(quán)利要求20所述的排錯方法,其特征在于,在將程序·計(jì)數(shù)器的輸出值與輸入的中斷命令中設(shè)定的地址加以比較之前,在顯示器上顯示源程序以及促使中斷命令的生成的圖標(biāo)(icon),相應(yīng)于所述圖標(biāo)的操作,根據(jù)與所述顯示器上顯示的源程序的指定部分對應(yīng)的地址及所述識別符,生成所述中斷命令或相當(dāng)于所述中斷命令的信息。
31.根據(jù)權(quán)利要求30所述的排錯方法,其特征在于,使顯示器同時顯示表示包含配置地址的源程序的第1窗口、以及表示包含執(zhí)行地址的源程序的第1窗口。
全文摘要
本發(fā)明提供一種排錯(debug)裝置及排錯方法。在第1存儲裝置存儲多個程序碼。各程序碼具有識別符。第2存儲裝置至少具有一個存儲區(qū)域,在該存儲區(qū)域存儲在第1存儲裝置存儲的多個程序碼中的被執(zhí)行的程序碼。第1變數(shù)存儲區(qū)域保持在第2存儲裝置存儲的程序碼的識別符??刂撇吭诿畹膬?nèi)容與第1變數(shù)區(qū)域的內(nèi)容一致的情況下使其中斷。
文檔編號G06F11/28GK1462938SQ0214825
公開日2003年12月24日 申請日期2002年10月31日 優(yōu)先權(quán)日2002年5月27日
發(fā)明者松本展, 三浦貴 申請人:株式會社東芝