入代碼可W被計(jì)算機(jī)系統(tǒng)接收,用于編譯為邏輯桐察注入代碼運(yùn)行 時(shí)和作為邏輯桐察線程執(zhí)行。運(yùn)種代碼可W通過(guò)經(jīng)由開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)連接被提供 給開(kāi)發(fā)者的網(wǎng)絡(luò)瀏覽器接口來(lái)注入,諸如關(guān)于圖1和圖2所示出的。當(dāng)步驟410在進(jìn)行中并且 方法400的其余部分正在被執(zhí)行時(shí),計(jì)算機(jī)系統(tǒng)可W執(zhí)行各種運(yùn)行時(shí)線程,諸如注入代碼運(yùn) 行時(shí)。
[0084] 計(jì)算機(jī)系統(tǒng)可W在方法400期間為一個(gè)或多個(gè)用戶(hù)執(zhí)行運(yùn)行時(shí)線程。參考圖1,網(wǎng) 絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)140可W為經(jīng)由網(wǎng)絡(luò)120-1遠(yuǎn)程訪問(wèn)網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)140的用戶(hù)執(zhí)行 運(yùn)行時(shí)線程,其中網(wǎng)絡(luò)120-1可W是因特網(wǎng)。運(yùn)行時(shí)線程可W基于被提供給網(wǎng)絡(luò)服務(wù)計(jì)算機(jī) 系統(tǒng)用于編譯和/或執(zhí)行的其它注入代碼。正在被執(zhí)行的任何運(yùn)行時(shí)線程可W被網(wǎng)絡(luò)服務(wù) 計(jì)算機(jī)系統(tǒng)的虛擬機(jī)執(zhí)行。每個(gè)運(yùn)行時(shí)線程可W與特定用戶(hù)和網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)的HTTP 會(huì)話相關(guān)聯(lián)。運(yùn)些運(yùn)行時(shí)線程中的每個(gè)運(yùn)行時(shí)線程可W不帶調(diào)試功能地被執(zhí)行。正在執(zhí)行 運(yùn)行時(shí)線程的網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)的虛擬機(jī)可能正在運(yùn)行時(shí)模式下執(zhí)行運(yùn)些線程。
[0085] 在步驟420,開(kāi)發(fā)者可W向開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)提供注入代碼要帶調(diào)試功能地被執(zhí) 行的指示。從開(kāi)發(fā)者的角度看,運(yùn)可W被認(rèn)為是調(diào)試模式,盡管邏輯桐察注入代碼運(yùn)行時(shí)將 被虛擬機(jī)在運(yùn)行時(shí)模式下執(zhí)行。在步驟420,運(yùn)種指示可W被執(zhí)行方法400的網(wǎng)絡(luò)服務(wù)計(jì)算 機(jī)系統(tǒng)接收。在步驟430,開(kāi)發(fā)者可W提供要被調(diào)試的一個(gè)或多個(gè)任務(wù)流的指示。之前,開(kāi)發(fā) 者可能已選擇并且將注入代碼與適當(dāng)?shù)娜蝿?wù)流相關(guān)聯(lián)。在其中任務(wù)流被預(yù)定義并且不可被 開(kāi)發(fā)者編輯的情況下,運(yùn)種任務(wù)流可W具有允許注入代碼被調(diào)用的一個(gè)或多個(gè)預(yù)定義的鉤 點(diǎn)。運(yùn)種輸入可W由從要被執(zhí)行的任務(wù)流列表中進(jìn)行選擇的用戶(hù)來(lái)提供??商娲?,開(kāi)發(fā)者 可W提供希望被調(diào)試的一個(gè)或多個(gè)任務(wù)流的名稱(chēng)。附加地或可替代地,用于調(diào)試的一個(gè)或 多個(gè)任務(wù)流可W在步驟435的編譯之后被選擇(或取消)。通過(guò)指示用于調(diào)試的一個(gè)或多個(gè) 任務(wù)流,在注入代碼內(nèi)出現(xiàn)的其它任務(wù)流的執(zhí)行可W不導(dǎo)致調(diào)試功能被呈現(xiàn)給開(kāi)發(fā)者?;?于網(wǎng)絡(luò)瀏覽器的接口可W經(jīng)由網(wǎng)絡(luò)連接和開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)向開(kāi)發(fā)者提供對(duì)被確定為在 應(yīng)用內(nèi)出現(xiàn)的各種任務(wù)流的選擇。雖然開(kāi)發(fā)者可W選擇一個(gè)或多個(gè)任務(wù)流,但是對(duì)于本實(shí) 施例的其余部分,假定開(kāi)發(fā)者指定用于調(diào)試的單個(gè)任務(wù)流。在步驟430,網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系 統(tǒng)可W接收由開(kāi)發(fā)者選擇的任務(wù)流的指示。
[0086] 在步驟435,被注入的注入業(yè)務(wù)邏輯代碼可W被編譯為邏輯桐察注入代碼運(yùn)行時(shí)。 編譯可W由諸如圖2的編譯器160的編譯器來(lái)執(zhí)行。因?yàn)檎{(diào)試功能是所希望的,因此編譯過(guò) 程可W從正常的編譯來(lái)更改。因此,調(diào)試功能可W在語(yǔ)法樹(shù)級(jí)別被添加到業(yè)務(wù)邏輯代碼,如 關(guān)于圖3所詳細(xì)描述的,并且可W被編譯為邏輯桐察注入代碼運(yùn)行時(shí)。在步驟435的注入代 碼的編譯可W與一個(gè)或多個(gè)運(yùn)行時(shí)線程正在被網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)的虛擬機(jī)編譯和/或執(zhí) 行的同時(shí)發(fā)生。邏輯桐察注入代碼運(yùn)行時(shí)可W具有調(diào)試功能,但是可W不需要虛擬機(jī)為了 實(shí)現(xiàn)運(yùn)種功能而在調(diào)試模式下執(zhí)行。調(diào)試功能可W包括W下中的一個(gè)或多個(gè):開(kāi)發(fā)者在業(yè) 務(wù)邏輯代碼內(nèi)選擇一個(gè)或多個(gè)斷點(diǎn)的能力,在該一個(gè)或多個(gè)斷點(diǎn)處邏輯桐察注入代碼運(yùn)行 時(shí)的執(zhí)行將被停止;在逐個(gè)表達(dá)式的基礎(chǔ)上(實(shí)時(shí)地)單步執(zhí)行由開(kāi)發(fā)者提供的注入業(yè)務(wù)邏 輯代碼的能力;在執(zhí)行期間(實(shí)時(shí)地)查看(和/或修改)在業(yè)務(wù)邏輯代碼的表達(dá)式中出現(xiàn)的 變量值的能力;當(dāng)表達(dá)式開(kāi)始執(zhí)行時(shí)接收指示的能力;和/或當(dāng)表達(dá)式完成執(zhí)行時(shí)接收指示 的能力。其它調(diào)試功能也是可能的。在一些實(shí)施例中,邏輯桐察注入代碼運(yùn)行時(shí)被編譯為使 得調(diào)試功能被插入在已編譯代碼的所有任務(wù)流中。在其它實(shí)施例中,邏輯桐察注入代碼運(yùn) 行時(shí)被編譯為使得調(diào)試功能只在由開(kāi)發(fā)者特別選擇的任務(wù)流中可用。
[0087] 在步驟440,邏輯桐察注入代碼運(yùn)行時(shí)可W被網(wǎng)絡(luò)服務(wù)器的虛擬機(jī)作為邏輯桐察 線程執(zhí)行。因此,執(zhí)行發(fā)生在遠(yuǎn)離其中注入代碼可能已經(jīng)被接收的開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)。邏輯 桐察線程的執(zhí)行可W與一個(gè)或多個(gè)運(yùn)行時(shí)線程的執(zhí)行并發(fā)發(fā)生。虛擬機(jī)可W在虛擬機(jī)的運(yùn) 行模式下執(zhí)行邏輯桐察線程(W及正在被執(zhí)行的任何其它運(yùn)行時(shí)線程)。因此,虛擬機(jī)將所 有線程作為運(yùn)行時(shí)執(zhí)行并且沒(méi)有線程處于調(diào)試模式。但是,邏輯桐察線程具有調(diào)試功能,因 為邏輯桐察線程的代碼在編譯期間被修改。雖然邏輯桐察線程對(duì)于虛擬機(jī)而言表現(xiàn)為運(yùn)行 時(shí),但是在編譯期間的修改向開(kāi)發(fā)者提供了通常與正在調(diào)試模式下被操作的虛擬機(jī)相關(guān)聯(lián) 的功能。在邏輯桐察注入代碼運(yùn)行時(shí)中存在的調(diào)試功能可W包括:開(kāi)發(fā)者在業(yè)務(wù)邏輯代碼 內(nèi)設(shè)置一個(gè)或多個(gè)斷點(diǎn)(并且當(dāng)在執(zhí)行期間到達(dá)斷點(diǎn)時(shí)查看代碼和變量值)的能力;在執(zhí)行 期間在逐個(gè)表達(dá)式的基礎(chǔ)上(在實(shí)時(shí)執(zhí)行中)單步執(zhí)行由開(kāi)發(fā)者提供的注入代碼的能力;在 執(zhí)行期間(在實(shí)時(shí)執(zhí)行中)查看(和/或修改)在業(yè)務(wù)邏輯代碼的表達(dá)式中出現(xiàn)的變量值的能 力;當(dāng)表達(dá)式開(kāi)始執(zhí)行時(shí)接收指示的能力;和/或當(dāng)表達(dá)式完成執(zhí)行時(shí)接收指示的能力。
[0088] 邏輯桐察線程的執(zhí)行不會(huì)影響碰巧正在被執(zhí)行的任何運(yùn)行時(shí)線程的執(zhí)行(除了它 消耗存儲(chǔ)器、處理和網(wǎng)絡(luò)資源方面之外)。更具體而言,諸如允許開(kāi)發(fā)者設(shè)置斷點(diǎn)或允許與 邏輯桐察線程相關(guān)聯(lián)的業(yè)務(wù)邏輯注入代碼在逐個(gè)表達(dá)式的基礎(chǔ)上被執(zhí)行的調(diào)試功能不需 要運(yùn)種調(diào)試功能在運(yùn)行時(shí)線程中出現(xiàn)。類(lèi)似地,運(yùn)行時(shí)線程的執(zhí)行不影響邏輯桐察線程的 執(zhí)行(除了它消耗存儲(chǔ)器、處理和網(wǎng)絡(luò)資源方面之外)。雖然方法400只考慮了單個(gè)邏輯桐察 注入代碼運(yùn)行時(shí)被在運(yùn)行時(shí)模式下操作的虛擬機(jī)來(lái)作為線程編譯和執(zhí)行,但是多個(gè)邏輯桐 察注入代碼可W被同一網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)的同一虛擬機(jī)來(lái)作為線程編譯和/或執(zhí)行。
[0089] 在步驟450,當(dāng)正在執(zhí)行代碼時(shí),可W (通過(guò)邏輯桐察虛擬機(jī))檢查由虛擬機(jī)執(zhí)行的 每個(gè)表達(dá)式,W確定它是否與在步驟430由開(kāi)發(fā)者指示為希望用于調(diào)試的任務(wù)流相關(guān)聯(lián)。如 果是,則對(duì)于那個(gè)表達(dá)式,步驟460被執(zhí)行。在步驟460,使調(diào)試功能對(duì)開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)可 用。運(yùn)可W包括等待允許下一個(gè)表達(dá)式被執(zhí)行的輸入、向開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)輸出變量值、強(qiáng) 制執(zhí)行與由開(kāi)發(fā)者之前設(shè)置的表達(dá)式相關(guān)聯(lián)的任何斷點(diǎn)(其可W被邏輯桐察虛擬機(jī)存儲(chǔ))、 提供正在被(或?qū)⒁?執(zhí)行的表達(dá)式的指示、和/或接收要被用作變量值的輸入。
[0090] 在步驟450,如果確定表達(dá)式與不希望被調(diào)試的任務(wù)流相關(guān)聯(lián),則步驟470被執(zhí)行。 在步驟470,使得沒(méi)有調(diào)試功能對(duì)開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)可用。運(yùn)可W包括:不等待允許代碼的 下一行被執(zhí)行的輸入(繼續(xù)執(zhí)行而無(wú)需等待開(kāi)發(fā)者輸入)、不向開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)輸出變量 值、不強(qiáng)制執(zhí)行斷點(diǎn)、不提供正在被(或?qū)⒁?執(zhí)行的表達(dá)式的指示、和/或不接收或處理 要被用作變量值的輸入。步驟470可W包括邏輯桐察虛擬機(jī)自動(dòng)地向執(zhí)行邏輯桐察線程的 虛擬機(jī)提供指示執(zhí)行要繼續(xù)的輸入。隨著執(zhí)行繼續(xù),對(duì)于每個(gè)表達(dá)式,可W評(píng)估步驟450來(lái) 確定表達(dá)式是否是由開(kāi)發(fā)者指示為希望被調(diào)試的任務(wù)流的一部分。
[0091] 在運(yùn)種執(zhí)行期間,開(kāi)發(fā)者可W被允許修正哪一個(gè)或多個(gè)任務(wù)流要被調(diào)試。對(duì)被選 擇用于調(diào)試的任務(wù)流的運(yùn)種修改可W更改在步驟450做出的確定。例如,在特定的任務(wù)流正 在被執(zhí)行的同時(shí),開(kāi)發(fā)者可W切換用于那個(gè)任務(wù)流的調(diào)試功能是被啟用還是被停用。運(yùn)種 切換可能更改步驟450對(duì)于下一個(gè)被評(píng)估的表達(dá)式的結(jié)果。開(kāi)發(fā)者可W被允許按照需要多 次執(zhí)行運(yùn)種切換,W服務(wù)開(kāi)發(fā)者的調(diào)試目標(biāo)。
[0092] 在將邏輯桐察注入代碼運(yùn)行時(shí)作為由開(kāi)發(fā)者指示要被調(diào)試的任務(wù)流中的邏輯桐 察線程的執(zhí)行期間,線程的執(zhí)行可W暫停或進(jìn)入循環(huán)模式,直到LIVM向虛擬機(jī)指示執(zhí)行被 允許繼續(xù)。LIVM可W對(duì)每個(gè)表達(dá)式允許執(zhí)行繼續(xù),除非到達(dá)其中開(kāi)發(fā)者已針對(duì)那個(gè)表達(dá)式 指定了斷點(diǎn)的點(diǎn)。如果斷點(diǎn)出現(xiàn),則執(zhí)行可W被掛起,直到開(kāi)發(fā)者經(jīng)由LIUI向LI VM提供允許 繼續(xù)執(zhí)行的輸入。在斷點(diǎn)處,變量值W及哪個(gè)表達(dá)式要被執(zhí)行的指示可W經(jīng)由LIVM被輸出 至化IUI。在一些實(shí)施例中,在被選任務(wù)流中的每個(gè)表達(dá)式之后執(zhí)行可W停止,直到開(kāi)發(fā)者經(jīng) 由LIUI向LIVM指示執(zhí)行要繼續(xù)。
[0093] 圖5示出了用于針對(duì)任務(wù)流的調(diào)試的方法的另一種實(shí)施例。方法500可W分別由圖 1和2的系統(tǒng)100和/或系統(tǒng)200來(lái)執(zhí)行。方法500也可W由允許開(kāi)發(fā)者與正在編譯和執(zhí)行注入 代碼的遠(yuǎn)程網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)交互的一些其它形式的系統(tǒng)來(lái)執(zhí)行??蒞使用諸如開(kāi)發(fā)者 計(jì)算機(jī)的一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行方法500。用于執(zhí)行方法500的元件包括一個(gè)或多個(gè) 計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)。方法500的每個(gè)步驟可W利用計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行,其中計(jì)算機(jī)系統(tǒng)可W 包括彼此通信的一個(gè)或多個(gè)單獨(dú)的計(jì)算機(jī)。參考圖1和圖2,方法500的每個(gè)步驟可W由開(kāi)發(fā) 者計(jì)算機(jī)系統(tǒng)130的開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行。方法500的步驟可W由開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)來(lái) 執(zhí)行,而方法400由網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行。
[0094] 在步驟510,基于網(wǎng)絡(luò)的接口可W通過(guò)開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)呈現(xiàn)給開(kāi)發(fā)者?;诰W(wǎng)絡(luò) 的接口可W從可能正在執(zhí)行方法400的網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)接收?;诰W(wǎng)絡(luò)的接口允許開(kāi) 發(fā)者提供要被注入到網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)用于編譯和執(zhí)行的代碼。代碼可W被直接鍵入到 基于網(wǎng)絡(luò)的接口的代碼編輯器中或者預(yù)先編寫(xiě)代碼的一個(gè)或多個(gè)文件可W被選擇用于經(jīng) 由基于網(wǎng)絡(luò)的接口上傳到網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)。在步驟520,代碼可W經(jīng)由基于網(wǎng)絡(luò)的接口 和一個(gè)或多個(gè)網(wǎng)絡(luò)被傳送到網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)。被傳送到網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)的代碼可 W對(duì)應(yīng)于方法400的步驟410。
[0095] 在步驟530,基于網(wǎng)絡(luò)的接口可W向開(kāi)發(fā)者呈現(xiàn)對(duì)任務(wù)流的選擇,在該任務(wù)流期間 在步驟520傳送的代碼要被執(zhí)行。基于網(wǎng)絡(luò)的接口也可W具有供開(kāi)發(fā)者選擇由開(kāi)發(fā)者提供 的注入代碼是否要被編譯用于調(diào)試的選項(xiàng)。在步驟530,經(jīng)由基于網(wǎng)絡(luò)的接口,開(kāi)發(fā)者可W 指定注入代碼要被調(diào)試并且開(kāi)發(fā)者可W指定其中注入代碼被執(zhí)行的一個(gè)或多個(gè)任務(wù)流要 被調(diào)試。(對(duì)于運(yùn)個(gè)例子的目的,假定單個(gè)、第一任務(wù)流被指示了用于調(diào)試并且第二任務(wù)流 未被選擇用于調(diào)試)。在一些實(shí)施例中,用戶(hù)可W在稍后的時(shí)間里在方法500中選擇哪些任 務(wù)流要被調(diào)試。附加地,在步驟530,可W向開(kāi)發(fā)者呈現(xiàn)注入代碼并且可W允許開(kāi)發(fā)者指定 一個(gè)或多個(gè)斷點(diǎn)和/或指示要被調(diào)試的任務(wù)流的執(zhí)行是否應(yīng)該被執(zhí)行直到斷點(diǎn)或錯(cuò)誤發(fā)生 或者應(yīng)該在逐個(gè)表達(dá)式的基礎(chǔ)上被執(zhí)行。在步驟540,注入代碼要被調(diào)試和要被調(diào)試的任務(wù) 流的指示被傳送到網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)。在步驟540之后,方法400的各個(gè)步驟(諸如步驟 420至470)可W被網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)執(zhí)行。因此,網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)可W創(chuàng)建邏輯桐察 注入代碼運(yùn)行時(shí)并且可W將邏輯桐察注入代碼運(yùn)行時(shí)作為邏輯桐察線程執(zhí)行(邏輯桐察線 程由網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)的虛擬機(jī)在運(yùn)行時(shí)模式下執(zhí)行)。
[0096] 在步驟550,可W由開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)呈現(xiàn)用于由開(kāi)發(fā)者選擇用于調(diào)試的任務(wù)流 的調(diào)試功能。調(diào)試功能可W只提供給與已編譯的注入代碼對(duì)應(yīng)的任務(wù)流的部分。調(diào)試功能 可W只在被選擇用于調(diào)試的任務(wù)流開(kāi)始執(zhí)行時(shí)(或到達(dá)被選任務(wù)流內(nèi)的斷點(diǎn)時(shí))才呈現(xiàn)。對(duì) 于沒(méi)有被選擇的其它任務(wù)流,至少?gòu)拈_(kāi)發(fā)者的角度看,邏輯桐察線程可W作為運(yùn)行時(shí)線程 執(zhí)行。調(diào)試功能可W通過(guò)在網(wǎng)絡(luò)瀏覽器中作為基于網(wǎng)絡(luò)的接口的一部分的LIUI來(lái)呈現(xiàn)。調(diào) 試功能可W包括向開(kāi)發(fā)者呈現(xiàn)變量和相關(guān)聯(lián)的變量值的指示(W及可能地,修改運(yùn)些變量 值的機(jī)會(huì))W及在正在被執(zhí)行的(或?qū)⒁粓?zhí)行的或之前剛被執(zhí)行的)注入代碼內(nèi)的表達(dá)式 的指示。調(diào)試功能還可W包括用于單個(gè)表達(dá)式的執(zhí)行繼續(xù)的選項(xiàng)(W允許單步執(zhí)行邏輯桐 察線程)??蒞呈現(xiàn)另一個(gè)選項(xiàng)來(lái)允許執(zhí)行繼續(xù),直到斷點(diǎn)或錯(cuò)誤發(fā)生。在執(zhí)行期間,網(wǎng)絡(luò)服 務(wù)計(jì)算機(jī)系統(tǒng)可能正在執(zhí)行步驟450至470-一執(zhí)行注入代碼運(yùn)行時(shí)和為被選任務(wù)流提供 調(diào)試功能。在其它任務(wù)流期間,LIVM可能在指導(dǎo)虛擬機(jī)自動(dòng)繼續(xù)執(zhí)行(無(wú)需開(kāi)發(fā)者輸入)。
[0097] 在邏輯桐察線程的執(zhí)行期間,開(kāi)發(fā)者可W修改對(duì)被選擇要被調(diào)試的任務(wù)流的選 擇。附加地,可W經(jīng)由被呈現(xiàn)給開(kāi)發(fā)者的網(wǎng)絡(luò)接口選擇較少的或不同的任務(wù)流用于調(diào)試。在 要被調(diào)試的任務(wù)流中的運(yùn)種修改可W被遞送給網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)。參考圖2,任務(wù)流分析 器212在接收要被執(zhí)行的更新的任務(wù)流之后(在執(zhí)行期間)可W使得LIVM向開(kāi)發(fā)者提供用于 現(xiàn)在被選擇的任務(wù)流的調(diào)試功能。在步驟570,經(jīng)由開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)和基于網(wǎng)絡(luò)的接口向 開(kāi)發(fā)者提供用于修改的被選的一個(gè)或多個(gè)任務(wù)流的調(diào)試功能。當(dāng)邏輯桐察線程被網(wǎng)絡(luò)服務(wù) 計(jì)算機(jī)系統(tǒng)執(zhí)行時(shí),開(kāi)發(fā)者可W繼續(xù)修改哪些任務(wù)流要被調(diào)試。
[0098] 應(yīng)當(dāng)理解,在方法500正在被執(zhí)行的同時(shí),網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)的虛擬機(jī)在同一時(shí) 間可W為一個(gè)或多個(gè)其它開(kāi)發(fā)者和/或用戶(hù)執(zhí)行一個(gè)或多個(gè)其它邏輯桐察線程(基于相同 或不同的邏輯桐察注入代碼運(yùn)行時(shí))和一個(gè)或多個(gè)注入代碼運(yùn)行時(shí)。因此,在網(wǎng)絡(luò)服務(wù)計(jì)算 機(jī)系統(tǒng)的虛擬機(jī)在運(yùn)行時(shí)模式下工作的同一時(shí)間,網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)可能正在為多個(gè)開(kāi) 發(fā)者/用戶(hù)提供編譯、執(zhí)行(帶有或不帶有調(diào)試功能)。
[0099] 圖6-8提供了關(guān)于允許用戶(hù)和開(kāi)發(fā)者遠(yuǎn)程地與網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng)交互的分布式 系統(tǒng)可W如何被實(shí)現(xiàn)的附加細(xì)節(jié)。圖6示出了允許使用遠(yuǎn)程開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)的分布式系 統(tǒng)600的實(shí)施例。在圖示的實(shí)施例中,分布式系統(tǒng)600包括一個(gè)或多個(gè)客戶(hù)端計(jì)算設(shè)備602、 604、606和608(其可W表示用戶(hù)和/或開(kāi)發(fā)者計(jì)算機(jī)系統(tǒng)),其被配置為經(jīng)一個(gè)或多個(gè)網(wǎng)絡(luò) 610執(zhí)行和操作客戶(hù)端應(yīng)用,諸如網(wǎng)絡(luò)瀏覽器、私有客戶(hù)端(例如,Oracle?下orms)等。服務(wù) 器612(其可W是該網(wǎng)絡(luò)服務(wù)計(jì)算機(jī)系統(tǒng))可W經(jīng)由網(wǎng)絡(luò)610與遠(yuǎn)程客戶(hù)端計(jì)算設(shè)備602、 604、606和608通信地禪合。
[0100] 在各種實(shí)施例中,服務(wù)器612可W適于運(yùn)行由系統(tǒng)的部件中的一個(gè)或多個(gè)部件提 供的一個(gè)或多個(gè)服務(wù)或軟件應(yīng)用。在一些實(shí)施例中,運(yùn)些服務(wù)可W作為基于網(wǎng)絡(luò)或云的服 務(wù)或者根據(jù)軟件即服務(wù)(Software as a Service,SaaS)模型被提供給客戶(hù)端計(jì)算設(shè)備 602、604、606和/或608的用戶(hù)。操作客戶(hù)端計(jì)算設(shè)備602、604、606和/或608的用戶(hù)進(jìn)而可W 利用一個(gè)或多個(gè)客戶(hù)端應(yīng)用與服務(wù)器612交互,W利用由運(yùn)些部件提供的服務(wù)。
[0101] 在該圖繪出的配置中,系統(tǒng)600的軟件部件618、620和622被示為在服務(wù)器612上被 實(shí)現(xiàn)。在其它實(shí)施例中,系統(tǒng)600的部件中的一個(gè)或多個(gè)部件和/或由運(yùn)些部件提供的服務(wù) 也可W由客戶(hù)端計(jì)算設(shè)備602、604、606和/或608中的一個(gè)或多個(gè)來(lái)實(shí)現(xiàn)。操作客戶(hù)端計(jì)算 設(shè)備的用戶(hù)/開(kāi)發(fā)者然后可W利用一個(gè)或多個(gè)客戶(hù)端應(yīng)用來(lái)使用由運(yùn)些部件提供的服務(wù)。 運(yùn)些部件可W用硬件、固件、軟件或其組合來(lái)實(shí)現(xiàn)。應(yīng)當(dāng)認(rèn)識(shí)到,各種不同的系統(tǒng)配置是可 能的,運(yùn)些配置可W與分布式系統(tǒng)600不同。因此,在該圖中示出的實(shí)施例是用于實(shí)現(xiàn)實(shí)施 例系統(tǒng)的分布式系統(tǒng)的一個(gè)例子,而并非旨在進(jìn)行限制。
[0102] 客戶(hù)端計(jì)算設(shè)備602、604、606和/或608可W是運(yùn)行諸如Microsoft Windows Mobile、"''和/或諸如i〇S、Windows Phone、Android、BlackBerry 10、Palm OS等各種移動(dòng) 操作系統(tǒng)的軟件并且啟用因特網(wǎng)、電子郵件、短消息服務(wù)(SMS)、Blaekbe;rry?或其它通 信協(xié)議的便攜式手持設(shè)備(例如,iPhone?、蜂窩電話、iPad?、計(jì)算平板電腦、個(gè)人數(shù)字 助理(PDA))或可穿戴設(shè)備(例如,GooglL Glass?頭戴式顯示器)。客戶(hù)端計(jì)算設(shè)備可W是 通用個(gè)人計(jì)算機(jī),作為例子,該通用個(gè)人計(jì)算機(jī)包括運(yùn)行各種版本的Microsoft Windows@、.A卵Ie [VlaciiUosh'A和/或Linux操作系統(tǒng)的個(gè)人計(jì)算機(jī)和/或膝上型計(jì)算 機(jī)。客戶(hù)端計(jì)算設(shè)備可W是運(yùn)行各種商用UNIX?.或包括但不限于各種GNU/Linux操作系 統(tǒng)的類(lèi)UNIX操作系統(tǒng)(諸如例如Google化rome OS)中的任何一種的工作站計(jì)算機(jī)??商娲?地或附加地,客戶(hù)端計(jì)算設(shè)備602、604、606和608可W是能夠經(jīng)(一個(gè)或多個(gè))網(wǎng)絡(luò)610通信 的任何其它電子設(shè)備,諸如瘦客戶(hù)端計(jì)算機(jī)、啟用因特網(wǎng)的游戲系統(tǒng)(例如,具有或不具有 Kineet?手勢(shì)輸入設(shè)備的Microsoft Xbox游戲控制臺(tái))和/或個(gè)人消息傳送設(shè)備。
[0103] 雖然示例性分布式系統(tǒng)600被示為具有四個(gè)客戶(hù)端計(jì)算設(shè)備,但是任何數(shù)量的客 戶(hù)端計(jì)算設(shè)備都可W被支持。諸如具有傳感器的設(shè)備等的其它設(shè)備可W與服務(wù)器612交互。
[0104] 在分布式系統(tǒng)600中的(一個(gè)或多個(gè))網(wǎng)絡(luò)610可W是對(duì)本領(lǐng)域技術(shù)人員熟悉的、能 夠支持利用包括但不限于TCP/IP(傳輸控制協(xié)議/因特網(wǎng)協(xié)議)、SNA(系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu))、 IPX(因特網(wǎng)數(shù)據(jù)包交換KAppleTa化等各種商用協(xié)議中的任何一種的數(shù)據(jù)通信的任何類(lèi)型 的網(wǎng)絡(luò)。僅僅作為例子,(一個(gè)或多個(gè))網(wǎng)絡(luò)610可W是局域網(wǎng)(LAN),諸如基于W太網(wǎng)、令牌 環(huán)等的網(wǎng)絡(luò)。(一個(gè)或多個(gè))網(wǎng)絡(luò)610可W是廣域網(wǎng)和因特網(wǎng)。它可W包括虛擬網(wǎng)絡(luò),包括但 不限于虛擬專(zhuān)用網(wǎng)(VPN)、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)、公共交換電話網(wǎng)(PSTN)、紅外網(wǎng)絡(luò)、無(wú)線網(wǎng)絡(luò)(例 如,在任何電氣和電子協(xié)會(huì)(IEEE)802.11協(xié)議套件、藍(lán)牙和/或任何其它無(wú)線協(xié)議下操作的 網(wǎng)絡(luò));和/或運(yùn)些和/或其它網(wǎng)絡(luò)的任何組合。
[0105] 服務(wù)器612可W由一個(gè)或多個(gè)通用計(jì)算機(jī)、專(zhuān)用服務(wù)器計(jì)算機(jī)(作為例子,包括PC (個(gè)人電腦)服務(wù)器、UIMI服務(wù)器、中檔服務(wù)器、大型計(jì)算機(jī)、機(jī)架式服務(wù)器等)、服務(wù)器 群、服務(wù)器集群或者任何其它適當(dāng)?shù)牟贾煤?或組合組成。在各種實(shí)施例中,服務(wù)器612可W 適于運(yùn)行在上述公開(kāi)內(nèi)容中描述的一個(gè)或多個(gè)服務(wù)或軟件應(yīng)用。例如,服務(wù)器612可W對(duì)應(yīng) 于用于執(zhí)行根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的上述處理的服務(wù)器。
[0106] 服務(wù)器612可W運(yùn)行操作系統(tǒng),包括任何W上討論的操作系統(tǒng),W及任何商用的服 務(wù)器操作系統(tǒng)。服務(wù)器612也可W運(yùn)行各種附加的服務(wù)器應(yīng)用和/或中間層應(yīng)用中的任何一 種,該服務(wù)器應(yīng)用和/或中間層應(yīng)用包括HTTP(超文本傳輸協(xié)議)服務(wù)器、FTP(文件傳遞協(xié) 議)服務(wù)器、CGI(公共網(wǎng)關(guān)接口)服務(wù)器、JAY^?服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器等。示例性數(shù)據(jù)庫(kù) 服務(wù)器包括但不限于來(lái)自O(shè)racle ,Microsoft ,Sybase、IBM(國(guó)際商業(yè)機(jī)器公司)等的那些商 用數(shù)據(jù)庫(kù)服務(wù)器。
[0107] 在一些實(shí)現(xiàn)中,服務(wù)器612可W包括一個(gè)或多個(gè)應(yīng)用,W分析和整合從客戶(hù)端計(jì)算 設(shè)備602、604、606和608的用戶(hù)接收到的數(shù)據(jù)饋送和/或事件更新。作為例子,數(shù)據(jù)饋送和/ 或事件更新可W包括但不限于,Twitter?饋送、Facebook?更新或者從一個(gè)或多個(gè)第 =方信息源接收到的實(shí)時(shí)更新W及連續(xù)數(shù)據(jù)流,連續(xù)數(shù)據(jù)流可W包括與傳感器數(shù)據(jù)應(yīng)用、 金融報(bào)價(jià)機(jī)、網(wǎng)絡(luò)性能測(cè)量工具(例如,網(wǎng)絡(luò)監(jiān)視和流量管理應(yīng)用)、點(diǎn)擊流分析工具、汽車(chē) 交通監(jiān)視等相關(guān)的實(shí)時(shí)事件。服務(wù)器612也可W包括一個(gè)或多個(gè)應(yīng)用來(lái)經(jīng)由客戶(hù)端計(jì)算設(shè) 備602、604、606和608中的一個(gè)或多個(gè)顯示設(shè)備顯示該數(shù)據(jù)饋送和/或?qū)崟r(shí)事件。
[010引分布式系統(tǒng)600也可W包括一個(gè)或多個(gè)數(shù)據(jù)庫(kù)614和616。數(shù)據(jù)庫(kù)614和616可W駐 留在各種位置。作為例子,數(shù)據(jù)庫(kù)614和616中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)可W駐留在服務(wù)器612本 地的非臨時(shí)性存儲(chǔ)介質(zhì)上(和/或駐留在服務(wù)器612中)??商娲?,數(shù)據(jù)庫(kù)614和616可W遠(yuǎn) 離服務(wù)器612,并且經(jīng)由基于網(wǎng)絡(luò)的或?qū)S玫倪B接與服務(wù)器612通信。在一組實(shí)施例中,數(shù)據(jù) 庫(kù)614