專利名稱:在分布式調(diào)試器中調(diào)試計算機程序的方法和裝置的制作方法
技術領域:
本發(fā)明的領域是數(shù)據(jù)處理,或尤其是用于在分布式調(diào)試器中調(diào)試計算機程序的方法、系統(tǒng)、和產(chǎn)品。
背景技術:
1948年的EDVAC計算機系統(tǒng)的開發(fā)經(jīng)常被稱作計算機時代的開端。從那以后,計算機系統(tǒng)已經(jīng)發(fā)展成非常復雜的設備?,F(xiàn)今的計算機比早先的諸如EDVAC的系統(tǒng)更加復雜得多。計算機系統(tǒng)典型地包括組合的硬件和軟件部件、應用程序、操作系統(tǒng)、處理器、總線、存儲器、輸入/輸出設備等。隨著半導體處理和計算機體系結(jié)構(gòu)上的發(fā)展推動計算機的性能越來越高,已經(jīng)發(fā)展了更復雜的計算機軟件以利用硬件的更高性能,從而導致現(xiàn)今的計算機系統(tǒng)比僅僅幾年前更強大得多。
隨著計算機軟件已變得更加復雜,用于分析軟件缺陷或優(yōu)化性能的稱為“調(diào)試器”的計算機程序也已經(jīng)發(fā)展。調(diào)試器允許用戶通過控制正被調(diào)試的程序的執(zhí)行跟隨程序執(zhí)行的流程并檢查程序在任何一點的狀態(tài)。調(diào)試器典型地允許用戶跟蹤程序變量,逐步地運行程序,在計算機程序代碼中的特定的行號處停止程序執(zhí)行,或當某些條件滿足時停止程序執(zhí)行。
一些調(diào)試器提供給用戶更加復雜的稱為分布式調(diào)試的功能。分布式調(diào)試器提供從另一個計算機系統(tǒng)調(diào)試運行在一個計算機系統(tǒng)上的計算機程序的能力。當使用分布式調(diào)試器時,正被調(diào)試的計算機程序代碼典型地可以運行在若干不同的計算機系統(tǒng)上,其中每個系統(tǒng)可有不同的計算機資源的配置??衫玫呐渲煤唾Y源的多樣性增加了調(diào)試計算機程序的難度。例如,計算機程序可在NetBSD操作系統(tǒng)上很好地運行,而在LinuxTM操作系統(tǒng)上運行時則一貫地產(chǎn)生錯誤。程序可在處理器的一個版本上很好地運行,而在同一處理器的稍后版本上運行時則產(chǎn)生錯誤。程序可在網(wǎng)格環(huán)境的一個節(jié)點上很好地運行,而在同一網(wǎng)格環(huán)境的另一個節(jié)點上運行時則產(chǎn)生錯誤。
在測試實驗室中再現(xiàn)在多個遠程執(zhí)行環(huán)境中產(chǎn)生的程序錯誤以試圖調(diào)試計算機程序一般不可行。為了再現(xiàn)用于調(diào)試計算機程序的執(zhí)行環(huán)境,用戶將需要重新創(chuàng)建計算機程序可能在其中運行的每種類型的執(zhí)行環(huán)境,且用戶經(jīng)常不能預期計算機程序?qū)⒃谄渲羞\行的執(zhí)行環(huán)境的類型。此外,即使測試實驗室能復制所有的平臺、操作系統(tǒng)、和正被調(diào)試的程序一般可能在任何時候在其中運行的執(zhí)行環(huán)境,在當前的技術水平上測試者仍沒有辦法基于各種執(zhí)行環(huán)境的屬性來檢測錯誤。
發(fā)明內(nèi)容
公開了用于在分布式調(diào)試器中調(diào)試計算機程序的方法、裝置、和計算機程序產(chǎn)品,其包括定義以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點,在該遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試該計算機程序,以及在以該遠程執(zhí)行環(huán)境的一個或多個屬性為條件的斷點處檢索調(diào)試信息。
通過以下對附圖所示的本發(fā)明的示例性實施例的更具體的描述,本發(fā)明的上述和其他目標、特征和優(yōu)點將顯而易見,附圖中相同的標號一般表示本發(fā)明的示例性實施例的相同部分。
圖1給出的網(wǎng)絡圖示出了根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的系統(tǒng)。
圖2給出了根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的示例性系統(tǒng)的框圖。
圖3給出了根據(jù)本發(fā)明的實施例的包括可用于在分布式調(diào)試器中調(diào)試計算機程序的示例性計算機的自動計算機器的框圖。
圖4給出了根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的分布式調(diào)試器的示例性調(diào)試器客戶GUI的線條圖。
圖5給出的流程圖示出了根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的示例性方法。
圖6給出了根據(jù)本發(fā)明的實施例的支持在分布式調(diào)試器中調(diào)試計算機程序的示例性數(shù)據(jù)結(jié)構(gòu)的線條圖。
具體實施例方式
參照從圖1開始的附圖,描述了根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的示例性方法、系統(tǒng)、和產(chǎn)品。圖1給出的網(wǎng)絡圖示出了根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的示例性系統(tǒng)。圖1的系統(tǒng)一般操作以根據(jù)本發(fā)明的實施例通過定義以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點、在遠程執(zhí)行環(huán)境中在一調(diào)試調(diào)試會話中調(diào)試程序、以及在以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點處檢索調(diào)試信息,來在分布式調(diào)試器中調(diào)試計算機程序。
分布式調(diào)試器是允許在從另一個計算機系統(tǒng)控制調(diào)試會話的同時分析運行在一個計算機系統(tǒng)上的計算機程序的軟件缺陷或優(yōu)化其性能的客戶/服務器應用。分布式調(diào)試器通過控制計算機程序由計算機處理器的執(zhí)行幫助分析軟件缺陷和優(yōu)化性能??杀桓倪M以根據(jù)本發(fā)明的實施例操作的分布式調(diào)試器的示例包括IBM分布式調(diào)試器、Allinea軟件的分布式調(diào)試工具、LynuxWorksTMTotalView、或本領域中那些技術人員可想到的任何其他的分布式調(diào)試器。
調(diào)試器服務器是根據(jù)來自調(diào)試器客戶的通信控制計算機處理器對計算機程序的執(zhí)行的計算機程序。調(diào)試器服務器與調(diào)試中的計算機程序運行在同一計算機系統(tǒng)上。在本說明書中,調(diào)試服務器有時被稱為“調(diào)試器引擎”。
調(diào)試器客戶是提供用于操作調(diào)試引擎的用戶界面的計算機程序。例如,調(diào)試器客戶可以提供用于操作調(diào)試引擎以設置斷點、單步調(diào)試計算機程序代碼、和檢查變量的內(nèi)容的用戶界面。調(diào)試器客戶可允許使用多個調(diào)試會話同時調(diào)試多個計算機程序。調(diào)試會話是通過調(diào)試器客戶和一個或多個調(diào)試器引擎之間的連接實現(xiàn)的,其涉及在用于計算機程序的分布式調(diào)試的該連接的建立、維護、和釋放期間的數(shù)據(jù)交換。
遠程執(zhí)行環(huán)境是一個或多個計算機系統(tǒng),每個計算機系統(tǒng)能夠運行分布式調(diào)試器的調(diào)試器引擎來控制計算機程序的執(zhí)行。遠程執(zhí)行環(huán)境的調(diào)試器引擎根據(jù)調(diào)試器客戶的請求操作。調(diào)試器客戶典型地通過網(wǎng)絡遠離遠程執(zhí)行環(huán)境,且正是在這種意義下遠程執(zhí)行環(huán)境是“遠程的”。遠程執(zhí)行環(huán)境可被實現(xiàn)為例如運行遠程連接到調(diào)試器客戶的調(diào)試器引擎的單個計算機服務器,被實現(xiàn)為作為一群集服務器被管理且每個服務器運行遠程連接到調(diào)試器客戶的調(diào)試器引擎的幾個服務器,被實現(xiàn)為其中網(wǎng)格的一個或多個節(jié)點運行遠程連接到調(diào)試器客戶的調(diào)試器引擎的網(wǎng)格計算環(huán)境,以及在對本領域中的那些技術人員可想到的其他體系結(jié)構(gòu)中實現(xiàn)。
圖1的系統(tǒng)包括通過有線連接(100、102、105、111)連接到網(wǎng)絡(101)的服務器(106、107、109和117)。服務器(106、107、109和117)實現(xiàn)具有通過網(wǎng)絡(101)提供的數(shù)據(jù)通信的網(wǎng)格計算環(huán)境(125)。網(wǎng)格計算環(huán)境是一組為特定的用戶目的提供多個系統(tǒng)的資源的能力給單個用戶點的計算機系統(tǒng)。全球網(wǎng)格論壇(“GGF”)是用于網(wǎng)格計算的主要的標準組織。GGF是工業(yè)和學術之間的并得到兩者的重要支持的協(xié)作。網(wǎng)格計算供應管理上遠程的計算機資源給計算任務。網(wǎng)格技術的焦點與超出本地(主)管理域之外即在遠程執(zhí)行環(huán)境中靈活的計算供應的問題和需求相關。網(wǎng)格計算環(huán)境對用戶來說看起來是單個虛擬計算系統(tǒng)。網(wǎng)格計算環(huán)境協(xié)調(diào)并提供給用戶計算、應用、數(shù)據(jù)、存儲、或網(wǎng)絡資源。這些資源是可升級的、動態(tài)的、并地理上分布在不同類的計算機系統(tǒng)中。
斷點是被插入到計算機程序的可執(zhí)行的計算機機器代碼中的特殊的指令,該指令停止處理器對計算機機器代碼的執(zhí)行并通過操作系統(tǒng)將處理器控制返回給調(diào)試器引擎。被用作斷點的特殊的指令由計算機處理器的體系結(jié)構(gòu)定義并可包括,例如,被插入到計算機程序的計算機機器代碼中的非法操作碼或?qū)S脭帱c指令。
調(diào)試器引擎可將斷點直接插入到計算機機器代碼中以執(zhí)行該調(diào)試器引擎自己的程序操作。被直接插入到計算機機器代碼中以執(zhí)行調(diào)試器引擎自己的程序操作的斷點在本說明書中被稱為“內(nèi)部斷點”。例如,調(diào)試器引擎可將內(nèi)部斷點直接插在一行計算機程序代碼后以執(zhí)行單行計算機程序代碼。被調(diào)試器引擎插入的執(zhí)行該調(diào)試器引擎自己的程序操作的內(nèi)部斷點一般對通過調(diào)試器客戶的分布式調(diào)試器的用戶不可見。
除被調(diào)試器引擎插入以執(zhí)行該調(diào)試器引擎自己的程序操作的內(nèi)部斷點之外,用戶可通過調(diào)試器客戶的用戶界面將斷點插入到計算機程序代碼中。被用戶通過調(diào)試器客戶的用戶界面插入的斷點在本說明書中被稱為“用戶斷點”。用戶斷點的目的是將調(diào)試器的用戶界面的控制返回給用戶以便該用戶能查看在正被調(diào)試的程序的執(zhí)行中的特定點處寄存器的內(nèi)容、存儲器變量等。因此用戶斷點的效果一般對用戶可見。
條件斷點是一種使得調(diào)試器引擎根據(jù)相關條件的求值通過調(diào)試器客戶通知用戶遇到用戶斷點的用戶斷點。條件是當條件斷點使得處理器控制返回給調(diào)試器引擎時由分布式調(diào)試器求值的表達式。例如,當發(fā)生例如以下情況時,條件斷點可使得調(diào)試器引擎暫停正被調(diào)試的程序的執(zhí)行并通知用戶遇到條件斷點·一寄存器包含某值且正被調(diào)試的程序的遠程執(zhí)行環(huán)境包括LinuxTM操作系統(tǒng);·一存儲器變量包含某值且正被調(diào)試的程序的遠程執(zhí)行環(huán)境包括PentiumMTM處理器;或·一寄存器包含某值,一存儲器變量包含某個值,且正被調(diào)試的程序的遠程執(zhí)行環(huán)境包括某個網(wǎng)格節(jié)點標識碼。
計算機機器代碼是可由計算機處理器直接執(zhí)行的數(shù)字代碼的系統(tǒng)。例如,一計算機機器代碼可命令計算機處理器存儲第一寄存器和第二寄存器的和到該第一寄存器。計算機機器代碼依賴計算機處理器,因此計算機機器代碼從一個計算機處理器到另一個計算機處理器變化。
計算機機器代碼典型地是從計算機程序代碼中產(chǎn)生的。計算機程序代碼是一系列以某種人類可讀的諸如Java、C++、Visual Basic、SQL、Fortran、或匯編語言的計算機編程語言中編寫的語句。計算機程序代碼典型地被組織成行,每行包含一條或多條語句。計算機程序代碼被編譯器為特定的計算機處理器、或被匯編語言的匯編程序為特定的計算機處理器、或動態(tài)地(on the fly)在解釋器的幫助下從人類可讀形式轉(zhuǎn)換成計算機機器代碼。在本說明書中,計算機機器代碼和計算機程序代碼,無論它們是單獨的或組合中的,都被稱為“計算機程序指令”。
圖1的系統(tǒng)也包括下面的設備·通過有線連接(113)被連接到網(wǎng)絡(103)的用于數(shù)據(jù)通信的服務器(115);·通過有線連接(120)被連接到網(wǎng)絡(103)的用于數(shù)據(jù)通信的個人計算機(108);·通過無線連接(114)被連接到網(wǎng)絡(103)的用于數(shù)據(jù)通信的個人數(shù)字助理(PDA)(112);·通過無線連接(118)被連接到網(wǎng)絡(103)的用于數(shù)據(jù)通信的膝上型計算機(126);·通過無線連接(123)被連接到網(wǎng)絡(103)的用于數(shù)據(jù)通信的汽車(124);·通過無線連接(116)被連接到網(wǎng)絡(103)的用于數(shù)據(jù)通信的網(wǎng)絡使能的移動電話(110);和·通過有線連接(122)被連接到網(wǎng)絡(103)的用于數(shù)據(jù)通信的計算機工作站(104)。
圖1系統(tǒng)中的每個設備可支持分布式調(diào)試器,其具有相對于調(diào)試器客戶在遠程執(zhí)行環(huán)境中操作的調(diào)試器引擎。此外,圖1系統(tǒng)中的每個設備可支持分布式調(diào)試器的調(diào)試器客戶,盡管其中某些設備不被優(yōu)選作為客戶。例如,汽車(124)或許不包含可一般性編程的客戶計算機,以致汽車(124)實際上可能不方便支持調(diào)試器客戶,盡管汽車(124)中的諸如燃料注射控制器或定時序列控制器的嵌入系統(tǒng)可有用地支持分布式調(diào)試器的調(diào)試器引擎。PDA(112)和移動電話(110)可具有或許太小而不支持某些調(diào)試器客戶的GUI命令的顯示屏,盡管PDA(112)和移動電話(110)可有用地支持分布式調(diào)試器的調(diào)試器引擎。
但是,圖1的系統(tǒng)確實以許多方式支持分布式調(diào)試,其中調(diào)試器客戶通過遠程執(zhí)行環(huán)境中的調(diào)試器引擎調(diào)試程序。分布式調(diào)試器可被這樣實現(xiàn),其中例如個人計算機(108)中的調(diào)試器客戶通過工作站(104)上的遠程執(zhí)行環(huán)境中的調(diào)試器引擎調(diào)試程序。分布式調(diào)試器可被這樣實現(xiàn),其中膝上型計算機(126)中的調(diào)試器客戶通過服務器(115)上的遠程執(zhí)行環(huán)境中的調(diào)試器引擎調(diào)試程序。分布式調(diào)試器可被這樣實現(xiàn),其中工作站(104)中的調(diào)試器客戶通過網(wǎng)格(125)中的遠程執(zhí)行環(huán)境中的一些調(diào)試器引擎調(diào)試程序。且在像圖1中所示的示例性系統(tǒng)中,分布式調(diào)試器可被這樣實現(xiàn),其中調(diào)試器客戶以對本領域中那些技術人員來說可想到的其他方式通過遠程執(zhí)行環(huán)境中的調(diào)試器引擎調(diào)試程序。
在圖1的系統(tǒng)中,網(wǎng)絡(101)和網(wǎng)絡(103)通過網(wǎng)絡連接(119)互連,形成較大的廣域網(wǎng)或‘WAN’。網(wǎng)絡(101)可以是局域網(wǎng)(‘LAN’),比如,作為例子,支持企業(yè)網(wǎng)格計算環(huán)境的企業(yè)LAN?;蚓W(wǎng)絡(101)可以是WAN,比如,作為例子,通過諸如IBM UDDI商業(yè)注冊庫的UDDI(通用描述發(fā)現(xiàn)和集成)注冊庫提供作為公共可用的暴露給萬維網(wǎng)的Web服務的網(wǎng)格計算資源的因特網(wǎng)。網(wǎng)絡(103)可以是通過路由器、網(wǎng)關、或防火墻被連接到網(wǎng)絡(101)的企業(yè)LAN?;蚓W(wǎng)絡(101、103)可以都是通過路由器相連的互聯(lián)網(wǎng)的子網(wǎng)。這些網(wǎng)絡是用于提供在整個數(shù)據(jù)處理系統(tǒng)內(nèi)連接在一起的各種設備和計算機之間的數(shù)據(jù)通信連接的媒介。圖1的體系結(jié)構(gòu)的網(wǎng)絡連接方面僅是用作說明,而不是對本發(fā)明的限制。實際上,用于在分布式調(diào)試器中調(diào)試計算機程序的系統(tǒng)可被連接為局域網(wǎng)、廣域網(wǎng)、內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)、因特網(wǎng)、web、萬維網(wǎng)本身、或本領域的技術人員可想到的其他連接。
組成圖1中所示的示例性系統(tǒng)的服務器和其他設備的安排用于說明,而不是用于限制。根據(jù)本發(fā)明的各種實施例的有用的數(shù)據(jù)處理系統(tǒng)可包括圖1中未示出的、本領域中的技術人員可想到的額外的服務器、路由器、其他設備、和對等的體系結(jié)構(gòu)。在這樣的數(shù)據(jù)處理系統(tǒng)中的網(wǎng)絡可支持許多數(shù)據(jù)通信協(xié)議,包括例如TCP(傳輸控制協(xié)議)、IP(因特網(wǎng)協(xié)議)、HTTP(超文本傳輸協(xié)議)、WAP(無線訪問協(xié)議)、HDTP(手持設備傳輸協(xié)議)、和本領域中的技術人員可想到的其他協(xié)議。本發(fā)明的各種實施例可在除了圖1中所示的那些之外的各種硬件平臺上被實現(xiàn)。
為進一步說明,圖2給出根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的示例性系統(tǒng)的框圖。圖2的框圖包括調(diào)試器客戶安裝(240)。調(diào)試器客戶安裝(240)是包含調(diào)試器客戶(202)和數(shù)據(jù)通信模塊(222)的計算機系統(tǒng)。在圖2的示例中,調(diào)試器客戶安裝(240)可被實現(xiàn)為連接到因特網(wǎng)的具有顯示屏、鍵盤、和鼠標的計算機工作站。
在圖2的框圖中,調(diào)試器客戶(202)是一組為用戶(204)提供用戶界面以便操作調(diào)試器引擎(216和236)的計算機程序指令。用戶(204)可通過例如操作鍵盤或操作圖形用戶界面的按鈕來操作調(diào)試器客戶(202)。調(diào)試器客戶(202)通過數(shù)據(jù)通信模塊(222)與調(diào)試器引擎(216和236)通信,且調(diào)試器客戶(202)通過由數(shù)據(jù)通信模塊(222)提供的數(shù)據(jù)通信API的函數(shù)調(diào)用與數(shù)據(jù)通信模塊(222)通信。
在圖2的框圖中,數(shù)據(jù)通信模塊(222)是一組通過數(shù)據(jù)通信API提供給調(diào)試器客戶(202)數(shù)據(jù)通信連接的一個末端的計算機程序指令。在TCP用語中,數(shù)據(jù)通信連接的末端是稱為“套接字”的數(shù)據(jù)結(jié)構(gòu)。兩個套接字形成一數(shù)據(jù)通信連接,且每個套接字包括用于各自的數(shù)據(jù)連接末端的端口號和網(wǎng)絡地址。通過與數(shù)據(jù)通信模塊(212和232)的數(shù)據(jù)通信連接(201),數(shù)據(jù)通信模塊(222)提供給調(diào)試器客戶(202)與調(diào)試器引擎(216和236)通信的能力而不考慮數(shù)據(jù)如何通過網(wǎng)絡連接(201)傳輸。數(shù)據(jù)通信連接(201)可使用比如舉例來說TCP和IP的數(shù)據(jù)通信協(xié)議實現(xiàn)。
圖2的框圖包括遠程執(zhí)行環(huán)境。遠程執(zhí)行環(huán)境(200)是這樣的計算機環(huán)境,在其中分布式調(diào)試器的調(diào)試器引擎(216)控制應用(218)的執(zhí)行。在圖2的示例中,遠程執(zhí)行環(huán)境(200)被實現(xiàn)為沒有圖形用戶界面的遠程執(zhí)行環(huán)境,比如,舉例來說,IBM eServeriSeriesTM或IBMeServerzSeriesTM。
在圖2的框圖中,遠程執(zhí)行環(huán)境(200)包括遠程執(zhí)行安裝(210)。遠程執(zhí)行安裝(210)是包含數(shù)據(jù)通信模塊(212)、調(diào)試器引擎(216)、和應用(218)的計算機系統(tǒng)。在圖2的示例中,遠程執(zhí)行安裝(210)可被實現(xiàn)為例如連接到因特網(wǎng)的單個計算機服務器。
圖2的框圖包括遠程執(zhí)行環(huán)境(205)。在圖2的示例中,遠程執(zhí)行環(huán)境(205)被實現(xiàn)為網(wǎng)格計算環(huán)境。圖2的網(wǎng)格計算環(huán)境用網(wǎng)絡連接的節(jié)點(230)表示。每個節(jié)點已在其上安裝有數(shù)據(jù)通信模塊(232)、調(diào)試器引擎(236)、和用于在網(wǎng)格計算環(huán)境中執(zhí)行和調(diào)試的應用(238)。
在圖2的框圖中,數(shù)據(jù)通信模塊(232)是一組通過數(shù)據(jù)通信API提供給調(diào)試器引擎(236)數(shù)據(jù)通信連接的一個末端的計算機程序指令。數(shù)據(jù)通信連接末端可被實現(xiàn)為諸如TCP套接字。通過與數(shù)據(jù)通信模塊(222)的數(shù)據(jù)通信連接(201),數(shù)據(jù)通信模塊(232)提供給調(diào)試器引擎(236)與調(diào)試器客戶(202)通信的能力。
在圖2的框圖中,調(diào)試器引擎(236)根據(jù)與調(diào)試器客戶(202)的通信通過操作系統(tǒng)的調(diào)試API控制應用(238)的執(zhí)行。調(diào)試器引擎(236)通過數(shù)據(jù)通信模塊(232)與調(diào)試器客戶(202)通信。調(diào)試器引擎(236)通過調(diào)用由數(shù)據(jù)通信模塊(232)提供的數(shù)據(jù)通信API的函數(shù)調(diào)用與數(shù)據(jù)通信模塊(232)通信。
根據(jù)本發(fā)明在分布式調(diào)試器中調(diào)試計算機程序一般用計算機,即,用自動計算機器實現(xiàn)。例如,在圖1的系統(tǒng)中,所有的節(jié)點、服務器和通信設備至少在某種程度上被實現(xiàn)為計算機。因此,為進一步說明,圖3給出根據(jù)本發(fā)明的實施例的包括可用于在分布式調(diào)試器中調(diào)試計算機程序的示例性計算機(152)的自動計算機器的框圖。計算機(152)包括至少一個計算機處理器(156)或‘CPU’、以及通過系統(tǒng)總線(160)被連接到處理器(156)和計算機的其他部件的隨機存取存儲器(168)(‘RAM’)。
處理器(156)提供用于在分布式調(diào)試器中調(diào)試計算機程序的功能。處理器(156)的可用于調(diào)試的功能可包括通過提供處理器的特別用于斷點目的一調(diào)試操作碼指定斷點的能力。處理器(156)可提供“中斷”或“陷阱”功能,該功能當處理器遇到調(diào)試操作碼時將控制流引向調(diào)試器。調(diào)試操作碼和調(diào)試中斷提供給處理器通知操作系統(tǒng)關于運行在處理器上的過程或線程的調(diào)試事件已發(fā)生的能力;操作系統(tǒng)然后可通過諸如引導中斷到計算機存儲器中的調(diào)試模塊來通知該調(diào)試事件的調(diào)試器。此外,當調(diào)試中斷發(fā)生時計算機處理器提供直接從計算機處理器寄存器中讀出或向其寫入的能力。
RAM(168)中所存儲的是操作系統(tǒng)(154)。操作系統(tǒng)是負責計算機硬件和基本計算機系統(tǒng)操作的直接控制和管理的計算機程序。操作系統(tǒng)(154)通過調(diào)試應用編程接口(‘API’)(299)向調(diào)試器提供硬件和系統(tǒng)控制與管理。調(diào)試API(299)是一組由操作系統(tǒng)(154)提供的被調(diào)試器引擎使用的函數(shù)或軟件例程??砂ㄔ谡{(diào)試API(299)中的函數(shù)的示例包括使得調(diào)試器能在存儲器中讀取和設置值、在處理器寄存器中讀取和設置值、中止和恢復線程處理等的函數(shù)。根據(jù)本發(fā)明的實施例的可在計算機中使用的操作系統(tǒng)包括UNIXTM、LinuxTM、Microsoft NTTM、AIXTM、IBM的i5/OSTM、和本領域中的技術人員可想到的其他系統(tǒng)。
存儲在RAM(168)中的還有調(diào)試器客戶(202)和調(diào)試器引擎(216)。調(diào)試器客戶(202)是一組用于提供用戶界面并發(fā)送請求給用于控制計算機程序的執(zhí)行的調(diào)試器引擎的計算機程序指令。調(diào)試器引擎(216)是根據(jù)本發(fā)明的實施例的一組改進的用于在分布式調(diào)試器中調(diào)試計算機程序的計算機程序指令。調(diào)試器引擎(216)根據(jù)本發(fā)明的實施例被改進以用于定義以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點,在遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試程序,和在以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點處檢索調(diào)試信息。
存儲在RAM(168)中的還有應用(218),即用于執(zhí)行用戶級數(shù)據(jù)處理的計算機軟件程序。在圖3的示例中,調(diào)試器引擎(216)和調(diào)試器客戶(202)提供應用(218)的分布式調(diào)試。盡管為易于說明調(diào)試器引擎(216)和調(diào)試器客戶(202)在圖3的示例中被示為在同一計算機(152)中,但讀者將會認識到調(diào)試器引擎(216)和調(diào)試器客戶(202)典型地被安裝在不同的計算機系統(tǒng)中。圖3的示例中的應用(218)、調(diào)試器客戶(202)、調(diào)試器引擎(216)、和操作系統(tǒng)(154)被示為在RAM(168)中,但這樣的軟件的許多部件典型地也被存儲在非易失性存儲器(166)中。
圖3的計算機(152)包括通過系統(tǒng)總線(160)被連接到處理器(156)和計算機(152)的其他部件的非易失性計算機存儲器(166)。非易失性計算機存儲器(166)可被實現(xiàn)為硬盤驅(qū)動器(170)、光盤驅(qū)動器(172)、電可擦可編程只讀存儲器(所謂‘EEPROM’或‘閃速’存儲器)(174)、RAM驅(qū)動器(未示出)、或本領域中的技術人員可想到的任何其他種類的計算機存儲器。
圖3的示例計算機包括一個或多個輸入/輸出接口適配器(178)。計算機中的輸入/輸出接口適配器通過例如用于控制到諸如計算機顯示屏的顯示設備(180)的輸出以及來自諸如鍵盤和鼠標的用戶輸入設備(181)的用戶輸入的軟件驅(qū)動程序和計算機硬件來實現(xiàn)面向用戶的輸入/輸出。
圖3的示例性計算機(152)包括用于實現(xiàn)與其他計算機(182)的數(shù)據(jù)通信(184)的通信適配器(167)。這樣的數(shù)據(jù)通信可通過RS-232連接、通過諸如USB的外部總線、通過諸如IP網(wǎng)絡的數(shù)據(jù)通信網(wǎng)絡、和本領域中的技術人員可想到的其他方式串行地執(zhí)行。通信適配器實現(xiàn)硬件級的數(shù)據(jù)通信,通過該硬件級別的數(shù)據(jù)通信一臺計算機直接地或通過網(wǎng)絡將數(shù)據(jù)通信發(fā)送給另一個臺計算機。根據(jù)本發(fā)明的實施例的可用于確定目地的的可用性的通信適配器的示例包括用于有線撥號通信的調(diào)制解調(diào)器、用于有線網(wǎng)絡通信的以太網(wǎng)(IEEE 802.3)適配器、和用于無線網(wǎng)絡通信的802.11b適配器。
為進一步說明,圖4給出根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的分布式調(diào)試器的示例性調(diào)試器客戶GUI的線條圖。在圖4的示例中,調(diào)試器客戶GUI(300)顯示用于操作調(diào)試器步進功能的GUI步進按鈕(303)。除了提供操作調(diào)試器步進功能的GUI步進按鈕之外,圖4的用戶界面也提供用于操作調(diào)試器步進功能的鍵盤快捷鍵(308)。調(diào)試器客戶GUI(300)提供文本塊(332),在該塊中調(diào)試器顯示一段目前正在遠程執(zhí)行環(huán)境中執(zhí)行的受分布式調(diào)試操作影響的計算機程序指令。對調(diào)試器步進功能的每個調(diào)用都將步進光標(321)移動到包含由計算機處理器在遠程執(zhí)行環(huán)境中執(zhí)行的計算機程序代碼的下一條語句的計算機程序代碼行。
在圖4的示例中,調(diào)試器客戶GUI(300)顯示用于操作調(diào)試器的步入(step in)功能的GUI步入按鈕(304)。步入功能使得控制流進入到程序控制流結(jié)構(gòu)。當步進光標(321)位于控制流入口點例如計算機程序代碼(320)的行51上時操作步入功能,會將步進光標(321)移到包含進入的控制流結(jié)構(gòu)內(nèi)的計算機程序代碼的第一條語句的行。
在圖4的示例中,調(diào)試器客戶GUI(300)顯示用于操作調(diào)試器的步過(step over)功能以使得控制流越過程序控制流結(jié)構(gòu)的GUI按鈕(305)。當步進光標(321)位于控制流入口點例如計算機程序代碼(320)的行51上時操作步過功能,會將步進光標(321)移到包含當前控制流結(jié)構(gòu)中的計算機程序代碼的下一條語句的行,例如,計算機程序代碼(320)的行52。
在圖4的示例中,調(diào)試器客戶GUI(300)顯示用于將用戶斷點插入到計算機程序代碼(320)中的GUI按鈕(301)。被插入到計算機程序代碼(300)中的用戶斷點用緊鄰計算機程序代碼(320)的行號的‘BP’(323)表示且顯示在調(diào)試器客戶GUI(300)的用戶斷點區(qū)(380)中。
在圖4的示例中的調(diào)試器客戶GUI(300)的用戶斷點區(qū)(380)顯示計算機程序代碼(320)中的所有的用戶斷點的列表。用戶斷點區(qū)(380)示出將計算機程序代碼中的用戶斷點位置(381)和程序計數(shù)器值(382)相關聯(lián)的數(shù)據(jù)。程序計數(shù)器值(382)是當計算機處理器遇到用戶斷點時計算機處理器的程序計數(shù)器的值。
在圖4的示例中,調(diào)試器客戶GUI(300)顯示用于將監(jiān)視點(watchpoint)插入到計算機程序代碼(320)中的監(jiān)視點圖標(302)。被插入到計算機程序代碼(300)中的監(jiān)視點用緊鄰計算機程序代碼(320)的行號的‘WP’表示并顯示在調(diào)試器客戶GUI(300)的監(jiān)視點區(qū)(370)。
圖4的示例中的調(diào)試器客戶GUI(300)的監(jiān)視點(370)區(qū)顯示計算機程序代碼(320)中的所有的監(jiān)視點的列表。監(jiān)視點區(qū)(370)示出將監(jiān)視其特定值(372)的監(jiān)視點變量(371)和包含監(jiān)視點變量(371)的值(372)的計算機存儲單元(373)相關聯(lián)的數(shù)據(jù)。
在圖4的示例中,調(diào)試器客戶GUI(300)顯示用于將條件斷點插入到計算機程序代碼(320)中的條件斷點圖標(307)。用戶操作GUI按鈕(307)以顯示條件斷點設置窗口(390)。被插入到計算機程序代碼(300)中的條件斷點用緊鄰計算機程序代碼(320)的行號的‘CB’(394)表示。
條件斷點設置窗口(390)是用于提示用戶輸入用于條件斷點(391)的條件的GUI。在圖4的示例中,條件斷點設置窗口(390)示出將斷點標識符(391)和遠程執(zhí)行環(huán)境的屬性(392)、值(395)、和屬性(392)與值(395)之間的關系(393)相關聯(lián)的數(shù)據(jù)。
在圖4的示例中,調(diào)試器客戶GUI(300)包括函數(shù)區(qū)(340)。函數(shù)區(qū)(340)示出對于計算機程序代碼(300)中的所有函數(shù)將函數(shù)(342)和計算機存儲單元(341)相關聯(lián)的數(shù)據(jù)。計算機存儲單元(341)包含用于執(zhí)行的函數(shù)(342)的第一條計算機程序指令的位置。
在圖4的示例中,調(diào)試器客戶GUI(300)包括CPU區(qū)(310),其示出關于在遠程執(zhí)行環(huán)境中執(zhí)行由計算機程序代碼(320)表示的計算機機器代碼的處理器的狀態(tài)的信息。調(diào)試器客戶GUI(300)的CPU區(qū)(310)顯示被包含在程序計數(shù)器(311)、幀計數(shù)器(312)、寄存器(313)和棧(330)中的值。程序計數(shù)器是CPU中指向要被處理器執(zhí)行的下一條指令的存儲單元的寄存器。程序計數(shù)器的值在每條指令被執(zhí)行完后變化,這或者是通過根據(jù)前一指令的長度遞增,或者是由于分支到包含新指令的新的存儲單元。棧是以后進先出方式存儲數(shù)據(jù)的運行時數(shù)據(jù)結(jié)構(gòu)。
圖4的示例中的調(diào)試器客戶GUI(300)包括反匯編區(qū)(350)。反匯編區(qū)(350)顯示在處理器上執(zhí)行的計算機機器代碼的匯編語言。圖4的示例中的反匯編區(qū)(350)示出將計算機機器代碼數(shù)據(jù)、包含該數(shù)據(jù)的存儲器地址、和該數(shù)據(jù)的匯編語言助記碼相關聯(lián)的數(shù)據(jù)。
在圖4的示例中,調(diào)試器客戶GUI(300)包括變量區(qū)(360)。變量區(qū)(360)包含計算機程序代碼(320)中的所有變量的列表。圖4的示例中的變量區(qū)(360)示出將變量名、當前值、和存儲該值的存儲器地址相關聯(lián)的數(shù)據(jù)。
為進一步說明,圖5給出的流程圖示出根據(jù)本發(fā)明的實施例的用于在分布式調(diào)試器中調(diào)試計算機程序的示例性方法,該方法包括定義(400)以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點,在遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試(420)的計算機程序,和在以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點處檢索(440)調(diào)試信息。
根據(jù)圖5的方法的、定義(400)以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點包括從調(diào)試器客戶(404)接收遠程執(zhí)行環(huán)境的屬性(401)值。遠程執(zhí)行環(huán)境的屬性(401)例如可包括在該遠程執(zhí)行環(huán)境中運行的操作系統(tǒng)的類型或該遠程執(zhí)行環(huán)境的物理位置。調(diào)試器引擎可通過諸如TCP套接字的數(shù)據(jù)通信連接的末端從調(diào)試器客戶(404)接收遠程執(zhí)行環(huán)境的屬性(401)值。該屬性值可由用戶通過調(diào)試器客戶的GUI輸入,例如作為定義條件斷點的過程的一部分。
在圖5的方法中,定義(400)以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點包括指派(406)條件(413)給條件斷點??赏ㄟ^使用諸如條件斷點表(410)的數(shù)據(jù)結(jié)構(gòu)將該條件與條件斷點相關聯(lián)。圖5的示例中的條件斷點表(410)將斷點標識符(411)與程序計算器值(412)和條件(413)相關聯(lián)。程序計數(shù)器值(412)是當計算機處理器遇到被斷點標識符(411)標識的條件斷點時的計算機處理器的程序計數(shù)器的值。條件(413)是遇到條件斷點時調(diào)試器引擎對其求值的布爾表達式。條件(413)指定滿足該條件的遠程執(zhí)行環(huán)境的屬性值和從調(diào)試器客戶接收的值之間的關系。例如,條件斷點的條件(413)可被實現(xiàn)為表達式“ProcessorType=‘Power5’”,這指定如果遠程執(zhí)行環(huán)境的‘ProcessorType’屬性的值是‘Power5’,則該條件滿足。
圖5的方法包括在遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試(420)計算機程序。根據(jù)圖5的方法的在遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試(420)計算機程序包括檢索(422)存儲的程序計數(shù)器值(430)。存儲的程序計數(shù)器值(430)是當計算機處理器遇到條件斷點時計算機處理器的程序計數(shù)器的值。在遇到條件斷點后,一中斷處理程序或操作系統(tǒng)函數(shù)將包括程序計數(shù)器的當前值的處理器的硬件寄存器的值存儲在計算機存儲器中,并轉(zhuǎn)移處理器控制給調(diào)試器。調(diào)試器然后可通過調(diào)用調(diào)試API的函數(shù)檢索存儲的程序計數(shù)器值(430),比如,舉例來說,通過‘ioctl()’函數(shù)調(diào)用UNIX的‘PIOCGREG’命令或調(diào)用Win32的‘GetThreadContext’函數(shù)。
當在遇到斷點時檢索程序計數(shù)器的值之后,調(diào)試器引擎然后可在例如象表(410)的條件斷點表中查找斷點以識別該條件斷點的條件。在該示例中,實際上,調(diào)試器引擎直到其在表(410)中找到由程序計數(shù)器值標識的斷點的記錄才知道該斷點是條件斷點。
在圖5的方法中,在遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試(420)計算機程序包括確定(423)條件斷點條件是否滿足。根據(jù)圖5的方法的確定(423)條件斷點條件是否滿足可通過對與條件斷點表(410)中的條件斷點相關聯(lián)的條件(413)求值來執(zhí)行。例如,考慮由“ProcessorType=‘Power5’”指定的條件。調(diào)試器引擎可通過對遠程執(zhí)行環(huán)境的‘ProcessorType’屬性的值是否等于‘Power5’求值來確定(423)“ProcessorType=‘Power5’”條件是否滿足。調(diào)試器引擎可通過調(diào)用諸如Java標準系統(tǒng)類的‘getProperties()’函數(shù)或Java標準的運行時類的‘a(chǎn)vailableProcessors()’函數(shù)的Java API函數(shù)獲得用于確定(423)斷點條件是否滿足的遠程執(zhí)行環(huán)境的屬性值。此外,操作系統(tǒng)典型地通過對調(diào)試器引擎可用的API調(diào)用提供關于執(zhí)行環(huán)境的配置信息。Unix的各種版本提供例如下列函數(shù)·char*getenv(const char*name)-搜索環(huán)境列表中的形式為name=value的字符串并返回指向當前環(huán)境中的值的指針;·long sysinfo(int command,char*buf,long count)-將與進程在其上執(zhí)行的操作系統(tǒng)相關的信息復制到由buf指向的緩沖區(qū)。count參數(shù)指示緩沖區(qū)的大小。POSIX P1003.1接口sysconf()提供類似的配置信息類,但返回一個整數(shù)而不是字符串。
·int uname(struct utsname*name)-將標識當前操作系統(tǒng)的信息存儲在name所指向的結(jié)構(gòu)中。uname()函數(shù)返回的信息包括當前操作系統(tǒng)的名稱,遠程系統(tǒng)在通信網(wǎng)絡上所知的名稱,操作系統(tǒng)的發(fā)布和版本號,和操作系統(tǒng)正在其上運行的硬件平臺和處理器的標識符。
·long sysconf(int name)-為調(diào)試器提供確定可配置的系統(tǒng)限制或選項(變量)的當前值的方法。name參數(shù)表示將被查詢的系統(tǒng)變量。下表列出可被sysconf()返回的來自<limits.h><unistd.h>的系統(tǒng)變量的最小集合和在<unistd.h>中定義的、作為用于name的相應的值的符號常量。
如果條件(413)不滿足,則調(diào)試器引擎不通過調(diào)試器客戶通知用戶條件斷點遇到。相反,調(diào)試器引擎命令操作系統(tǒng)繼續(xù)由計算機處理器執(zhí)行調(diào)試中的計算機程序,直到遇到下一個斷點。就是說,圖5的方法通過當處理器遇到條件斷點時再次檢索(422)存儲的程序計數(shù)器值(430)而繼續(xù)。
如果條件(413)滿足,圖5的方法包括在以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點處檢索(440)調(diào)試信息(450)。調(diào)試信息(450)是當計算機處理器遇到條件斷點時表示計算機程序或計算機處理器的狀態(tài)的值。調(diào)試信息(450)可包括諸如處理器寄存器的值、計算機程序變量的值、程序計數(shù)器的值等的值。調(diào)試器引擎可通過調(diào)用調(diào)試API的函數(shù)檢索(440)調(diào)試信息(450),例如,通過‘ioctl()’函數(shù)調(diào)用UNIX的‘PIOCGREG’命令或調(diào)用Win32的‘GetThreadContext’函數(shù)。在檢索(440)調(diào)試信息(450)之后,調(diào)試器引擎可通過諸如TCP套接字的數(shù)據(jù)通信連接的末端將調(diào)試信息(450)傳輸給調(diào)試器客戶,以便通過GUI顯示給用戶。
為進一步說明,圖6給出了根據(jù)本發(fā)明的實施例的支持在分布式調(diào)試器中調(diào)試計算機程序的示例性數(shù)據(jù)結(jié)構(gòu)的線條圖。圖6的示例數(shù)據(jù)結(jié)構(gòu)(500)表示遠程執(zhí)行環(huán)境的屬性。圖6的示例中的數(shù)據(jù)結(jié)構(gòu)(500)將遠程執(zhí)行環(huán)境標識符(501)與處理器類型(502)、處理器數(shù)量(503)、存儲器容量(504)、輸入/輸出設備類型(505)、遠程執(zhí)行環(huán)境是否包含邏輯分區(qū)的指示(506)、分區(qū)是否已經(jīng)為資源分配設定上限的指示(507)、處理器是否專用于邏輯分區(qū)的指示(508)、軟件類型(509)、軟件版本(510)、和網(wǎng)格位置(511)相關聯(lián)。
在圖6的示例中,表示遠程執(zhí)行環(huán)境的屬性的數(shù)據(jù)結(jié)構(gòu)(500)包括用于表示遠程執(zhí)行環(huán)境的被實現(xiàn)為處理器類型的屬性的數(shù)據(jù)元素(502)。數(shù)據(jù)元素(502)存儲表示在遠程執(zhí)行環(huán)境中執(zhí)行計算機程序指令的計算機處理的類型的值。數(shù)據(jù)元素(502)可存儲表示諸如IBM Power4處理器、IBMPower5處理器、IntelPentiumD處理器、AMD AthlonTM64處理器等的計算機處理器類型的值。本領域中的讀者將認識到如果遠程執(zhí)行環(huán)境包含一個以上的計算機處理器,則在數(shù)據(jù)結(jié)構(gòu)(500)中會需要一個以上用于表示處理器類型的數(shù)據(jù)元素。
在圖6的示例中,表示遠程執(zhí)行環(huán)境的屬性的數(shù)據(jù)結(jié)構(gòu)(500)包括用于表示遠程執(zhí)行環(huán)境的被實現(xiàn)為處理器的數(shù)量的屬性的數(shù)據(jù)元素(503)。數(shù)據(jù)元素(503)存儲表示在遠程執(zhí)行環(huán)境中執(zhí)行計算機程序指令的計算機處理器的數(shù)量的值。
在圖6的示例中,表示遠程執(zhí)行環(huán)境的屬性的數(shù)據(jù)結(jié)構(gòu)(500)包括用于表示遠程執(zhí)行環(huán)境的被實現(xiàn)為存儲器容量的屬性的數(shù)據(jù)元素(504)。數(shù)據(jù)元素(504)存儲表示遠程執(zhí)行環(huán)境中的物理計算機存儲器容量的值。數(shù)據(jù)元素(504)可存儲表示遠程執(zhí)行環(huán)境中的的物理計算機存儲器容量的諸如512兆字節(jié)或1吉字節(jié)的值。
在圖6的示例中,表示遠程執(zhí)行環(huán)境的屬性的數(shù)據(jù)結(jié)構(gòu)(500)包括用于表示遠程執(zhí)行環(huán)境的被實現(xiàn)為輸入/輸出設備類型的屬性的數(shù)據(jù)元素(505)。數(shù)據(jù)元素(505)存儲表示遠程執(zhí)行環(huán)境中的輸入/輸出設備的類型的值。數(shù)據(jù)元素(505)可存儲表示諸如盤驅(qū)動器、鍵盤驅(qū)動器、RAID存儲單元等的輸入/輸出設備的類型的值。本領域中的讀者將認識到如果遠程執(zhí)行環(huán)境包含一個以上的輸入/輸出設備,則在數(shù)據(jù)結(jié)構(gòu)(500)中會需要一個以上的用于表示輸入/輸出設備類型的數(shù)據(jù)元素。
在圖6的示例中,表示遠程執(zhí)行環(huán)境的屬性的數(shù)據(jù)結(jié)構(gòu)(500)包括用于表示遠程執(zhí)行環(huán)境的、被實現(xiàn)為遠程執(zhí)行環(huán)境是否包含邏輯分區(qū)的指示的屬性的數(shù)據(jù)元素(506)。數(shù)據(jù)元素(506)可被實現(xiàn)為布爾標志。TRUE值表明遠程執(zhí)行環(huán)境支持邏輯分區(qū),而FALSE值表明遠程執(zhí)行環(huán)境不支持邏輯分區(qū)。
示例性數(shù)據(jù)結(jié)構(gòu)(500)包括指定分區(qū)是否已經(jīng)為在支持邏輯分區(qū)的遠程執(zhí)行環(huán)境中使用的資源分配設定上限的數(shù)據(jù)元素(507)。資源分配的上限可包括例如可用于一分區(qū)的計算機存儲器的最大比例、關于可被指派給特定分區(qū)的處理器的限制、輸入/輸出容量的最大限制等。示例性數(shù)據(jù)結(jié)構(gòu)(500)也包括指定處理器是否專用于邏輯分區(qū)的數(shù)據(jù)元素(508)。示例性數(shù)據(jù)結(jié)構(gòu)(500)包括表示運行在遠程執(zhí)行環(huán)境中的計算機軟件的類型的數(shù)據(jù)元素(509)。就數(shù)據(jù)元素(509)存儲關于一項以上軟件的類型的信息來說,數(shù)據(jù)元素(509)可被實現(xiàn)為指向更大的數(shù)據(jù)結(jié)構(gòu)的指針,在該數(shù)據(jù)結(jié)構(gòu)中可存儲描述軟件類型的信息。數(shù)據(jù)元素(509)可存儲標識諸如LinuxTM操作系統(tǒng)、Java虛擬機、標準安全套接字層(‘SSL’)、專有SSL等的系統(tǒng)軟件類型的數(shù)據(jù)。數(shù)據(jù)元素(509)也可存儲標識諸如字處理器、電子表格程序、電子郵件客戶、瀏覽器、數(shù)據(jù)庫管理系統(tǒng)等的應用軟件類型的數(shù)據(jù)。
示例性數(shù)據(jù)結(jié)構(gòu)(500)也包括表示運行在遠程執(zhí)行環(huán)境中的計算機軟件的版本的數(shù)據(jù)元素(510)。數(shù)據(jù)元素(510)可存儲由數(shù)據(jù)元素(509)標識的運行在遠程執(zhí)行環(huán)境中的系統(tǒng)軟件和應用軟件的一個或多個特定的版本。就數(shù)據(jù)元素(510)存儲關于一項以上軟件的版本的信息來說,數(shù)據(jù)元素(510)可被實現(xiàn)為指向更大的數(shù)據(jù)結(jié)構(gòu)的指針,該數(shù)據(jù)結(jié)構(gòu)中可存儲描述軟件版本的信息。數(shù)據(jù)元素(510)可存儲表示諸如Java開發(fā)工具包(‘JDK’)版本1.3、JDK版本1.4、紅帽Linux的版本9等的軟件版本的值。
示例性數(shù)據(jù)結(jié)構(gòu)(500)也包括表示形成網(wǎng)格計算環(huán)境的一部分的遠程執(zhí)行環(huán)境的網(wǎng)格位置的數(shù)據(jù)元素(511)。數(shù)據(jù)元素(511)可存儲表示諸如網(wǎng)格節(jié)點標識符、地理坐標、網(wǎng)絡地址等的位置的值。
本發(fā)明的示例性實施例主要是在用于在分布式調(diào)試器中調(diào)試計算機程序的全功能計算機系統(tǒng)的上下文中被描述的。但是,本領域中的讀者將認識到本發(fā)明也可體現(xiàn)在設置在信號承載介質(zhì)中的可用于任何適合的數(shù)據(jù)處理系統(tǒng)的計算機程序產(chǎn)品中。這種信號承載介質(zhì)可以是用于機器可讀信息的傳輸介質(zhì)或可記錄介質(zhì),包括磁介質(zhì)、光介質(zhì)、或其他適當?shù)慕橘|(zhì)。可記錄的介質(zhì)的示例包括硬盤驅(qū)動器中的磁盤或軟盤、用于光盤驅(qū)動器的光盤、磁帶、和本領域中的技術人員可想到的其他介質(zhì)。傳輸介質(zhì)的示例包括用于語音通信的電話網(wǎng)絡和諸如EthernetsTM和以網(wǎng)際協(xié)議和萬維網(wǎng)通信的網(wǎng)絡的數(shù)字數(shù)據(jù)通信網(wǎng)絡。本領域中的技術人員將立即認識到任何具有適當?shù)木幊绦蜓b置的計算機系統(tǒng)將能夠執(zhí)行體現(xiàn)在程序產(chǎn)品中的本發(fā)明的方法的步驟。本領域中的技術人員將立即認識到盡管本說明書中描述的一些示例性實施例面向安裝在計算機硬件上并在其上執(zhí)行的軟件,然而,其他可選的被實現(xiàn)為固件或硬件的實施例也完全在本發(fā)明的范圍內(nèi)。
從以上的描述可知可在本發(fā)明的各實施例中作出修改或改變而不偏離本發(fā)明的實質(zhì)精神。本說明書中的描述僅為例示目的而不應在限制的意義上理解。本發(fā)明的范圍僅受下面權(quán)利要求的語言限制。
權(quán)利要求
1.一種用于在分布式調(diào)試器中調(diào)試計算機程序的方法,該方法包括定義以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點;在該遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試計算機程序;以及在以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的斷點處檢索調(diào)試信息。
2.根據(jù)權(quán)利要求1的方法,其中所述遠程執(zhí)行環(huán)境的屬性進一步包括處理器是否專用于邏輯分區(qū)或在多個邏輯分區(qū)之間被共享的指示;以及分區(qū)是否具有已設定上限的或設定上限的資源分配的指示。
3.根據(jù)權(quán)利要求1的方法,其中所述遠程執(zhí)行環(huán)境的屬性進一步包括處理器類型、處理器數(shù)量、存儲器容量、和輸入/輸出設備類型。
4.根據(jù)權(quán)利要求1的方法,其中所述遠程執(zhí)行環(huán)境進一步包括網(wǎng)格計算環(huán)境。
5.根據(jù)權(quán)利要求4的方法,其中所述遠程執(zhí)行環(huán)境的屬性進一步包括所述遠程執(zhí)行環(huán)境的網(wǎng)格位置。
6.根據(jù)權(quán)利要求1的方法,其中所述遠程執(zhí)行環(huán)境的屬性包括在所述遠程執(zhí)行環(huán)境中操作的計算機軟件的類型和版本。
7.根據(jù)權(quán)利要求1的方法,其中所述遠程執(zhí)行環(huán)境進一步包括沒有圖形用戶界面的執(zhí)行環(huán)境。
8.一種用于在分布式調(diào)試器中調(diào)試計算機程序的裝置,該裝置包括計算機處理器和操作地連接到該計算機處理器的計算機存儲器,該計算機存儲器具有安置于其中的能夠執(zhí)行以下操作的計算機程序指令定義以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點;在該遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試計算機程序;以及在以該遠程執(zhí)行環(huán)境的一個或多個屬性為條件的斷點處檢索調(diào)試信息。
9.根據(jù)權(quán)利要求8的裝置,其中所述遠程執(zhí)行環(huán)境的屬性進一步包括處理器是否專用于邏輯分區(qū)或在多個邏輯分區(qū)之間被共享的指示;以及分區(qū)是否具有已設定上限的或未設定上限的資源分配的指示。
10.根據(jù)權(quán)利要求8的裝置,其中所述遠程執(zhí)行環(huán)境的屬性進一步包括處理器類型、處理器數(shù)量、存儲器容量、和輸入/輸出設備類型。
11.根據(jù)權(quán)利要求8的裝置,其中所述遠程執(zhí)行環(huán)境的屬性包括在該遠程執(zhí)行環(huán)境中操作的計算機軟件的類型和版本。
全文摘要
公開了用于在分布式調(diào)試器中調(diào)試計算機程序的方法、裝置、和計算機程序產(chǎn)品,其包括定義以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的條件斷點;在遠程執(zhí)行環(huán)境中在調(diào)試會話中調(diào)試計算機程序;以及在以遠程執(zhí)行環(huán)境的一個或多個屬性為條件的斷點處檢索調(diào)試信息。
文檔編號G06F11/36GK1959652SQ20061014371
公開日2007年5月9日 申請日期2006年11月2日 優(yōu)先權(quán)日2005年11月3日
發(fā)明者E·L·巴斯尼斯, J·M·桑多索索 申請人:國際商業(yè)機器公司