專利名稱:調(diào)試軟件程序的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于調(diào)試軟件程序的設(shè)備和方法。
背景技術(shù):
盡管軟件的復(fù)雜性和范圍在過去的幾十年巨大地增長,但是在生產(chǎn)軟件 的軟件工程技術(shù)方面的進(jìn)展最多僅僅是平緩的。軟件開發(fā)仍舊主要是勞力密 集型成果,因此受人力限制。
在商業(yè)軟件開發(fā)中,增加的產(chǎn)品復(fù)雜度、縮短的開發(fā)周期、以及更高的 客戶期望質(zhì)量已經(jīng)將主要的責(zé)任放在軟件調(diào)試、測試和驗證的領(lǐng)域上。有助 于可靠的編程系統(tǒng)產(chǎn)品的關(guān)鍵因素在于,確保程序?qū)凑掌谕牟渴瓠h(huán)境內(nèi) 的其功能和非功能的規(guī)范來滿意地執(zhí)行。在典型的商業(yè)開發(fā)組織中,經(jīng)由適 當(dāng)?shù)恼{(diào)試、測試和驗證活動而提供這種保證的成本可能輕易占據(jù)總開發(fā)成本
的50%到75%。
因此需要一種自動調(diào)試軟件程序的方法。
發(fā)明內(nèi)容
因此,在第一方面,本發(fā)明提供了一種調(diào)試計算機(jī)程序的方法。該方法 提供包括源代碼的計算機(jī)程序以及該源代碼的清單。該方法還提供包括數(shù)據(jù) 存儲介質(zhì)的計算裝置,并且將計算機(jī)程序存儲在該數(shù)據(jù)存儲介質(zhì)上。
然后所述方法運(yùn)行計算機(jī)程序,并且如果所述方法檢測到出錯情況,則 所述方法生成包括(N個)保存區(qū)域的轉(zhuǎn)儲(dump)文件并且將該轉(zhuǎn)儲文件 保存到數(shù)據(jù)存儲介質(zhì)。使用從轉(zhuǎn)儲文件提取的信息和源代碼清單,所述方法 在檢測到出錯情況時再現(xiàn)源代碼執(zhí)行。
參考附圖,現(xiàn)在僅通過舉例來描述本發(fā)明的實施例,附圖中 圖1是示出根據(jù)本發(fā)明優(yōu)選實施例的計算裝置的組件的方框圖;圖2是示出三個保存區(qū)域的方框圖,其中每個保存區(qū)域包括當(dāng)圖1的計 算裝置運(yùn)行軟件程序時生成的多個寄存器值;
圖3是示出包括三個保存區(qū)域的轉(zhuǎn)儲文件的方框圖,其中在檢測到軟件 出錯情況之后生成并保存該轉(zhuǎn)儲文件;以及
圖4是概括根據(jù)本發(fā)明的優(yōu)選實施例的方法的步驟的流程圖。
具體實施例方式
圖4概括了根據(jù)本發(fā)明優(yōu)選實施例的方法的步驟?,F(xiàn)在參考圖4,在步 驟410,所述方法提供軟件程序,例如軟件程序140,其中該軟件程序包括源 代碼。步驟410還包括提供該源代碼的清單和計算裝置,例如計算裝置100 (圖1 )。在圖1所示的實施例中,計算裝置100還包括處理器110、 RAM存 儲器120和數(shù)據(jù)存儲介質(zhì)130。在特定的實施例步驟410中,還包括在諸如 數(shù)據(jù)存儲介質(zhì)130之類的數(shù)據(jù)存儲介質(zhì)上存儲諸如軟件程序140的軟件程序。
在某些實施例中,數(shù)據(jù)存儲介質(zhì)130包括非易失性存儲器,例如, 一個 或多個EEPROM(電可擦除可編程只讀存儲器)、 一個或多個快閃PROM(可 編程只讀存儲器)、電池備份RAM、硬盤驅(qū)動器、一個或多個光存儲媒體(CD、 DVD等)、它們的組合等等。
通常,計算裝置100包括計算機(jī)系統(tǒng),例如主機(jī)(mainframe )、個人計 算機(jī)、工作站及其組合,該計算機(jī)系統(tǒng)包括諸如Windows、 AIX、 Unix、 MVS、 LINUX等的操作系統(tǒng)(Windows是微軟公司的注冊商標(biāo);AIX是IBM公司 的注冊商標(biāo)以及MVS是IBM公司的商標(biāo);UNIX是在美國以及在通過The Open Group排他許可的其他國家中的注冊商標(biāo);以及LINUX是Linus Torvald 的注冊商標(biāo))。
在步驟415中,所述方法運(yùn)行該軟件程序。在某些實施例中并且現(xiàn)在參 考圖2,步驟415還包括將軟件程序140加載到RAM存儲器120。當(dāng)處理器 110運(yùn)行軟件程序140時,處理器110生成多個寄存器值并且將該多個寄存器 值保存到RAM 120。在圖2所示的實施例中,RAM保存區(qū)域210包括多個 寄存器值220, RAM保存區(qū)域230包括多個寄存器值240,以及RAM保存 區(qū)域250包括多個寄存器值260。 RAM 120還包括機(jī)器語言270、 280和290 的塊。
在步驟420中,所述方法確定在運(yùn)行軟件程序140的同時是否檢測到出
錯情況。在某些實施例中,所述方法包括引起(cause)步驟420的出錯情況。 如果在運(yùn)行軟件程序的同'時所述方法沒有檢測到出錯情況,則所述方法 從步驟420轉(zhuǎn)換到步驟415,并且軟件執(zhí)行繼續(xù)?;蛘?,如果所述方法沒有 檢測到出錯情況,則所述方法從步驟420轉(zhuǎn)換到步驟425,在步驟425,所述 方法生成包括(N個)保存區(qū)域的轉(zhuǎn)儲文件,并且存儲該轉(zhuǎn)儲文件。例如并 且現(xiàn)在參考圖3,在步驟425中,所述方法生成轉(zhuǎn)儲文件310,并且將該轉(zhuǎn)儲 文件310保存到數(shù)據(jù)存儲介質(zhì)130。在圖3所示的實施例中,轉(zhuǎn)儲文件310 包括具有多個寄存器值220的保存區(qū)域210 (圖2)、具有多個寄存器值240 的保存區(qū)域230 (圖2 )、以及具有多個寄存器值260的保存區(qū)域250 (圖2 )。 為了清楚,圖2和3示出了三個保存區(qū)域。通常,所述方法生成并保存包括 (N個)保存區(qū)域的轉(zhuǎn)儲文件,其中(N)大于或等于1并且小于或等于大約 100。
步驟430到480中的方法利用步驟410的可執(zhí)行源代碼的清單以及在步 驟425中生成并保存的轉(zhuǎn)儲文件,以便在檢測到出錯情況時再現(xiàn)源代碼執(zhí)行。 在某些實施例中,所述方法從步驟425立即轉(zhuǎn)換到步驟430。在其他實施例 中,步驟430到480的分析被異步地執(zhí)行,意思是指步驟425在第一時間被 執(zhí)行以及步驟430在第二時間被執(zhí)行,其中第二時間比第一時間晚一個或多 個小時。
在某些實施例中,使用與步驟410的計算裝置不同的計算裝置來執(zhí)行步 驟430到480的分析。在這些實施例中,步驟425還包括提供包括第二數(shù)據(jù) 存儲介質(zhì)的第二計算裝置,其中步驟425的轉(zhuǎn)儲文件、諸如轉(zhuǎn)儲文件310被 存儲在第二計算裝置中布置的第二數(shù)據(jù)存儲介質(zhì)上,其中步驟430到480與 步驟425異步地執(zhí)行。
在步驟430中,所述方法選擇(N個)保存區(qū)域之一、即第(i)保存區(qū) 域,其中(i)大于或等于1并且小于或等于(N)。例如,在步驟430中,所 述方法可以選擇包括多個寄存器值240 (圖2)的保存區(qū)域230 (圖2、 3)。
在步驟435中,所述方法將一個或多個源代碼步驟與第(i)寄存器值進(jìn) 行匹配。通常,第(i)寄存器值中的至少一個包括指向一個或多個源代碼步 驟的指針。在步驟440中,所述方法逐步執(zhí)行所匹配的源代碼,以便形成修 改的第(i)寄存器值。在步驟445中,所述方法用修改的第(i)寄存器值生 成與每個匹配的源代碼步驟相關(guān)的日志。步驟445的日志允許逐步測試、調(diào)
試、和/或^r證源代碼中向前或向后進(jìn)行的軟件程序。
在步驟450中,所述方法確定是否檢查在步驟440的匹配的源代碼之后 執(zhí)行的源代碼步驟。如果所述方法決定檢查在步驟440的匹配的源代碼之后 執(zhí)行的源代碼,則所述方法從步驟450轉(zhuǎn)換到步驟460,其中所述方法增加 (i)。在某些實施例中,步驟460包括使(i)遞增1。在其他實施例中,步 驟460包括使(i)增加大于1。所述方法從步驟460轉(zhuǎn)換到步驟430并且如 此處所描述地繼續(xù)。
如果所述方法在步驟450決定不檢查在步驟440的匹配的源代碼之后執(zhí) 行的源代碼步驟,則所述方法從步驟450轉(zhuǎn)換到步驟470,其中所述方法確 定是否檢查在步驟440的匹配的源代碼之前執(zhí)行的源代碼步驟。如果所述方 法決定檢查在步驟440的匹配的源代碼之前執(zhí)行的源代碼,則所述方法從步 驟470轉(zhuǎn)換到步驟480,其中所述方法減小(i)。在某些實施例中,步驟480 包括使(i)遞減1。在其他實施例中,步驟480包括使(i)減小大于1。所 述方法從步驟480轉(zhuǎn)換到步驟430并且如此處所描述地繼續(xù)。如果所述方法 在步驟470決定不檢查在步驟440的匹配的源代碼之前執(zhí)行的源代碼步驟, 則所述方法從步驟470轉(zhuǎn)換到步驟490并且結(jié)束。
在某些實施例中,可以包括指令,例如指令150(圖1),其中這些指令 由處理器110 (圖1 )執(zhí)行來進(jìn)行圖4所列舉的步驟410、 415、 420、 425、 430、 435、 440、 445、 450、 460、 470、 480和/或4卯中的一個或多個。
在其他實施例中,指令可以駐留于任何其他計算機(jī)程序產(chǎn)品中,其中那 些指令被計算裝置100 (圖1 )外部或內(nèi)部的計算機(jī)執(zhí)行來進(jìn)行圖4所列舉的 步驟410、 415、 420、 425、 430、 435、 440、 445、 450、 460、 470、 480和/ 或490中的一個或多個。在任意情況下,指令可被編碼在信息存儲介質(zhì)中, 所述信息存儲介質(zhì)包括例如,,茲信息存儲介質(zhì)、光信息存儲介質(zhì)、電信息存 儲介質(zhì)等。例如,"電存儲媒體"是指諸如PROM、 EPROM、 EEPROM、快 閃PROM、致密快閃(compactflash )、智能媒體(smartmedia)等的裝置。
盡管已經(jīng)詳細(xì)圖解了本發(fā)明的優(yōu)選實施例,但是對本領(lǐng)域的普通技術(shù)人 員來說,4艮明顯可以進(jìn)行對這些實施例的修改和適應(yīng)。
權(quán)利要求
1.一種調(diào)試計算機(jī)程序的方法,包括步驟提供包括源代碼的計算機(jī)程序;提供所述源代碼的清單;提供包括第一數(shù)據(jù)存儲介質(zhì)的第一計算裝置;將所述計算機(jī)程序存儲在所述第一數(shù)據(jù)存儲介質(zhì)中;執(zhí)行所述計算機(jī)程序;檢測出錯情況;生成包括(N個)保存區(qū)域的轉(zhuǎn)儲文件并且將該轉(zhuǎn)儲文件保存到所述第一數(shù)據(jù)存儲介質(zhì),在遇到所述出錯情況時再現(xiàn)源代碼執(zhí)行。
2. 如權(quán)利要求l所述的方法,其中所述再現(xiàn)步驟還包括步驟 選擇第(i)保存區(qū)域,其中所述第(i)保存區(qū)域包括第(i)寄存器值,并且其中(i)大于或等于1并且小于或等于(N);將所述源代碼清單的一個或多個步驟與所述第(i)寄存器值進(jìn)行匹配; 逐步執(zhí)行所述匹配的源代碼步驟,以便對每個匹配的步驟形成第(i)修改的寄存器值;利用所述修改的第(i)寄存器值生成與每個匹配的源代碼步驟相關(guān)的日志0
3. 如權(quán)利要求2所述的方法,還包括步驟 選擇是否將一個或多個先前的源代碼步驟添加到所述曰志;如果決定將一個或多個先前的源代碼步驟添加到所述日志,則操作地選 擇第(j)保存區(qū)域,其中所述第(j)保存區(qū)域包括第(j)寄存器值,并且 其中(j)大于或等于1并且小于或等于(N),并且其中(j)小于(i);將所述源代碼清單的一個或多個步驟與所述第(j)寄存器值進(jìn)行匹配; 逐步執(zhí)行所述匹配的源代碼步驟,以便對每個匹配的步驟形成第(j)修 改的寄存器值;向所述日志添加每個匹配的源代碼步驟和相關(guān)的修改的第(j )寄存器值。
4. 如權(quán)利要求2所述的方法,還包括步驟 決定是否將一個或多個隨后的源代碼步驟添加到所述日志; 如果決定將一個或多個隨后的源代碼步驟添加到所述日志,則操作地選 擇第(k)保存區(qū)域,其中所述第(k)保存區(qū)域包括第(k)寄存器值,并且其中(k)大于或等于1并且小于或等于(N),并且其中(k)大于(i); 將所述源代碼清單的一個或多個步驟與所述第(k)寄存器值進(jìn)行匹配; 逐步執(zhí)行所述匹配的源代碼步驟,以便對每個匹配的步驟形成第(k)修改的寄存器值;向所述日志添加每個匹配的源代碼步驟和相關(guān)的修改的第(k )寄存器值。
5. 如權(quán)利要求2所述的方法,其中 所述保存步驟在第 一時間被執(zhí)行;所述定位步驟在第二時間被執(zhí)行,其中所述第二時間比所述第一時間晚 一個或多個小時。
6. 如權(quán)利要求5所述的方法,還包括步驟 提供包括第二數(shù)據(jù)存儲介質(zhì)的第二計算裝置; 將所述轉(zhuǎn)儲文件保存到所述第二數(shù)據(jù)存儲介質(zhì)。
7. 如權(quán)利要求l所述的方法,其中所述檢測出錯情況的步驟還包括引起 所述出錯情況。
8. —種包括數(shù)據(jù)存儲介質(zhì)和計算機(jī)可用介質(zhì)的制造品,該計算機(jī)可用介 質(zhì)具有置于其中的用于調(diào)試被寫入到所述數(shù)據(jù)存儲介質(zhì)的計算機(jī)程序的計算 機(jī)可讀程序代碼,所述計算機(jī)程序包括源代碼,所述計算機(jī)可讀程序代碼包 括一 系列計算機(jī)可讀程序步驟以實現(xiàn)執(zhí)行所述計算機(jī)程序; 檢測出錯情況;生成包括(N個)保存區(qū)域的轉(zhuǎn)儲文件并且將該轉(zhuǎn)儲文件保存到所述數(shù) 據(jù)存儲介質(zhì);在檢測到所述出錯情況時再現(xiàn)源代碼執(zhí)行。
9. 如權(quán)利要求8所述的制造品,所述計算機(jī)可讀程序代碼還包括一系列 計算機(jī)可讀程序步驟以實現(xiàn)選擇第(i)保存區(qū)域,其中所述第(i)保存區(qū)域包括第(i)寄存器值, 并且其中(i)大于或等于1并且小于或等于(N);將所述源代碼清單的一個或多個步驟與所述第(i)寄存器值進(jìn)行匹配; 逐步執(zhí)行所述匹配的源代碼步驟,以便對每個匹配的步驟形成第(i)修 改的寄存器值;利用所述修改的第(i)寄存器值生成與每個匹配的源代碼步驟相關(guān)的日志o
10. 如權(quán)利要求9所述的制造品,所述計算機(jī)可讀程序代碼還包括一系 列計算機(jī)可讀程序步驟以實現(xiàn)選擇第(j)保存區(qū)域,其中所述第(j)保存區(qū)域包括第(j)寄存器值, 并且其中(j)大于或等于1并且小于或等于(N),并且其中(j)小于(i); 將所述源代碼清單的一個或多個步驟與所述第(j)寄存器值進(jìn)行匹配; 逐步執(zhí)行所述匹配的源代碼步驟,以便形成第(j)修改的寄存器值; 向所述日志添加每個匹配的源代碼步驟和相關(guān)的修改的第(j)寄存器值。
11. 如權(quán)利要求9所述的制造品,所述計算機(jī)可讀程序代碼還包括一系 列計算機(jī)可讀程序步驟以實現(xiàn)選擇第(k)保存區(qū)域,其中所述第(k)保存區(qū)域包括第(k)寄存器值, 并且其中(k)大于或等于1并且小于或等于(N),并且其中(k)大于(i); 將所述源代碼清單的一個或多個步驟與所述第(k)寄存器值進(jìn)行匹配; 逐步執(zhí)行所述匹配的源代碼步驟,以便形成第(k)修改的寄存器值; 向所述日志添加每個匹配的源代碼步驟和相關(guān)的修改的第(k )寄存器值。
12. 如權(quán)利要求9所述的制造品,其中所述計算機(jī)可讀程序代碼包括一 系列計算機(jī)可讀程序步驟,以實現(xiàn)在第 一時間執(zhí)行所述保存所述轉(zhuǎn)儲文件;所述計算機(jī)可讀程序代碼包括一系列計算機(jī)可讀程序步驟,以實現(xiàn)在第 二時間執(zhí)行在第(i)保存區(qū)域中定位所述出錯情況,其中所述第二時間比所 述第一時間晚一個或多個小時。
13. 如權(quán)利要求8所述的制造品,其中包括實現(xiàn)遇到出錯情況步驟的一 系列計算機(jī)可讀程序步驟在內(nèi)的所述計算機(jī)可讀程序代碼還包括包括實現(xiàn)引起所述出錯情況的 一 系列計算機(jī)可讀程序步驟的計算機(jī)可讀程序代碼。
14. 一種可編程計算機(jī)處理器可使用的計算機(jī)程序產(chǎn)品,所述可編程計 算機(jī)處理器包含在其中實現(xiàn)的計算機(jī)可讀程序代碼,以調(diào)試包括源代碼的計 算機(jī),所述計算機(jī)可讀程序代碼包括促使所述可編程計算機(jī)處理器執(zhí)行所述計算機(jī)程序的計算機(jī)可讀程序代碼; 促使所述可編程計算機(jī)處理器檢測出錯情況的計算機(jī)可讀程序代碼; 促使所述可編程計算機(jī)處理器生成包括(N個)保存區(qū)域的轉(zhuǎn)儲文件并且將該轉(zhuǎn)儲文件保存到數(shù)據(jù)存儲介質(zhì)的計算機(jī)可讀程序代碼,促使所述可編程計算機(jī)處理器在檢測到所述出錯情況時再現(xiàn)源代碼執(zhí)行的計算機(jī)可讀程序代碼。
15. 如權(quán)利要求14所述的計算機(jī)程序產(chǎn)品,還包括 促使所述可編程計算機(jī)處理器逸擇第(i)保存區(qū)域的計算機(jī)可讀程序代碼,其中所述第(i)保存區(qū)域包括第(i)寄存器值,并且其中(i)大于或 等于1并且小于或等于(N);促使所述可編程計算機(jī)處理器將所述源代碼清單的一個或多個步驟與所 述第(i)寄存器值進(jìn)行匹配的計算機(jī)可讀程序代碼;促使所述可編程計算機(jī)處理器逐步執(zhí)行所述匹配的源代碼步驟以便對每 個匹配的步驟形成第(i)修改的寄存器值的計算機(jī)可讀程序代碼;促使所述可編程計算機(jī)處理器利用所述修改的第(i)寄存器值生成與每 個匹配的源代碼步驟相關(guān)的日志的計算機(jī)可讀程序代碼。
16. 如權(quán)利要求15所述的計算機(jī)程序產(chǎn)品,還包括 促使所述可編程計算機(jī)處理器選擇第(j)保存區(qū)域的計算機(jī)可讀程序代碼,其中所述第(j)保存區(qū)域包括第(j)寄存器值,并且其中(j)大于或 等于1并且小于或等于(N),并且其中(j)小于(i);促使所述可編程計算機(jī)處理器將所述源代碼清單的一個或多個步驟與所 述第(j)寄存器值進(jìn)行匹配的計算機(jī)可讀程序代碼;促^(吏所述可編程計算機(jī)處理器逐步執(zhí)行所述匹配的源代碼步驟以便形成 第(j) ^"改的寄存器值的計算機(jī)可讀程序代碼;促使所述可編程計算機(jī)處理器向所述日志添加每個匹配的源代碼步驟和 相關(guān)的修改的第(j)寄存器值的計算機(jī)可讀程序代碼。
17. 如權(quán)利要求15所述的計算機(jī)程序產(chǎn)品,還包括 促使所述可編程計算機(jī)處理器選擇第(k)保存區(qū)域的計算機(jī)可讀程序代碼,其中所述第(k)保存區(qū)域包括第(k)寄存器值,并且其中(k)大于或 等于1并且小于或等于(N),并且其中(k)大于(i);促使所述可編程計算機(jī)處理器將所述源代碼清單的一個或多個步驟與所 述第(k)寄存器值進(jìn)行匹配的計算機(jī)可讀程序代碼; 促使所述可編程計算機(jī)處理器逐步執(zhí)行所述匹配的源代碼步驟以便形成第(k)修改的寄存器值的計算機(jī)可讀程序代碼;促4吏所述可編程計算機(jī)處理器向所述日志添加每個匹配的源代碼步驟和 相關(guān)的修改的第(k)寄存器值的計算機(jī)可讀程序代碼。
18. 如權(quán)利要求14所述的計算機(jī)程序產(chǎn)品,其中在第 一 時間執(zhí)行促使所述可編程計算機(jī)處理器保存所述轉(zhuǎn)儲文件的所述計算機(jī)可讀程序代碼;在第二時間執(zhí)行促使所述可編程計算機(jī)處理器在第(i)保存區(qū)域中定位所述出錯情況的所述計算機(jī)可讀程序代碼,其中所述第二時間比所述第一時 間晚一個或多個小時。
19. 如權(quán)利要求14所述的計算機(jī)程序產(chǎn)品,其中包括實現(xiàn)遇到出錯情況 步驟的一系列計算機(jī)可讀程序步驟的所述計算機(jī)可讀程序代碼還包括包括 實現(xiàn)引起所述出錯情況的 一 系列計算機(jī)可讀程序步驟的計算機(jī)可讀程序代 碼。
全文摘要
公開了一種調(diào)試計算機(jī)程序的方法。該方法提供包括源代碼的計算機(jī)程序以及該源代碼的清單。該方法還提供包括數(shù)據(jù)存儲介質(zhì)的計算裝置,并且將該計算機(jī)程序存儲在該數(shù)據(jù)存儲介質(zhì)中。然后該方法運(yùn)行該計算機(jī)程序,并且隨后檢測出錯情況。該方法生成包括(N個)保存區(qū)域的轉(zhuǎn)儲文件并且將該轉(zhuǎn)儲文件保存到該數(shù)據(jù)存儲介質(zhì)。使用從轉(zhuǎn)儲文件提取的信息和源代碼清單,該方法在檢測到該出錯情況時再現(xiàn)源代碼執(zhí)行。
文檔編號G06F11/36GK101356505SQ200680050488
公開日2009年1月28日 申請日期2006年12月18日 優(yōu)先權(quán)日2006年1月6日
發(fā)明者戴維·C·里德, 馬克斯·D·史密斯 申請人:國際商業(yè)機(jī)器公司