亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

可插元件上的斷點調(diào)試的制作方法

文檔序號:6421733閱讀:192來源:國知局
專利名稱:可插元件上的斷點調(diào)試的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及調(diào)試器,尤其是對象模型中可插拔元件的斷點調(diào)試。
發(fā)明的背景調(diào)試通常但不總是涉及調(diào)試器的使用,強大的工具可以允許編程者觀察程序運行性能的,并確定語義錯誤的所在位置??梢杂锰囟ㄕ{(diào)試特征組成語言及其相關(guān)庫。當(dāng)多數(shù)編程者通過增加調(diào)用輸出功能,從而試圖從它們的代碼中分離出問題的時候,首先進行調(diào)試。這是非常合理的調(diào)試技術(shù),但是一旦定位和修改了問題,所有這些額外的功能調(diào)用必須從代碼中移動。可能是這樣的情況,增加新的代碼甚至是一個單獨的調(diào)用,這種添加改變了正在調(diào)試的代碼性能。
另一種可選的方法是使用調(diào)試器和讀取分析有問題和錯誤代碼的計算應(yīng)用程序。在使用調(diào)試器的方法中,編程者能夠檢查程序中變量的內(nèi)容,而不用插入額外的調(diào)用來輸出這些值。另外,借助于調(diào)試器,可以在程序代碼中插入斷點在重要點停止執(zhí)行。當(dāng)程序中止時(處在中斷模式),使用調(diào)試設(shè)備(例如監(jiān)視窗口)來檢查局部變量和其它相關(guān)的數(shù)據(jù)。在中斷模式下不僅可以查看內(nèi)容,還可以更改和/或編輯內(nèi)容。
具體的說,斷點是一個通知調(diào)試器在某一點上臨時中止程序執(zhí)行的信號。當(dāng)執(zhí)行在斷點處中止時,程序處于所述的中止模式。進入中止方式并不是結(jié)束或者停止你的程序。任何時候可以恢復(fù)(繼續(xù))執(zhí)行。
中止方式可以認(rèn)為是在運動事件中的暫停。所有的選手還在場上(功能、變量、和對象駐留在存儲器中),但是他們的運動和活動中止了。在暫停期間,裁判能夠檢查他們的位置和狀態(tài),來尋找違例情況(錯誤)。裁判有權(quán)在暫停階段調(diào)整選手。在中斷方式下可以對程序進行調(diào)整。例如,可以改變變量的值。另外,還可以移動執(zhí)行的點,改變執(zhí)行恢復(fù)時即將執(zhí)行的下一個語句。
斷點提供了一個強大的工具,使程序可以在任何希望的時間和地點中止執(zhí)行。而不是以一行一行地或者一條指令一條指令地單步調(diào)試代碼,可以設(shè)置程序運行直到它遇到斷點,然后開始調(diào)試。這樣大大加速了調(diào)試的進程。如果不具備這種能力,實際上是不可能調(diào)試大型程序的。
許多程序語言具有中止執(zhí)行和將程序置于中斷方式的語句和結(jié)構(gòu)。例如Visual Basic具有停止(Stop)語句。由于斷點是添加到程序中的非實際的資源代碼,因此斷點不同于這些語句。斷點語句沒有被輸入到資源窗口中,更確切的說,它要求通過一些通用調(diào)試接口和調(diào)試器,依次來設(shè)置斷點。
在具有可插拔部件(例如數(shù)據(jù)傳輸系統(tǒng)(DTS))的計算環(huán)境的運行時間環(huán)境中,調(diào)試變得更加復(fù)雜。(特別是,由于運行期間沒有部件的資源代碼來在此運行,具有可插拔部件的運行時間是一個獨立的調(diào)試問題,調(diào)試是困難的。)而且,大多數(shù)運行時間信息包(例如DTS信息包)的執(zhí)行是在運行時間之外產(chǎn)生。另外,任務(wù)對本身的執(zhí)行進行控制,意即任務(wù)暫停時他們對任務(wù)自身進行控制(例如為了進行調(diào)試)。運行時間暫停一個特殊的任務(wù),運行時間(具有數(shù)據(jù)文件的計算應(yīng)用程序,用來顯示或運行數(shù)據(jù)文件)需要和特殊的任務(wù)一起協(xié)同操作。現(xiàn)行辦法提出了在運行時間的調(diào)試,但由于沒有提出運行時間和任務(wù)之間的協(xié)同工作因而不能處理運行期間可插拔部件的調(diào)試。簡而言之,運行時間對可插拔的部件進行了低效率的控制。
綜上所述,有必要存在一個系統(tǒng)和方法來克服現(xiàn)有技術(shù)的不足。
發(fā)明概述提供了一種可插拔部件斷點的調(diào)試。在一個具有擴展的可插拔部件的計算環(huán)境中,提供一種系統(tǒng)和方法在部件運行期間(例如執(zhí)行)在不同的點設(shè)置斷點,以便可以發(fā)現(xiàn)、跟蹤、和解決錯誤。在一個示出的實施例中,計算環(huán)境包括了客戶端、運行時間和任務(wù)。操作中客戶端創(chuàng)建執(zhí)行或者將信息包加載到運行時間。運行時間創(chuàng)建任務(wù)并將任務(wù)配置成能夠創(chuàng)建斷點。任務(wù)然后創(chuàng)建斷點并將斷點信息傳輸給運行時間。然后客戶端通過計數(shù)斷點集合來啟動斷點。當(dāng)任務(wù)遇到斷點時,任務(wù)停止執(zhí)行,提供運行時間的控制。運行時間讓斷點來調(diào)用客戶端。運行時間也可以在支持這種操作的所有任務(wù)上進行中止調(diào)用。直到滿意為止,客戶端然后通過和運行時間的通信來恢復(fù)信息包,依次觸發(fā)所有任務(wù)的恢復(fù)。
下面將描述本發(fā)明的其它方面。
附圖簡述參考如下附圖進一步描述可插拔元件的斷點調(diào)試系統(tǒng)和方法


圖1和2是適用于本發(fā)明計算環(huán)境的示意圖,附圖2是網(wǎng)絡(luò)計算環(huán)境的示意圖;附圖3是在可插拔元件斷點執(zhí)行時執(zhí)行的處理的方框圖;附圖4是根據(jù)所述系統(tǒng)和方法中的調(diào)試斷點執(zhí)行時的處理流程圖。
說明性實施例的詳細(xì)描述概述軟件調(diào)試是一個開發(fā)者試圖排除計算機程序中代碼缺陷的過程。軟件開發(fā)調(diào)試階段通常占整個開發(fā)時間的60-70%。實際上,調(diào)試擔(dān)負(fù)著軟件項目總量的約80%左右?;旧希浖{(diào)試的關(guān)鍵過程中圍繞著大量的困難和不確定性。這是因為,在錯誤檢測過程的每一個階段很難確定多長時間能夠發(fā)現(xiàn)和改正錯誤,更不用說是否已經(jīng)正確修改了缺陷。為了刪除軟件中的錯誤,開發(fā)者首先必須發(fā)現(xiàn)存在的問題,然后將錯誤分類,找出問題所在的代碼,最后創(chuàng)建補救這種形勢的方案(不會引起其它問題)。有些問題是難以捉摸的,以至編程者可能花費幾個月,或者在極端情況下,甚至幾年去發(fā)現(xiàn)它們。開發(fā)者不斷地在尋找改善和合理化軟件調(diào)試過程的方法。與此同時,他們已經(jīng)試圖在錯誤檢測中使用自動化技術(shù)。
這些年來,調(diào)試技術(shù)有了實質(zhì)性的改善,并且在不久的將來它將繼續(xù)有重大的發(fā)展。
調(diào)試技術(shù)的研究呈現(xiàn)了重要性的趨勢。大多數(shù)調(diào)試的改進集中在減少依賴的人力和相互作用。調(diào)試技術(shù)的發(fā)展經(jīng)歷了幾個階段。在計算機剛剛開始的年代,編程者難于使計算機產(chǎn)生他們運行的程序的輸出結(jié)果。編程者被迫發(fā)明了不同的方法來獲得他們使用程序的信息。他們不僅要確定錯誤,而且必須創(chuàng)建工具來發(fā)現(xiàn)錯誤。在早期得的調(diào)試技術(shù)中使用了例如顯示器和程序控制燈泡。
最后編程者開始在他們的程序中輸入打印指令來檢測錯誤。通過這樣做,編程者能夠跟蹤程序路徑和關(guān)鍵變量的值。打印語句的使用免去了編程者創(chuàng)建他們自己調(diào)試工具任務(wù)的時間浪費。這種技術(shù)仍然在普遍使用,非常適合某種類型的問題。
盡管打印語句是調(diào)試技術(shù)中的一個改善,但他們?nèi)匀恍枰幊陶呦喈?dāng)多的時間和工作。編程者需要的是一個一次執(zhí)行一條程序指令的工具,然后打印程序中的任何變量。這將使編程者免于提前決定打印語句所放的位置,因為這是他在單步調(diào)試程序中應(yīng)當(dāng)做的。這樣就產(chǎn)生了運行時間調(diào)試器。原則上,運行時間調(diào)試器僅僅是一個自動化的打印語句。它允許編程者不必在代碼中插入打印語句就能跟蹤程序路徑和變量。
如今,市場上的每一個編譯器事實上都帶有運行時間調(diào)試器。在程序編譯期間,這種調(diào)試器作為通過編譯的切換開關(guān)。經(jīng)常,這種切換開關(guān)稱為“-g”切換開關(guān)。這種開關(guān)告訴編譯器使足夠的信息成為可執(zhí)行的部分,以使其能夠在運行時間在調(diào)試器中運行。運行時間調(diào)試器相對于打印語句來說是一個巨大的進步,這是因為它允許編程者編譯和運行單個的編譯程序,而不是修改資源和重編譯,以盡量減少錯誤。運行時間調(diào)試器使得檢測程序中的錯誤變得很容易,但是他們不能發(fā)現(xiàn)導(dǎo)致錯誤的原因。編程者需要一個更好的工具來定位和糾正軟件錯誤。
軟件開發(fā)商發(fā)現(xiàn)有些經(jīng)典的錯誤,例如存儲器誤用和存儲器漏洞可以自動檢測出來。這是調(diào)試技術(shù)前進的一步,這是因為它使發(fā)現(xiàn)錯誤的過程自動化。這種工具通知開發(fā)者錯誤,他的任務(wù)僅僅是來改正它。自動調(diào)試器變得多樣化。最簡單的一種就是能夠連接到一個程序的庫功能。當(dāng)程序執(zhí)行并調(diào)用這些功能時,調(diào)試器檢查存儲器誤用。如果發(fā)現(xiàn)這種情況,調(diào)試器就報告。這種工具的弱點就是不能檢測這種存儲器誤用確切產(chǎn)生的程序點的位置。這是因為調(diào)試器不能觀察程序運行的每一條指令,僅僅能夠檢測少量的錯誤。
下一代運行時間調(diào)試器技術(shù)基于OCI技術(shù)。這些工具讀取編譯器產(chǎn)生的對象代碼,在程序連接之前他們被裝備。這些工具的基本原則是尋找訪問存儲器的處理器指令。在對象代碼中,修改任何訪問處理器的指令來檢查誤用情況。這些工具比基于庫技術(shù)的工具更加有用,但是他們?nèi)匀皇遣煌昝赖?。由于這些工具由存儲器指令觸發(fā),他們僅僅能夠檢測出與處理器有關(guān)的錯誤。這些工具能夠檢測動態(tài)存儲器中的錯誤,但是他們在堆棧檢測方面的能力是有限的,他們不能在靜態(tài)存儲器中工作。由于OCI技術(shù)的弱點,他們不能檢測其它任何類型的錯誤。在對象標(biāo)準(zhǔn)中,關(guān)于源代碼大量重要的信息永久性丟失,他們不能用于幫助確定錯誤。這些工具的另外一個缺點是當(dāng)處理器產(chǎn)生漏洞時不能進行檢測。不能區(qū)分點和整體,這導(dǎo)致了漏洞的不可檢測。
第三代運行時間調(diào)試器基于SCI技術(shù)。工具讀取程序源代碼,分析,測試,結(jié)果將每一條程序指令插入到工具指令中。由于工具讀取源代碼,它就能夠發(fā)現(xiàn)和存儲器有關(guān)的錯誤和其它大的錯誤類。而且,這種工具能夠檢測出所有存儲段中的存儲器誤用錯誤,包括堆,靜態(tài)和動態(tài)的存儲器。這種工具最大的優(yōu)點是它能夠跟蹤程序內(nèi)的指針,能夠跟蹤漏洞產(chǎn)生的點。另外,為了發(fā)現(xiàn)存儲器錯誤,這些工具能夠檢測語言特定錯誤和算術(shù)錯誤。這些工具將是下一步技術(shù)發(fā)展的基礎(chǔ)。
所有現(xiàn)有的工具都有一個共同的缺點。在程序編譯后,他們?nèi)匀恍枰幊陶呓?jīng)歷尋找運行時間錯誤的額外步驟。在某種意義上,自從調(diào)試的“石器時代”以來,就沒有怎么改變過這種處理。首先,寫入代碼,然后檢查代碼的錯誤。在一個更高級別中仍然存在這兩種階段的處理過程。這種過程需要整合成一個階段。
斷點允許執(zhí)行的臨時停止以用于調(diào)試目的。典型的軟件開發(fā)環(huán)境提供了,暫停一個正在運行的應(yīng)用程序的線程,和基于不同的階段決定應(yīng)用程序的源代碼在哪里停止,就這兩種斷點行為。運行時間不能這樣做由三點原因1)任務(wù)是組成部分,因此一旦執(zhí)行中止就沒有可以參考的源代碼。2)大多數(shù)DTS信息包的執(zhí)行發(fā)生在運行時間的控制之外。任務(wù)能夠控制他們自己的執(zhí)行。為了停止他們,DTS運行時間需要暫停任務(wù)上運行的線程。3)在任何時間,任務(wù)可能是一個不允許臨時暫停的敏感狀態(tài)。
這里所述的系統(tǒng)和方法的目的是改善現(xiàn)有技術(shù)的缺點,提供了一種機制,當(dāng)任務(wù)告知運行時間遇到斷點時,通過揭露斷點和正確的響應(yīng),允許任務(wù)和運行時間協(xié)同工作,并且允許可插拔部件在示例期間的任何時候創(chuàng)建斷點。換句話說,調(diào)試器借助可擴展部件的工作來設(shè)置用于運行時間跟蹤和解決問題的斷點。
可以理解的是雖然這里所述的系統(tǒng)和方法是在可插拔部件的調(diào)試環(huán)境中描述的,但調(diào)試技術(shù)可以使用超出本發(fā)明提供的實施例范圍之內(nèi)的不同方式。
A.示例的計算環(huán)境附圖1示出能夠在本發(fā)明中實施的適當(dāng)?shù)挠嬎阆到y(tǒng)環(huán)境100的一個例子。計算系統(tǒng)環(huán)境100僅僅是適合計算環(huán)境的一個例子,并沒有暗示對本發(fā)明的使用范圍和功能進行任何限制。計算環(huán)境100不與示例的操作環(huán)境100中的任何一個部件或者是它們的組合有依賴性或者必然聯(lián)系。
本發(fā)明可供很多其它一般用途或者特殊用途的計算系統(tǒng)環(huán)境或結(jié)構(gòu)一起使用。本發(fā)明也包括但不限于使用合適的公知計算系統(tǒng)、環(huán)境和/或結(jié)構(gòu),上述系統(tǒng)或設(shè)備也包括任何個人計算機、服務(wù)器計算機,手持式或者膝上型設(shè)備、多處理器系統(tǒng)、微處理器系統(tǒng)、機頂盒、可編程消費電子、網(wǎng)絡(luò)PC機、微型計算機、大型計算機、分布式計算機環(huán)境,或者類似設(shè)備。
本發(fā)明可以用一般的計算機可執(zhí)行的指令環(huán)境來描述,例如計算機執(zhí)行的程序模塊。程序模塊一般包括執(zhí)行特殊任務(wù)或者實行特殊抽象數(shù)據(jù)類型的例程、程序、對象、成員和數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明也可以在分布式計算環(huán)境中實施,該環(huán)境中通過通信網(wǎng)絡(luò)或者是其它數(shù)據(jù)傳輸媒體連接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊和其它數(shù)據(jù)既可以在包括存儲器存儲設(shè)備的本地計算機存儲媒體中,也可以在包括存儲器存儲設(shè)備的遠(yuǎn)程計算機存儲媒體中。
參考附圖1,實施本發(fā)明的典型系統(tǒng)包括由計算機110組成的一般用途的計算設(shè)備。計算機110的組成部分包括但不局限于處理單元120、系統(tǒng)存儲器130和連接不同部件的系統(tǒng)總線121,包括系統(tǒng)存儲器和處理單元120的連接。系統(tǒng)總線121可以是幾種類型總線結(jié)構(gòu)的任何類型,包括存儲器總線或者存儲控制器、外圍總線和使用任何多種總線結(jié)構(gòu)的本地總線。作為實施例但不局限于此,這樣的結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、加強的ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)本地總線和外圍部件接口(PCI)總線(也可以是公知的Mezzanine總線)。
計算機110典型地包括大量的計算機可讀媒體。計算機可讀媒體可以是計算機110可以訪問的任何有效的媒體,包括易失的和非易失的媒體、可移動的和非可移動動的媒體。作為實施例但不局限于此,計算機可讀媒體可以包括計算機存儲媒體和通信媒體。計算機存儲媒體既包括易失的也包括非易失的,既包括可移動也包括非可移動的媒體,實現(xiàn)任何信息存儲的方法和技術(shù),例如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或者其它數(shù)據(jù)。計算機存儲媒體但不局限于包括RAM,ROM,EEPROM,閃存或者其它存儲技術(shù),CD-ROM,數(shù)字化視頻光盤(DVD)或者其它光磁盤媒體,磁帶盒,磁帶,磁盤存儲器或者其它磁存儲設(shè)備,或者是能夠存儲所需信息并且計算機110能夠訪問的其它媒體。通信媒體典型地包括計算機可讀指令,數(shù)據(jù)結(jié)構(gòu),程序模塊或者以一種例如載波或其它傳輸機制的模塊化數(shù)據(jù)信號的形式存在的其它數(shù)據(jù),并且包括任何信息傳輸媒體。術(shù)語“模塊化數(shù)據(jù)信號”意指一種具有一個或多個字符集的信號或以此來改變信號中的信息編碼的信號。作為實施例但不局限于此,通信媒體包括例如有線網(wǎng)絡(luò)或直接線性連接的有線媒體,例如聲學(xué)、RF、紅外線的無線媒體和其它無線媒體。計算機可讀媒體的范圍也包括上述任何媒體的組合。
系統(tǒng)存儲器130包括例如是ROM131和RAM132的易失性的和/或非易失性的存儲器組成的計算機存儲媒體。ROM131典型地存儲有包含在啟動期間幫助計算機110內(nèi)組成部分傳輸信息基本例程的基本輸入輸出系統(tǒng)133(BIOS)。RAM132典型地包括能立即被訪問和/或處理單元120操作的數(shù)據(jù)和/或程序模塊。作為實施例但不局限于此,附圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機110也可以包括其它可移動/非可移動,易失/非易失地計算機存儲媒體。僅僅作為一個實施例,附圖1示出了一個從/向非可移動、非易失的磁媒體讀取/寫入的硬盤驅(qū)動器140,一個從/向可移動、非易失的磁盤152讀取/寫入的磁盤驅(qū)動器151,和一個從/向非可移動、非易失的光盤156讀取/寫入的光盤驅(qū)動器155,例如CD-ROM或其它光媒體。典型的操作環(huán)境中也可以使用其它的可移動的/非可移動的、易失的/非易失的計算機存儲媒體,包括但不限于磁帶盒,閃速存儲器卡,數(shù)字光盤,數(shù)字視頻磁帶,固態(tài)ROM以及類似媒體。典型的,通過例如是接口140的非可移動存儲器接口,硬盤驅(qū)動器141與系統(tǒng)總線121連接,通過例如接口150的可移動存儲器接口磁盤驅(qū)動器151和光盤驅(qū)動器155與系統(tǒng)總線連接。
如上所討論和附圖1所示例的驅(qū)動器和其它相關(guān)的計算機存儲媒體為計算機提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。在附圖1中,例如,硬盤驅(qū)動器作為存儲操作系統(tǒng)144,應(yīng)用程序145,其它程序模塊146和程序數(shù)據(jù)147被示出。需要注意的是,這些組件既可以相同于、也可以不同于操作系統(tǒng)134,應(yīng)用程序135,其它程序模塊136和程序數(shù)據(jù)137。這里操作系統(tǒng)144,應(yīng)用程序145,其它程序模塊146和程序數(shù)據(jù)147以不同的數(shù)字表示在最小值方面是不同的副本。用戶通過輸入設(shè)備、例如是鍵盤162和指示裝置161、一般指鼠標(biāo)、跟蹤球或觸摸墊來向計算機輸入命令和信息。其它的輸入設(shè)備(未示出)也可以包括麥克風(fēng),操縱桿,游戲墊、圓盤式衛(wèi)星電視天線、掃描儀或者類似設(shè)備。這些和其它輸入設(shè)備經(jīng)常是通過耦合到系統(tǒng)總線的用戶輸入接口160和處理單元120相連接,但是也可以是通過其它的接口和總線結(jié)構(gòu)連接,例如并行端口、游戲端口或者是通用串行總線(USB)。顯示器191或者其它類型的顯示設(shè)備也是通過接口和系統(tǒng)總線連接的,例如視頻接口190。除了顯示器,計算機也可以包括其它外圍輸出設(shè)備,例如通過輸出外圍接口195連接的揚聲器197和打印機196。
計算機110使用和一個或者多個遠(yuǎn)程計算機、例如遠(yuǎn)程計算機180的邏輯連接可以在網(wǎng)絡(luò)環(huán)境中運行。遠(yuǎn)程計算機180可以是個人計算機,服務(wù)器,路由器,網(wǎng)絡(luò)PC,對等設(shè)備或其它一般的網(wǎng)絡(luò)節(jié)點,盡管附圖1僅僅示例了存儲器設(shè)備181,但是典型的,遠(yuǎn)程計算機181還包括如上所述與計算機110有關(guān)的許多或者全部元件。所述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但是也可以包括其它的網(wǎng)絡(luò)。將象企業(yè)域的計算機網(wǎng)絡(luò),企業(yè)內(nèi)部局域網(wǎng)和互聯(lián)網(wǎng)這樣的網(wǎng)絡(luò)環(huán)境應(yīng)用在在辦公室中是很普通的現(xiàn)象。
當(dāng)在局域網(wǎng)環(huán)境中使用時,計算機110通過網(wǎng)絡(luò)接口或者適配器170和局域網(wǎng)171連接。當(dāng)在廣域網(wǎng)中使用時,計算機110一般包括調(diào)試解調(diào)器172或者在廣域網(wǎng)173中建立通信的其它裝置,例如互聯(lián)網(wǎng)。內(nèi)部或者外部的調(diào)制調(diào)節(jié)器172通過用戶輸入接口160、或者其它適當(dāng)?shù)臋C制與系統(tǒng)總線121相連。在網(wǎng)絡(luò)環(huán)境中,所述與計算機110有關(guān)的程序模塊或部分可以存儲在遠(yuǎn)程存儲存儲器設(shè)備中。作為一個實施例但不限于此,附圖1例示了位于存儲設(shè)備181上的遠(yuǎn)程應(yīng)用程序185??梢岳斫獾氖鞘境龅木W(wǎng)絡(luò)連接是示范性的,可以使用在計算機間建立通信的其它裝置。
B.網(wǎng)絡(luò)計算環(huán)境實施例如上所述的計算機環(huán)境100可用于計算機網(wǎng)絡(luò)的一部分。通常,上述的計算機既可以用于網(wǎng)絡(luò)環(huán)境中的服務(wù)器計算機,也可以用于客戶端服務(wù)器。附圖2示出了網(wǎng)絡(luò)環(huán)境的一個實施例,具有本發(fā)明使用的由網(wǎng)絡(luò)和客戶端計算機通信的服務(wù)器。如附圖2所示,大量的服務(wù)器10a,10b等等由通信網(wǎng)絡(luò)14(可以是LAN,WAN,企業(yè)內(nèi)部局域網(wǎng),互聯(lián)網(wǎng),或其它計算機網(wǎng)絡(luò))和大量的客戶端計算機20a,20b,20c或者例如是移動電話15,陸地有線電話16和個人數(shù)字助理機17的計算設(shè)備相連接。例如,在通信網(wǎng)絡(luò)160是互聯(lián)網(wǎng)的網(wǎng)絡(luò)環(huán)境中,服務(wù)器10可以是萬維網(wǎng)服務(wù)器,客戶端20通過大量公知的協(xié)議中的任何一種和服務(wù)器通信,例如超文本傳輸協(xié)議(HTTP)或無線應(yīng)用協(xié)議(WAP)。每一個客戶計算機20可以配備訪問服務(wù)器10的瀏覽器180a。類似的,個人數(shù)字助理機17可以配備瀏覽器180b,移動電話15可以配備瀏覽器180c來顯示和接收不同的數(shù)據(jù)。
在操作中,一個用戶(未示出)可以和運行在客戶端計算設(shè)備上的計算應(yīng)用程序交互作用,進行可插拔部件中的斷點調(diào)試。調(diào)試功能可以存儲在服務(wù)器計算機中,由通信網(wǎng)絡(luò)14和客戶端的協(xié)作用戶進行通信。用戶可以結(jié)合客戶端計算設(shè)備上的計算應(yīng)用程序進行調(diào)試。客戶端計算設(shè)備將這些事務(wù)處理傳給服務(wù)器計算機以進行處理和存儲。服務(wù)器計算機可以作為主計算應(yīng)用程序進行可插拔部件的調(diào)試。
因此,本發(fā)明可以使用在具有訪問網(wǎng)絡(luò)及與網(wǎng)絡(luò)相互作用的客戶端計算設(shè)備以及和客戶端交互作用的服務(wù)器計算機的計算機環(huán)境中。然而,在此所述的系統(tǒng)和方法可以用多種基于網(wǎng)絡(luò)的結(jié)構(gòu)來實施,不僅限于給出的實施例?,F(xiàn)在參考示出的實施例將詳細(xì)描述所述的系統(tǒng)和方法。
C.斷點調(diào)試在DTS(數(shù)據(jù)傳輸系統(tǒng))中調(diào)試的概念在表面上和在其它的環(huán)境中是類似的。需要停止信息包的執(zhí)行,檢查和改變變量,并繼續(xù)執(zhí)行,這樣才能寫入數(shù)據(jù)包。編程者通過觀察控制執(zhí)行斷點、檢查和修改變量。DTS的不同點是多數(shù)執(zhí)行發(fā)生在運行時間的控制以外的信息包中。DTS只訪問或者控制調(diào)用接口方法和例如中止任務(wù)線程之間的任務(wù)。期望在斷點處設(shè)置良好的控制。因此,對象模型為任務(wù)優(yōu)選的提供了一種方法來描述他們允許的變量、事件和方法作為斷點目標(biāo)。在接口的定義中,一般的術(shù)語“對象”用來描述實施調(diào)試接口的實體。將這些接口應(yīng)用于希望在揭露調(diào)試和功能性斷點的對象模型中的任務(wù)和對象是明智的。
在一個典型的實施例中,用戶創(chuàng)建具有任務(wù)的信息包。運行期間出現(xiàn)了問題,編程者想弄明白任務(wù)為什么沒有按照他所想的方式去工作。在將三行集合成一行轉(zhuǎn)換的任務(wù)上設(shè)置斷點。通過使用協(xié)作用戶接口,編程者能夠查看轉(zhuǎn)換揭示的屬性和變量。通過查看被轉(zhuǎn)換的行和中間執(zhí)行的轉(zhuǎn)換結(jié)果,可以推斷出集合體的邏輯缺陷。
在第二個示出的實施例中,編程者具有循環(huán)執(zhí)行的兩個任務(wù)的信息包。第一個任務(wù)設(shè)置了第二個任務(wù)使用的全局變量。由于某方面的原因在僅僅執(zhí)行了部分循環(huán)是時第二任務(wù)失敗。編程者猜想這是由于全局變量設(shè)置成了一個無效值,于是當(dāng)編程者反復(fù)猜想和檢查全局變量時,在循環(huán)處設(shè)置斷點。編程者反復(fù)采取措施,直到她發(fā)現(xiàn)可疑的全局變量的值的。在發(fā)現(xiàn)可疑的值后,編程者一步一步循環(huán)查看第二個任務(wù)的失敗。
一般的,設(shè)計斷點的目的是任務(wù)不能面對在實施和使用中的挑戰(zhàn)。運行時間保持了任務(wù)揭示的斷點和客戶端是否能夠使能信息,致使任務(wù)寫入幾乎不能工作。在運行期間保持?jǐn)帱c的狀態(tài)提供了公知的優(yōu)點,即可以正確執(zhí)行。
為了揭示斷點,結(jié)合示出的典型實施例,任務(wù)最好實施IDTS斷點站斷點。這種接口來源于IDTS中止。當(dāng)?shù)谝淮蝿?chuàng)建任務(wù)時,運行時間將會調(diào)用IDTS斷點站。任務(wù)的接收斷點管理通過斷點管理的使任務(wù)能夠通知它希望揭示的斷點運行時間,檢驗客戶是否已經(jīng)使能這些斷點。典型的,調(diào)用接收斷點管理時,任務(wù)將會創(chuàng)建大量的斷點,然后執(zhí)行時調(diào)用幾次斷點是否使能。
每一個斷點由任務(wù)定義和任務(wù)范圍的ID所標(biāo)識。揭示斷點的例子如下<pre listing-type="program-listing">  AcceptBreakpointManager(IDTSBreakpointManager*pManager)  {  m_pManager=pManager;  m_pManager->CreateBreakpoint(1,“Break when the task is about to do X”,&lt;br/&gt;NULL);  }  Execute(…)  {VARIANT-BOOL isEnabled;  m_pManager->IsBreakpointEnabled(1,&amp;amp;isEnabled);  }</pre>斷點管理器支持更多復(fù)雜的情況,例如執(zhí)行時創(chuàng)建和刪除斷點。而且,客戶端可以檢索信息包中揭露的所有斷點列表,或者僅僅通過調(diào)用IDTS信息包上的GetBreakpoint( )進行特定的執(zhí)行。集合中的每一個斷點對象包括了斷點的描述和使能標(biāo)志,當(dāng)設(shè)置時能夠?qū)е略趫?zhí)行點停止任務(wù)。
附圖3示出了在計算環(huán)境中具有擴展部件并且可以和計算環(huán)境通信,以實現(xiàn)斷點調(diào)試的示例的方塊圖。微軟公司支持的DTS就是這樣的計算環(huán)境的一個例子。
許多公司需要集中數(shù)據(jù)來改善共同的決策。然而,他們的數(shù)據(jù)可能以不同的格式存在不同的地方。數(shù)據(jù)傳輸系統(tǒng)(DTS)闡明了這個重大的事宜,需要提供一組工具以允許將不同資源的數(shù)據(jù)提取、轉(zhuǎn)換和合并成單個的或者多個DTS連接支持的目的地址。通過使用DTS工具以圖形化的方式建立DTS信息包或者用DTS對象模型來編程信息包,可以創(chuàng)建自定義的、編制用來專用于組織結(jié)構(gòu)的商業(yè)需要的數(shù)據(jù)移動解決方案。
DTS信息包是一個有組織連接、DTS任務(wù)、DTS轉(zhuǎn)換和工作流程限制集合的集合體,可以與DTS工具匯編或者編程,并且保存到MICROSOFT SQLSERVER,SQL SERVER 2000中的數(shù)據(jù)服務(wù)器,結(jié)構(gòu)化存儲文件,或者是MICROSOFT Visual Basic文件。一般地,在運行時每一個信息包包括一個或者多個順序或者是并行執(zhí)行的步驟。當(dāng)執(zhí)行時,信息包連接到正確的數(shù)據(jù)源,復(fù)制數(shù)據(jù)和數(shù)據(jù)庫對象,轉(zhuǎn)換數(shù)據(jù)并通知其它用戶或者事件程序。信息包可以被編輯,密碼保護,執(zhí)行調(diào)度,并且能夠通過版本來檢索。
伴隨著信息包存在著DTS任務(wù)。DTS任務(wù)是一組離散的功能,在信息包中單步執(zhí)行。每一個任務(wù)定義了作為數(shù)據(jù)移動和數(shù)據(jù)轉(zhuǎn)換進程的一部分待執(zhí)行的工作項目,或者作為待執(zhí)行的任務(wù)。一般用于DTS任務(wù)的例子包括1)輸入和輸出數(shù)據(jù),2)轉(zhuǎn)換數(shù)據(jù),3)復(fù)制數(shù)據(jù)庫對象,和4)向/和其它的用戶和信息包發(fā)送/接收信息。
完成DTS部件和操作的是DTS轉(zhuǎn)換。在數(shù)據(jù)到達目的地之前,一個DTS轉(zhuǎn)換是一個或者多個依據(jù)一個數(shù)據(jù)塊應(yīng)用的功能或者操作。
如附圖3所示,典型的計算環(huán)境包括客戶端,運行時間和任務(wù)。箭頭和數(shù)字表示客戶端、運行時間和任務(wù)間通信和操作的順序。箭頭數(shù)字1指示的第一通信是在客戶端和運行時間間進行的,在此客戶創(chuàng)建可執(zhí)行的或者可選的向運行時間加載信息包。響應(yīng)于客戶端,運行時間創(chuàng)建箭頭2示出的任務(wù)。任務(wù)在認(rèn)為合適的位置創(chuàng)建斷點并將斷點位置傳輸給運行時間,如箭頭3所示。實際上,編程者在創(chuàng)建信息包和/或執(zhí)行的任何時候創(chuàng)建斷點。任務(wù)僅僅在計算環(huán)境中設(shè)置斷點,本質(zhì)上為執(zhí)行準(zhǔn)備。
響應(yīng)于任務(wù)斷點設(shè)置,客戶端通過如箭頭4所示的技術(shù)斷點集合開啟斷點。在這里,客戶端和運行時間進行通信以開啟斷點。客戶端然后在運行時間中執(zhí)行如箭頭5.1所示的信息包和/或執(zhí)行。然后,運行時間執(zhí)行如箭頭5.2所示的可執(zhí)行信息包的任務(wù)。當(dāng)執(zhí)行時,任務(wù)可能遇到先前設(shè)置的斷點。在這里,任務(wù)和斷點通信,遇到運行時間,如箭頭6所示。如箭頭7所示,運行時間將斷點調(diào)用發(fā)送到客戶端?,F(xiàn)在客戶端位于檢測執(zhí)行直到確定了斷點的位置并且研究發(fā)現(xiàn)問題源。如果滿意,如箭頭9所示,客戶端調(diào)用恢復(fù)信息包。如箭頭10所示,這種調(diào)用使得運行時間依次調(diào)用所有任務(wù)上的恢復(fù)程序。
附圖4示出了在可插拔部件中實現(xiàn)斷點調(diào)試所執(zhí)行的進程。如圖所示,進程從方框400到方框405,在這里客戶創(chuàng)建對象模型中的信息包。從這個進程到方框410,運行時間創(chuàng)建任務(wù)。然后在方框405中任務(wù)創(chuàng)建斷點。在方框420中響應(yīng)于斷點的創(chuàng)建,客戶端啟動斷點??蛻舳藞?zhí)行信息包425,在方框430中運行時間執(zhí)行任務(wù)。在方框435中任務(wù)遇到設(shè)置的斷點,在方框440遇到斷點通知給客戶端。在方框445中運行時間調(diào)用中止操作。在方框450中,直到滿意為止,客戶端調(diào)用恢復(fù)任務(wù),在方框455中運行時間調(diào)用恢復(fù)任務(wù)。進程進行到方框460中結(jié)束。
D.結(jié)論總之,這里所述的系統(tǒng)和方法提供了可插拔部件的斷點調(diào)試。然而可以理解的是本發(fā)明允許不同的修改和變化的結(jié)構(gòu)。并不想將本發(fā)明限制在這里所述的特定結(jié)構(gòu)。相反,在本發(fā)明的范圍和精神下,本發(fā)明覆蓋了所有的修改,可選的結(jié)構(gòu)和同等物。
還要注意的是本發(fā)明可以在各種計算機環(huán)境(既包括無線的也包括有線的計算機環(huán)境)、部分計算環(huán)境和真實世界環(huán)境中實施。這里所描述的各種技術(shù)可以用硬件來實施或者用軟件來實施,或者是二者的結(jié)合。優(yōu)選的,這些技術(shù)可以作為在可編程的計算機上執(zhí)行的計算機程序,每個所述計算機包括處理器,處理器可讀的存儲器媒體(包括易失的和非易失的存儲器和/或存儲元素),至少一個輸入設(shè)備和一個輸出設(shè)備。程序代碼被用于使用輸入設(shè)備輸入的數(shù)據(jù)以執(zhí)行上述的功能并產(chǎn)生輸出信息。輸出信息施加到一個或者多個輸出設(shè)備。優(yōu)選的,每個程序可以用高級程序或者面相對象的編程語言來實施,以和計算機系統(tǒng)進行通信。然而,如果需要還可以用匯編或者機器語言來實施。在任何情況下,語言可以是編譯或翻譯的語言。優(yōu)選的,每一個這樣的計算機程序存儲在一般計算機或者是特殊用途的計算機可以讀取的存儲媒體或者設(shè)備上(例如ROM或者磁盤),當(dāng)計算機讀取存儲媒體或者設(shè)備來執(zhí)行上述程序時配置和操作計算機。這種系統(tǒng)也可以考慮實施為計算機可讀取配置有計算機程序的存儲媒體,這種配置的存儲媒體致使計算機以特定的和預(yù)先定義的方式來進行操作。
盡管上面已經(jīng)詳細(xì)描述了本發(fā)明典型的實施例,本領(lǐng)域的技術(shù)人員容易理解的是,在實質(zhì)上不脫離本發(fā)明新穎性教導(dǎo)和優(yōu)點的情況下對本發(fā)明的實施例進行附加的修改是可能的。因此,這些和所有這樣的修改端口包括在本發(fā)明的范圍之內(nèi)。本發(fā)明可以用以下的權(quán)利要求來更好的進行解釋。
權(quán)利要求
1.對象模型調(diào)試方法,包括通過執(zhí)行環(huán)境的調(diào)試接口揭示一組斷點;以預(yù)定的間隔檢查斷點的狀態(tài);和響應(yīng)中止和恢復(fù)的請求。
2.根據(jù)權(quán)利要求1所述的方法,進一步包括在信息包配置部件和可插拔部件之間進行通信。
3.根據(jù)權(quán)利要求1所述的方法,進一步包括由調(diào)試接口接收輸入以處理,所述輸入指示用于執(zhí)行和配置信息包的指令。
4.根據(jù)權(quán)利要求1所述的方法,進一步包括在至少一個任務(wù)上設(shè)置斷點。
5.根據(jù)權(quán)利要求4所述的方法,進一步包括任務(wù)執(zhí)行期間任務(wù)遇到設(shè)置斷點。
6.根據(jù)權(quán)利要求5所述的方法,進一步包括將斷點傳送給調(diào)試接口。
7.根據(jù)權(quán)利要求6所述的方法,進一步包括在遇到設(shè)置斷點前由調(diào)試接口分析所述任務(wù)的狀態(tài)。
8.根據(jù)權(quán)利要求7所述的方法,進一步包括由調(diào)試接口恢復(fù)任務(wù)。
9.一種計算機可讀媒體,該媒體具有讓計算機執(zhí)行以下任務(wù)指令通過執(zhí)行環(huán)境的調(diào)試接口揭示一組斷點;以預(yù)定的間隔檢查斷點的狀態(tài);和響應(yīng)中止和恢復(fù)的請求。
10.對象模型調(diào)試方法,包括提供一接口管理器,所述接口管理器和所述對象模型的一個或多個部件進行通信;確定斷點的位置;執(zhí)行運行時間以遇到斷點。
11.根據(jù)權(quán)利要求10所述的方法,進一步包括執(zhí)行信息包。
12.根據(jù)權(quán)利要求11所述的方法,進一步包括執(zhí)行由于信息包執(zhí)行而產(chǎn)生的至少一個任務(wù)。
13.根據(jù)權(quán)利要求10所述的方法,所述確定步驟包括由接口管理器設(shè)置斷點。
14.根據(jù)權(quán)利要求10所述的方法,進一步包括根據(jù)遇到的斷點中止包含斷點的對象模型。
15.根據(jù)權(quán)利要求14所述的方法,進一步包括中止時分析對象模型部件以確定是否存在運行時間問題。
16.根據(jù)權(quán)利要求14所述的方法,進一步包括恢復(fù)中止的對象模型部件。
17.一種計算機可讀媒體,具有讓計算機執(zhí)行以下任務(wù)的指令提供一接口管理器,所述接口管理器和對象模型的一個或多個部件進行通信;確定斷點的位置;執(zhí)行運行時間以遇到斷點。
18.用于調(diào)試可插拔部件中的斷點的系統(tǒng),包括調(diào)試接口,能夠在運行期間和可插拔部件進行通信以觀察部件的行為并且控制部件;和斷點,在可插拔部件中設(shè)置所述斷點以便在運行期間當(dāng)遇到斷點時,調(diào)試接口能夠中止和/或恢復(fù)可插拔部件的操作,來觀察可插拔部件的操作。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),所述的調(diào)試接口在可插拔部件中設(shè)置斷點。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),所述調(diào)試接口顯示可插拔部件在運行期間和中止期間的狀態(tài)。
全文摘要
提供了一種可插拔部件斷點的調(diào)試。在一個具有擴展的可插拔部件的計算環(huán)境中,提供一種系統(tǒng)和方法在部件運行期間在不同的點設(shè)置斷點,以便可以發(fā)現(xiàn)、跟蹤、和解決錯誤。在一個示出的實施例中,計算環(huán)境包括了客戶端、運行時間和任務(wù)。操作中,客戶端和運行時間和任務(wù)進行通信以執(zhí)行調(diào)試操作。運行期間任務(wù)和客戶端通信并設(shè)置斷點。當(dāng)遇到斷點時任務(wù)中止,說明任務(wù)執(zhí)行中出現(xiàn)了問題,這樣客戶端能夠執(zhí)行調(diào)試。直到滿意后,客戶端恢復(fù)運行期間的任務(wù)操作。
文檔編號G06F9/44GK1573713SQ20041006847
公開日2005年2月2日 申請日期2004年6月21日 優(yōu)先權(quán)日2003年6月20日
發(fā)明者J·K·哈塞爾登, B·J·哈特曼 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1