亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

應(yīng)用程序調(diào)試方法和裝置的制作方法

文檔序號:6462000閱讀:222來源:國知局
專利名稱:應(yīng)用程序調(diào)試方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體上涉及計算機應(yīng)用技術(shù)領(lǐng)域,更具體地說,涉及應(yīng)用程序的 調(diào)試方法和裝置.
背景技術(shù)
在計算;MMt系統(tǒng)中, 一個進(jìn)程對應(yīng)于一個應(yīng)用程序,在調(diào)試或者運行 時, 一個應(yīng)用程序可以包含一個或多個進(jìn)程。在進(jìn)M序調(diào)試時,經(jīng)常需要 同時在若干不同應(yīng)用程序的進(jìn)程之間進(jìn)行調(diào)試,例如在基于COM或基于 DCOM的應(yīng)用程序的進(jìn)程之間,或者基于客戶-服務(wù)器關(guān)系的應(yīng)用程序的進(jìn) 程之間進(jìn)行調(diào)試。例如,如果程序員正在調(diào)試客戶應(yīng)用程序中的進(jìn)程,并且 客戶應(yīng)用程序中的該進(jìn)程請求服務(wù)器應(yīng)用程序中某進(jìn)程所提供的服務(wù),則現(xiàn) 有技術(shù)中沒有方便的方法實現(xiàn)在這兩個應(yīng)用程序的進(jìn)程之間進(jìn)行調(diào)試??紤] 下列的需要在若干進(jìn)程之間進(jìn)目試的情形。
1) OLE客戶應(yīng)用禾呈序調(diào)用InvokeHelper函數(shù)以請求由OLE月艮務(wù)器應(yīng) 用程序提供的OLE方法.
2) 網(wǎng)絡(luò)客戶應(yīng)用程序發(fā)送請求以調(diào)用服務(wù)器應(yīng)用程序的服務(wù),并等待直 到其接收到反饋。
3 ) DCOM客戶應(yīng)用程序調(diào)用由DCOM服務(wù)器應(yīng)用程序所提供的服務(wù)。
當(dāng)然,上述情形只是示例性而非限制性的,實踐中還存在其它需要在若 干應(yīng)用程序的進(jìn)程之間進(jìn)行調(diào)試的情形。
當(dāng)前通用的調(diào)試器不具有從當(dāng)前被調(diào)試的應(yīng)用程序的進(jìn)程i^v其它應(yīng) 用程序的進(jìn)程調(diào)試的功能。程序員必須手動地準(zhǔn)備進(jìn)入其它進(jìn)程調(diào)試的環(huán) 境。具體而言,如果程序員想要在調(diào)試客戶應(yīng)用程序的進(jìn)程期間iiAj良務(wù)器 應(yīng)用程序的進(jìn)程所提供的服務(wù)進(jìn)行調(diào)試(debuginto),則其應(yīng)當(dāng)分別為客戶 應(yīng)用程序和服務(wù)器應(yīng)用程序啟動調(diào)試器實例,并事先在服務(wù)器的調(diào)試器實例 中于被請求服務(wù)的代碼的第一條語句處設(shè)置斷點。如圖7所示,這種傳統(tǒng)的 在若干應(yīng)用程序的進(jìn)程之間調(diào)試的方法典型地通過以下步驟來實現(xiàn)1) 程序員啟動一個調(diào)試器實例,打開客戶應(yīng)用程序的項目,然后開始 調(diào)試客戶應(yīng)用程序。
2) 程序員在客戶應(yīng)用程序的調(diào)試器中執(zhí)行步過(step over)操作。
3 )程序員遇到請求服務(wù)器應(yīng)用程序中某進(jìn)程提供的服務(wù)的語句,因此 其想要立即進(jìn)入該服務(wù)的代碼進(jìn)行調(diào)試。
4) 程序員啟動一個新的調(diào)試器實例,打開服務(wù)器應(yīng)用程序的項目,并 將該新的調(diào)試器實例加載(attach)到服務(wù)器應(yīng)用程序。
5) 程序員在服務(wù)器應(yīng)用程序的源代碼中搜索所請求的服務(wù)名稱以找出 該服務(wù)的代碼的入口點,使得其能在該服務(wù)的代碼的第 一條語句處設(shè)置斷 點,
6) 程序員步過客戶調(diào)試器實例中請求服務(wù)的語句。結(jié)果服務(wù)器調(diào)試器 實例中的斷點被激活,使得程序員i4/v服務(wù)器應(yīng)用程序中該進(jìn)程所提供的服 務(wù)的代碼進(jìn)fr^試'
7) 程序員在該服務(wù)的代碼的入口點處刪除該斷點,因為該斷點是暫時 的,然后在服務(wù)器的調(diào)試器實例中進(jìn)行調(diào)試,直到從所請求的服務(wù)返回。
8) 返回請求服務(wù)的語句,程序員繼續(xù)在客戶應(yīng)用程序中調(diào)試。
可見,現(xiàn)有技術(shù)中的上述方法存在以下問題
*進(jìn)入其它應(yīng)用程序的進(jìn)程調(diào)試前的準(zhǔn)備工作耗時且繁瑣,導(dǎo)致效率低 下;
*通常在所請求的服務(wù)的代碼的入口點處設(shè)置的斷點是暫時的, 一旦該 斷點被激活,它就不再有用。程序員經(jīng)常忘記刪除該斷點,則該斷點 將在一個不相關(guān)的場景下被激活,將影響應(yīng)用程序的正常調(diào)試。

發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)中存在的問題,根據(jù)本發(fā)明的第一方面,提供了一種 調(diào)試應(yīng)用程序的方法,包括步驟
確定當(dāng)前調(diào)試的進(jìn)程所屬的應(yīng)用程序與要調(diào)試進(jìn)入的進(jìn)程所屬的另 一個應(yīng)用程序是不同的應(yīng)用程序;
基于所述確定步驟的確定結(jié)果,根據(jù)所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào) 試^的進(jìn)程之間的關(guān)聯(lián)關(guān)系來定位所述另 一個應(yīng)用程序,以及使得所述要調(diào)試^的進(jìn)程能夠被調(diào)試執(zhí)行;和
調(diào)試iiX所述ii程。
根據(jù)本發(fā)明的第二方面,提供了一種應(yīng)用程序調(diào)試裝置,包括
確定單元,用于確定當(dāng)前調(diào)試的進(jìn)程所屬的應(yīng)用程序與要調(diào)試1的 進(jìn)程所屬的另 一個應(yīng)用程序是不同的應(yīng)用程序;
調(diào)度單元,用于基于所述確定單元的確定結(jié)果,根據(jù)所述當(dāng)前調(diào)試的 進(jìn)程與所述要調(diào)試進(jìn)入的進(jìn)程之間的關(guān)聯(lián)關(guān)系來定位所述另 一個應(yīng)用程 序,以及使得所述要調(diào)試i^的進(jìn)程能夠被調(diào)試執(zhí)行;和
調(diào)試單元,用于響應(yīng)于所述調(diào)度單元的處理結(jié)果調(diào)試ii^所述進(jìn)程。


通過結(jié)合附圖對本發(fā)明的具體實施方式
的描述,本發(fā)明的以上的和其它 目的、特點和優(yōu)點將變得顯而易見,在附圖中
圖1是示出了根據(jù)本發(fā)明的應(yīng)用程序調(diào)試方法的一個實施例的流程簡
圖2是示出了實現(xiàn)如圖l所示的應(yīng)用程序調(diào)試方法的一個具體實例的流
程圖3示出了在根據(jù)圖2的實例中由調(diào)度器使用的服務(wù)-項目表的一個示
例;
圖4是示出了根據(jù)本發(fā)明的應(yīng)用程序調(diào)試方法的一個屏幕示例的部分
圖5是示出了根據(jù)本發(fā)明的另一個實施例,被配置成實現(xiàn)應(yīng)用程序的進(jìn) 程之間跨平臺調(diào)試的方法的示意圖;以及
圖6是示出了用于實現(xiàn)本發(fā)明的方法的應(yīng)用程序調(diào)試裝置的一個實施例 的才匡圖;以及
圖7是示出了現(xiàn)有技術(shù)中實現(xiàn)在不同應(yīng)用程序的進(jìn)程之間調(diào)試的方法的 流程簡圖。
具體實施方式
圖1是示出了根據(jù)本發(fā)明的應(yīng)用程序調(diào)試方法的一個實施例的流程簡
圖。如圖所示,本發(fā)明的應(yīng)用程序調(diào)試方法包括確定當(dāng)前調(diào)試的進(jìn)程所屬 的應(yīng)用程序與要調(diào)試進(jìn)入的進(jìn)程所屬的另 一個應(yīng)用程序是不同的應(yīng)用程序 (S110);基于所述確定步驟的確定結(jié)果,根據(jù)所述當(dāng)前調(diào)試的進(jìn)程與所述 要調(diào)試進(jìn)入的進(jìn)程之間的關(guān)聯(lián)關(guān)系來定位所述另 一個應(yīng)用程序,以及使得所 述要調(diào)試iiX的進(jìn)程能夠被調(diào)試執(zhí)行(S120);和,調(diào)試近入所述進(jìn)程(S130 )。
圖2是示出了實現(xiàn)圖1的應(yīng)用程序調(diào)試方法的一個具體實例的流程圖. 為了描述簡明起見,假設(shè)在此實例中所涉及的調(diào)試關(guān)系是客戶應(yīng)用程序A中 的進(jìn)程請求服務(wù)器應(yīng)用程序B中的進(jìn)程所提供服務(wù)的關(guān)系。當(dāng)然,本領(lǐng)域技 術(shù)人員了解,除了這種請求服務(wù)的關(guān)系以外,還存在不同應(yīng)用程序的進(jìn)程之 間需要彼此調(diào)試^的其它可能的調(diào)試關(guān)系,同樣也可應(yīng)用本發(fā)明方法來實 現(xiàn)各應(yīng)用程序的進(jìn)程之間的調(diào)試先、。
如圖2所示,調(diào)試器實例a和調(diào)試器實例b分別與客戶應(yīng)用程序A和服 務(wù)器應(yīng)用程序B相對應(yīng)。調(diào)試器實例a在調(diào)試客戶應(yīng)用程序進(jìn)程的過程中, 遇到請求服務(wù)器應(yīng)用程序B中某進(jìn)程所提供的服務(wù)的語句(S210),于^IJL 出"Ui艮務(wù)器應(yīng)用程序中的服務(wù)進(jìn)行調(diào)試"的命令(S215),從而啟動調(diào) 度器模塊。該調(diào)度器m分析客戶應(yīng)用程序A中當(dāng)前被調(diào)試進(jìn)程中的下一條 語句(S220),并確定是否該語句在請求服務(wù)器應(yīng)用程序B中該進(jìn)程所提供 的服務(wù)(S225) 如果不是,則M戶應(yīng)用程序A的進(jìn)程中的"步過"命令 中返回(S285),繼續(xù)對客戶應(yīng)用程序A的該進(jìn)程進(jìn)行調(diào)試(S2卯)。如果步 驟S225的確定結(jié)果為"是",即,該語句在請求服務(wù)器應(yīng)用程序B中該進(jìn)程 所提供的服務(wù),則調(diào)度器;j^根據(jù)應(yīng)用程序A的進(jìn)程與應(yīng)用程序B的進(jìn)程之 間的關(guān)聯(lián)關(guān)系獲得服務(wù)器應(yīng)用程序位置和該被請求服務(wù)的代碼的入口點 (S230)。隨后,調(diào)度器模塊確定被調(diào)用應(yīng)用程序B是否已被該調(diào)度器模塊 管理(S235) 如果沒有,則調(diào)度器模塊啟動調(diào)試器實例b并將其加載到月艮 務(wù)器應(yīng)用程序B (S240);否則,調(diào)度器模塊在調(diào)試器實例b中于被請求服 務(wù)的代碼入口點處自動地設(shè)置斷點(S250 )。調(diào)度器模塊然后在調(diào)試器實例a 中自動地發(fā)出"步過"命令(S255),使得在服務(wù)器應(yīng)用程序中被請求服務(wù) 的入口點處產(chǎn)生中斷(S260),對該被請求服務(wù)進(jìn)行調(diào)試,并刪除所i殳置的 暫時的斷點(S265, 270)。該被請求服務(wù)調(diào)試完成后返回,使得在客戶應(yīng)用 程序A的進(jìn)程中從"步過"命令返回(S275, S280, S285 )。此后,可繼續(xù) 調(diào)試客戶應(yīng)用程序的進(jìn):程(S2卯)。
從上面結(jié)合圖2的描述可知,在本發(fā)明的方法中,調(diào)度器模塊自動地啟動一個新的調(diào)試器實例,將該調(diào)試器實例加載到正確的服務(wù)器應(yīng)用程序,并 在所請求的服務(wù)的代碼的入口點處設(shè)置斷點,然后調(diào)度器模塊在客戶應(yīng)用程 序的調(diào)試器實例中啟動一個普通的步過命令。結(jié)果,該斷點將在服務(wù)器調(diào)試 器實例中被激活。然后,調(diào)度器模塊在服務(wù)器調(diào)試器實例中自動刪除該斷點。
可見,在本發(fā)明的方法的實現(xiàn)中,涉及以下三個問題需要解決
1) 調(diào)度器模塊如何獲得客戶應(yīng)用程序語句中的被請求服務(wù)的服務(wù)名, 以便該調(diào)度器模塊可觸發(fā)"進(jìn)入其它進(jìn)程調(diào)試"功能?
2) 調(diào)度器模塊如何定位正確的服務(wù)器應(yīng)用程序位置以及獲得與被請求 服務(wù)相關(guān)的項目名,以便調(diào)度器模塊能自動地創(chuàng)建新的調(diào)試器實例、打開正 確的項目、然后把調(diào)試器實例加載到正確的服務(wù)器應(yīng)用程序?
3) 調(diào)度器模塊如何獲得被請求服務(wù)的代碼入口點,以便其在服務(wù)器應(yīng) 用程序被加載后自動在新的調(diào)試器實例中^:置正確的斷點?
在本發(fā)明的一個實施例中,通過自動創(chuàng)建供調(diào)度器模塊在各應(yīng)用程序的 進(jìn)程之間調(diào)試時查詢的服務(wù)-項目表以便使得調(diào)度器模塊可實現(xiàn)在各應(yīng)用 程序的進(jìn)程之間進(jìn)行調(diào)試,從而來解決上述問題。該服務(wù)-項目表用于記錄 具有特定調(diào)試關(guān)系的應(yīng)用程序的進(jìn)程之間的關(guān)聯(lián)關(guān)系。這種特定的調(diào)試關(guān) 系,可以是如上所述的客戶應(yīng)用程序進(jìn)程調(diào)用服務(wù)器應(yīng)用程序中進(jìn)程所提供 的服務(wù)的關(guān)系,也可以是其它使得需要從一個應(yīng)用程序的進(jìn)程調(diào)試ii^其它 應(yīng)用程序的進(jìn):程的調(diào)試關(guān)系。
圖3示出了這種服務(wù)-項目表的一個示范例子。該表記錄了有關(guān)所請求 的服務(wù)的服務(wù)名稱、關(guān)鍵字(幫助定位服務(wù)器應(yīng)用程序進(jìn)程中被請求的服 務(wù))、服務(wù)器應(yīng)用程序位置(包括與服務(wù)器應(yīng)用程序相關(guān)的IP地址、與被請 求的服務(wù)相關(guān)的目標(biāo)文件路徑、服務(wù)器應(yīng)用程序中要調(diào)試進(jìn)入的進(jìn)程的進(jìn)程 ID)、被請求服務(wù)的代碼的入口點、與所涉及應(yīng)用程序(在該實例中是客戶 應(yīng)用程序和服務(wù)器應(yīng)用程序)相關(guān)的項目名稱等信息。根據(jù)上述對圖2中本 發(fā)明的方法的實現(xiàn)過程可知, 一旦獲得圖3的表中的各項信息,調(diào)度器模塊
序進(jìn)程中所請求的服務(wù)相關(guān)的一系列操作。
可通過遍歷操作系統(tǒng)中與應(yīng)用程序相關(guān)的項目配置文件的源代碼來創(chuàng) 建和維持如圖3中的表。調(diào)度器模塊搜索應(yīng)用程序源代碼中的關(guān)鍵字以獲取 所請求的服務(wù)名。關(guān)鍵字可以是默認(rèn)的,也可以是用戶自定義的。以 COM/DCOM架構(gòu)為例對此進(jìn)行詳細(xì)說明。在COM/DCOM客戶應(yīng)用程序中(以下面的源代碼為例),"InvokeHelper"是用于請求服務(wù)器應(yīng)用程序的 進(jìn)程所提供的服務(wù)的默認(rèn)關(guān)鍵字,在COM/DCOM服務(wù)器應(yīng)用程序中, "LPDISPATCH"是用來識別服務(wù)名的默認(rèn)關(guān)鍵字。
LPDISPATCH CiiServer::Createltem()
LPDISPATCH Return Value; 〃 Invoke the function by calling OLE GetNameID ("CreateItem", dspCreateltem);
InvokeHelper(dspCreateItem, DISPATCH—METHOD, VTDISPATCH,&Return Value, VTS—NONE);
return Return Value;
在客戶應(yīng)用程序當(dāng)前正在調(diào)試的上述源代碼中,通過InvokeHelper語句 觸發(fā)"i47v其它進(jìn)程調(diào)試"的功能。通過搜索"LPDISPATCH"或自定義的 關(guān)鍵字可確定所請求的服務(wù)的位置。然后調(diào)度器模塊通過查詢?nèi)鐖D3所示的 服務(wù)-項目表來確定該服務(wù)所屬的服務(wù)器應(yīng)用程序的位置、服務(wù)的代碼的入 口點等信息,以便可執(zhí)行"禮、其它進(jìn)程調(diào)試"的功能,雖然在該例子中佳: 用默認(rèn)的關(guān)鍵字,但是本發(fā)明的方法也允許自定義關(guān)鍵字以方便調(diào)度器^ 操作來定位所請求的服務(wù)。如果沒有定義關(guān)鍵字,則調(diào)度器模塊使用 COM/DCOM中的默認(rèn)關(guān)鍵字,例如"LPDISPATCH",來定位所請求的服 務(wù)。COM/DCOM接口典型地如下的源代碼所定義,其中源代碼的注釋中的 額夕卜關(guān)鍵字"〃Createltem tag for coordinator"和"GetWorklistFromName tag for coordinator"是可幫助定位所請求服務(wù)的位置的自定義關(guān)鍵字。此夕卜, 也可將入口點定義為在除了服務(wù)器應(yīng)用程序進(jìn)程中被請求服務(wù)的源代碼中 第一4^句之外的其它地方。由此,利用如圖3中所示的服務(wù)-項目表中的 信息,調(diào)度器模塊可正確定位被請求服務(wù)、確定要被加載調(diào)試器實例的正確 的服務(wù)器應(yīng)用程序,并獲得被請求服務(wù)的代碼的正確入口點.
LPDISPATCH CApplication:: Creatltem (LPCTSTR
ItemPid)〃Createltem tag for coordinatorLPDISPATCH CApplication::GetWorklistFromName (LPCTSTR strName)〃GetWorklistFromName tag for coordinator
一旦在調(diào)試客戶應(yīng)用程序時"進(jìn)入其它進(jìn)程調(diào)試"功能被觸發(fā),調(diào)度器
模塊將查詢服務(wù)一項目表,并分析調(diào)試器中當(dāng)前的語句。調(diào)度器模塊通過自 動分析可準(zhǔn)確地定位所請求的服務(wù)、確定與所請求的服務(wù)相關(guān)的服務(wù)器應(yīng)用
程序、創(chuàng)建新的調(diào)試器實例、打開正確的項目、然后把調(diào)試器實例加載到正 確的服務(wù)器應(yīng)用程序,進(jìn)而自動完成"t其它進(jìn)程調(diào)試"功能。
如圖3中所示的服務(wù)-項目表的構(gòu)建可以在任何時候進(jìn)行,既可以在調(diào) 度器模塊被啟動工作時進(jìn)行,也可以在未啟動調(diào)度器模塊的任何其它時間, 例如在生成相關(guān)項目的配置文件時進(jìn)行,只要確保調(diào)度器模塊在操作時該表 可用即可。容易理解,該服務(wù)一項目表的內(nèi)容需要根據(jù)所涉及應(yīng)用程序的項 目的配置文件的變化而動態(tài)地更新,以〗更調(diào)度器模塊可據(jù)此正確地建立應(yīng)用 程序的進(jìn)程之間的調(diào)試關(guān)系。
圖3中所示的該服務(wù)-項目表實際上是存儲有關(guān)應(yīng)用程序進(jìn)程之間的關(guān) 聯(lián)關(guān)系信息的映射表或數(shù)據(jù)庫,以供調(diào)度器#執(zhí)行"^其它進(jìn)程調(diào)試" 操作時使用,因此,只要能夠體現(xiàn)應(yīng)用程序進(jìn)程之間的這種關(guān)聯(lián)關(guān)系,可以 采用任何其它實現(xiàn)形式來代替該服務(wù)-項目表,例如,關(guān)系型數(shù)據(jù)庫,或者 一些基本的數(shù)據(jù)結(jié)構(gòu),如*、數(shù)組等。
從上述描述可知,調(diào)度器模塊負(fù)責(zé)協(xié)調(diào)若干調(diào)試器實例之間的操作,以 便這些調(diào)試器實例可彼此協(xié)作,從而方便地在不同應(yīng)用程序的進(jìn)程之間進(jìn)行 調(diào)試。雖然上述實施例中涉及兩個具有特定調(diào)試關(guān)系的應(yīng)用程序,即客戶應(yīng) 用程序和服務(wù)器應(yīng)用程序,但是,根據(jù)本發(fā)明,調(diào)度器模塊也可自動地建立 兩個以上應(yīng)用程序的進(jìn)程之間的調(diào)試關(guān)系。例如,在圖2所示的實例中,應(yīng) 用程序A的進(jìn)程調(diào)用應(yīng)用程序B中進(jìn)程所提供的服務(wù),當(dāng)i^A應(yīng)用程序B 中進(jìn)程所提供的服務(wù)進(jìn)行調(diào)試時,在調(diào)試過程中該應(yīng)用程序B的該進(jìn)程又調(diào) 用另外一個應(yīng)用程序C (未示出)中進(jìn)程所提供的服務(wù)。則在這種情況下, 調(diào)度器模塊可以按與上述圖2所示類似的方式在應(yīng)用程序B的進(jìn)程和應(yīng)用程 序C的進(jìn)程之間實現(xiàn)"進(jìn)入其它進(jìn)程調(diào)試"的操作,即,在調(diào)試應(yīng)用程序B 的進(jìn)程的過程中ii/v應(yīng)用程序C的進(jìn)程進(jìn)行調(diào)試。本領(lǐng)域技術(shù)人員理解,在 此需要建立調(diào)試關(guān)系的應(yīng)用程序的數(shù)量可以是不受限制的,可在這些應(yīng)用程 序的進(jìn)程之間實現(xiàn)如上所述的"嵌套式"的調(diào)試關(guān)系。此外,可用同一個調(diào) 試器對這些具有嵌套調(diào)試關(guān)系的應(yīng)用程序的進(jìn)程進(jìn)行調(diào)試,也可為各個應(yīng)用程序設(shè)置各自的調(diào)試器。如上所述,如果存在一個以上的調(diào)試器,則由調(diào)度 器模塊來協(xié)調(diào)這些調(diào)試器之間的操作配合關(guān)系。該調(diào)度器模塊例如可以是一 個調(diào)試器插件。在具體實現(xiàn)時,可通過在調(diào)試器操作界面中引入一個菜單項
例如"iiX其它進(jìn)程調(diào)試"以及相應(yīng)的快捷鍵(例如ctrl+Fll)來實現(xiàn)。 一旦 用戶在調(diào)試過程期間按下該快捷鍵,調(diào)度器模塊就將被激活以執(zhí)行"進(jìn)入其 它進(jìn)程調(diào)試"功能。本領(lǐng)域技術(shù)人員易于理解,調(diào)度器模塊也可采取其它方 式,例如該調(diào)度器模塊也可以作為獨立于調(diào)試器的功能模塊實現(xiàn)。
圖4是示出了根據(jù)本發(fā)明的方法的一個屏幕示例的部分圖。如圖所示, 例如在客戶應(yīng)用程序調(diào)試器界面上設(shè)置一個快捷鍵"F11"用來啟動"t 其它進(jìn)程調(diào)試"功能。當(dāng)按下此鍵時,激活調(diào)度器模塊,該調(diào)試器模塊根據(jù) 客戶應(yīng)用程序進(jìn)程與服務(wù)器應(yīng)用程序進(jìn)程之間的關(guān)聯(lián)關(guān)系(例如以服務(wù)一項 目表的形式體現(xiàn))來實現(xiàn)它們之間的調(diào)試連接關(guān)系,例如調(diào)試進(jìn)入的關(guān)系。 請注意,為了簡潔起見,圖4中僅示出了服務(wù)-項目表中的部分內(nèi)容。如果 使用同一個調(diào)試器對各應(yīng)用程序的進(jìn)程進(jìn)行調(diào)試時,則可在相同的調(diào)試器窗 口中對各應(yīng)用程序的進(jìn)程進(jìn)行調(diào)試。
此外,如圖3中的服務(wù)-項目表中的應(yīng)用程序位置可以是分布式的,換 句話說,本發(fā)明的方法例如可被配置在網(wǎng)絡(luò)環(huán)境中,并可祐^應(yīng)用到遠(yuǎn)程的調(diào) 試場景中.圖5是示出了祁^據(jù)本發(fā)明的另一個實施例被配置成在應(yīng)用程序之 間實現(xiàn)跨平臺調(diào)試的方法的示意圖。如圖5所示,當(dāng)計算機I中的應(yīng)用程序 A的進(jìn)程調(diào)用由計算機II中的應(yīng)用程序B的進(jìn)程所提供的服務(wù)時,計算機I 中調(diào)度器的實例A將通知運行在計算機II上的調(diào)度器的另一個實例B,以便 在應(yīng)用程序B的進(jìn)程所提供的服務(wù)代碼中正確地設(shè)置以及刪除斷點,從而實 現(xiàn)從計算機I中的應(yīng)用程序A的進(jìn)程ii^計算機I1中的應(yīng)用程序B的進(jìn)程 所提供的服務(wù)進(jìn)行調(diào)試。從圖5可看出,這種實現(xiàn)方案是跨平臺的。在圖5 中示出的該實施例中,調(diào)度器A和調(diào)度器B既可以^于同一個調(diào)度器的不 同的實例,也可以是屬于不同調(diào)度器的實例,而且,既可以為計算機I和II 分別配置不同的調(diào)試器A和調(diào)試器B,也可為計算機I和II配置同一個調(diào)試 器,從而來實現(xiàn)從計算機I中的應(yīng)用程序A的進(jìn)程調(diào)試^計算機I1中的應(yīng) 用程序B的進(jìn)程所提供的服務(wù)。當(dāng)為計算機I和II配置同一個調(diào)度器時,該 調(diào)度器可以被配置在調(diào)試器A側(cè),也可以被配置在調(diào)試器B側(cè),或者可以是 獨立于調(diào)試器A和調(diào)試器B的功能模塊。當(dāng)應(yīng)用程序A和應(yīng)用程序B分別 位于遠(yuǎn)程的平臺,例如計算機I和計算機II中時,不同平臺之間的信息交互 可通過各種遠(yuǎn)程通信方式,例如無線通信方式來實現(xiàn)。本發(fā)明的上述方法使得在不同應(yīng)用程序之間執(zhí)行"^其它進(jìn)程調(diào)試" 就象在同一個應(yīng)用程序的調(diào)試中執(zhí)行普通的"調(diào)試i^"操作,從而在若干
應(yīng)用程序的進(jìn)程之間調(diào)試變得與調(diào)試一個應(yīng)用程序的進(jìn)程一樣簡單,由此顯 著地提高了調(diào)試效率.
相應(yīng)地,本發(fā)明還提供了一種能夠執(zhí)行上述本發(fā)明的方法的應(yīng)用程序調(diào) 試裝置。如圖6所示,該應(yīng)用程序調(diào)試裝置600包括確定單元610,用于 確定當(dāng)前調(diào)試的進(jìn)程所屬的應(yīng)用程序與要調(diào)試進(jìn)入的進(jìn)程所屬的另一個應(yīng) 用程序是不同的應(yīng)用程序;調(diào)度單元620,用于基于所述確定單元的確定結(jié) 果,根據(jù)所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試t的進(jìn)程之間的關(guān)聯(lián)關(guān)系來定 位所述另一個應(yīng)用程序,以及使得所述要調(diào)試iiX的進(jìn)程能夠被調(diào)試執(zhí)行; 和調(diào)試單元630,用于響應(yīng)于所述調(diào)度單元的處理結(jié)果調(diào)試l所述進(jìn)程。 其中的調(diào)度單元620相應(yīng)于上述的調(diào)度器模塊。
根據(jù)一個實施例,調(diào)度單元620包括定位子單元610,用于當(dāng)所述當(dāng) 前調(diào)試的進(jìn)程請求所述要調(diào)試^/v的進(jìn)程所提供的服務(wù)時,定位所述另 一個 應(yīng)用程序以使得該另一個應(yīng)用程序ii^調(diào)試環(huán)境;斷點設(shè)置子單元620,用
調(diào)試ii^的進(jìn)程所提供的服務(wù)的代碼的入口點處設(shè)置斷點;和調(diào)試觸發(fā)子單 元630,用于觸發(fā)斷點以使得可在所述要調(diào)試1的進(jìn)程所提供的服務(wù)中進(jìn) 行調(diào)試,然后刪除斷點。
本領(lǐng)域技術(shù)人員理解,對本發(fā)明的應(yīng)用程序調(diào)試裝置600和調(diào)度單元620 進(jìn)行的配置例如可通過軟件、硬件或兩者相結(jié)合的方式來實現(xiàn)。
本發(fā)明還提出一種機器可讀程序,當(dāng)該程序安裝到機器,例如計算機中 并運行時,可執(zhí)行上述本發(fā)明的方法。
用于承載上逸機器可讀程序的存儲介質(zhì)也包括在本發(fā)明的公開中。所述 存儲介質(zhì)包括但不限于軟盤、光盤、磁光盤、存儲卡、存儲棒,等等。
盡管上面已經(jīng)通itXt本發(fā)明的具體實施例的描^本發(fā)明進(jìn)行了披露, 但是,應(yīng)該理解,本領(lǐng)域的技術(shù)人員可在所附權(quán)利要求的精神和范圍內(nèi)設(shè)計 對本發(fā)明的各種修改、改進(jìn)或者等同物。這些修改、改進(jìn)或者等同物也應(yīng)當(dāng) 被認(rèn)為包括在本發(fā)明的保護范圍內(nèi)。
權(quán)利要求
1. 一種調(diào)試應(yīng)用程序的方法,包括步驟確定當(dāng)前調(diào)試的進(jìn)程所屬的應(yīng)用程序與要調(diào)試進(jìn)入的進(jìn)程所屬的另一個應(yīng)用程序是不同的應(yīng)用程序;基于所述確定步驟的確定結(jié)果,根據(jù)所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試進(jìn)入的進(jìn)程之間的關(guān)聯(lián)關(guān)系來定位所述另一個應(yīng)用程序,以及使得所述要調(diào)試進(jìn)入的進(jìn)程能夠被調(diào)試執(zhí)行;和調(diào)試進(jìn)入所述進(jìn)程。
2. 如權(quán)利要求l所述的方法,其中,響應(yīng)于所述當(dāng)前調(diào)試 的進(jìn)程請求所述要調(diào)試進(jìn)入的進(jìn)程所提供的服務(wù),確定要調(diào)試進(jìn) 入該進(jìn)程。
3. 如權(quán)利要求2所述的方法,其中,所述當(dāng)前調(diào)試的進(jìn)程 與所述要調(diào)試ii^的進(jìn)程之間的關(guān)聯(lián)關(guān)系包括以下中的至少一 種所述要調(diào)試1的進(jìn)程所提供服務(wù)的服務(wù)名稱、所述被請求 的服務(wù)的代碼的入口點、與所述被請求的服務(wù)相關(guān)的項目的名 稱、用來定位所述被請求服務(wù)的位置的關(guān)鍵字、所述另一個應(yīng)用 程序的位置,其包含與所述另一個應(yīng)用程序相關(guān)的IP地址、與 所述被請求的服務(wù)相關(guān)的目標(biāo)文件5M圣、所述要調(diào)試i^的進(jìn)程 的進(jìn)程ID。
4.如權(quán)利要求3所述的方法,其中,通過所述應(yīng)用程序和 所述另一個應(yīng)用程序的源代碼中的默認(rèn)關(guān)鍵字或者用戶自定義 的關(guān)鍵字來確定所述被請求的服務(wù)的位置,以便根據(jù)所述關(guān)聯(lián)關(guān) 系來確定所述另 一個應(yīng)用程序的位置。
5.如權(quán)利要求4所述的方法,其中,通過對與所述被請求 的服務(wù)相關(guān)的項目的配置文件的源代碼進(jìn)行分析來獲得所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試it^的進(jìn)程之間的關(guān)聯(lián)關(guān)系。
6.如權(quán)利要求5所述的方法,其中,通過映射表、關(guān)系型 數(shù)據(jù)庫、數(shù)據(jù)鏈表、數(shù)組中的至少一種來存儲所述當(dāng)前調(diào)試的進(jìn) 程與所述要調(diào)試1的進(jìn)程之間的關(guān)聯(lián)關(guān)系。
7.如權(quán)利要求1-6中任一項所述的方法,其中,所述的定 位所述另 一個應(yīng)用程序以及使得所述要調(diào)試i^的進(jìn)程能夠被 調(diào)試執(zhí)行的步驟包括響應(yīng)于所述當(dāng)前調(diào)試的進(jìn)程請求所述要調(diào)試進(jìn)入的進(jìn)程所 提供的服務(wù),定位所述另一個應(yīng)用程序以使得該另一個應(yīng)用程序 l調(diào)試環(huán)境;根據(jù)當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試進(jìn)入的進(jìn)程之間的關(guān)聯(lián) 關(guān)系在所述要調(diào)試進(jìn)入的進(jìn)程所提供的服務(wù)的代碼的入口點處 設(shè)置斷點;和觸發(fā)所述斷點以使得可在所述要調(diào)試進(jìn)入的進(jìn)程所提供的 服務(wù)中進(jìn)行調(diào)試,然后刪除斷點。
8.如權(quán)利要求l-7中任一項所述的方法,其中,所述另一 個應(yīng)用程序是在相對于所述當(dāng)前調(diào)試的應(yīng)用程序為本地的運行 平臺中或者在相對于所述應(yīng)用程序為遠(yuǎn)程的運行平臺中的應(yīng)用 程序。
9. 一種應(yīng)用程序調(diào)試裝置,包括確定單元,用于確定當(dāng) 前調(diào)試的進(jìn)程所屬的應(yīng)用程序與要調(diào)試進(jìn)入的進(jìn)程所屬的另一 個應(yīng)用程序是不同的應(yīng)用程序;調(diào)度單元,用于基于所述確定單元的確定結(jié)果,根據(jù)所述當(dāng) 前調(diào)試的進(jìn)程與所述要調(diào)試進(jìn)入的進(jìn)程之間的關(guān)聯(lián)關(guān)系來定位 所述另一個應(yīng)用程序,以及使得所述要調(diào)試進(jìn)入的進(jìn)程能夠被調(diào)試執(zhí)行;和調(diào)試單元,用于響應(yīng)于所述調(diào)度單元的處理結(jié)果調(diào)試i^所 述進(jìn)程。
10.如權(quán)利要求9所述的應(yīng)用程序調(diào)試裝置,其中,所述確定單元被配置成響應(yīng)于所述當(dāng)前調(diào)試的進(jìn)程請求所述要調(diào)試進(jìn) 入的進(jìn)程所提供的服務(wù),確定要調(diào)試進(jìn)入該進(jìn)程。
11.如權(quán)利要求10所述的應(yīng)用程序調(diào)試裝置,其中,所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試進(jìn)入的進(jìn)程之間的關(guān)聯(lián)關(guān)系包括以下中的至少一種所述要調(diào)試進(jìn)入的進(jìn)程所提供月艮務(wù)的服務(wù)名 稱、所述被請求的服務(wù)的代碼的入口點、與所述被請求的服務(wù)相 關(guān)的項目的名稱、用來定位所述被請求服務(wù)的位置的關(guān)鍵字、所 述另一個應(yīng)用程序的位置,其包含與所述另 一個應(yīng)用程序相關(guān)的 IP地址、與所述被請求的服務(wù)相關(guān)的目標(biāo)文件路徑、所述要調(diào) 試i^X的進(jìn)程的ii禾呈ID。
12.如權(quán)利要求11所述的應(yīng)用程序調(diào)試裝置,其中,通過 所述應(yīng)用程序和所述另 一個應(yīng)用程序的源代碼中的默認(rèn)關(guān)鍵字 或者用戶自定義的關(guān)鍵字來確定所述被請求的服務(wù)的位置,以便 根據(jù)所述關(guān)聯(lián)關(guān)系來確定所述另 一個應(yīng)用程序的位置。
13.如權(quán)利要求12所述的應(yīng)用程序調(diào)試裝置,其中,通過 對與所述被請求的服務(wù)相關(guān)的項目的配置文件的源代碼進(jìn)行分 析來獲得所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試ii^的進(jìn)程之間的 關(guān)聯(lián)關(guān)系。
14.如權(quán)利要求13所述的應(yīng)用程序調(diào)試裝置,其中,通過 映射表、關(guān)系型數(shù)據(jù)庫、數(shù)據(jù)M、數(shù)組中的至少一種來存儲所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試1的進(jìn)程之間的關(guān)聯(lián)關(guān)系。
15.如權(quán)利要求9-14中任一項所述的應(yīng)用程序調(diào)試裝置, 其中,所述調(diào)度單元包括定位子單元,用于響應(yīng)于所述當(dāng)前調(diào)試的進(jìn)程請求所述要調(diào) 試1的進(jìn)程所提供的服務(wù),定位所述另一個應(yīng)用程序以使得該 另一個應(yīng)用程序l調(diào)試環(huán)境;斷點設(shè)置子單元,用于根據(jù)當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試進(jìn) 入的進(jìn)程之間的關(guān)聯(lián)關(guān)系在所述要調(diào)試進(jìn)入的進(jìn)程所提供的服 務(wù)的代碼的入口點處設(shè)置斷點;和調(diào)試觸發(fā)子單元,用于觸發(fā)斷點以使得可在所述要調(diào)試1 的進(jìn)程所提供的服務(wù)中進(jìn)行調(diào)試,然后刪除斷點。
16.如權(quán)利要求15所述的應(yīng)用程序調(diào)試裝置,其中,所述 另一個應(yīng)用程序是在相對于所述當(dāng)前調(diào)試的應(yīng)用程序為本地的 運行平臺中或者在相對于所述應(yīng)用程序為遠(yuǎn)程的運行平臺中的 應(yīng)用程序。
全文摘要
本發(fā)明提供了一種調(diào)試應(yīng)用程序的方法,包括步驟確定當(dāng)前調(diào)試的進(jìn)程所屬的應(yīng)用程序與要調(diào)試進(jìn)入的進(jìn)程所屬的另一個應(yīng)用程序是不同的應(yīng)用程序;基于所述確定步驟的確定結(jié)果,根據(jù)所述當(dāng)前調(diào)試的進(jìn)程與所述要調(diào)試進(jìn)入的進(jìn)程之間的關(guān)聯(lián)關(guān)系來定位所述另一個應(yīng)用程序,以及使得所述要調(diào)試進(jìn)入的進(jìn)程能夠被調(diào)試執(zhí)行;和調(diào)試進(jìn)入所述進(jìn)程。該方法使得“進(jìn)入其它應(yīng)用程序的進(jìn)程調(diào)試”就象在同一個應(yīng)用程序的調(diào)試中執(zhí)行普通的“調(diào)試進(jìn)入”操作,調(diào)試若干應(yīng)用程序的進(jìn)程變得與調(diào)試一個應(yīng)用程序一樣簡單。由此使得調(diào)試效率顯著提高。此外,本發(fā)明還提供了一種實現(xiàn)上述方法的調(diào)試裝置。
文檔編號G06F11/36GK101546289SQ20081008881
公開日2009年9月30日 申請日期2008年3月28日 優(yōu)先權(quán)日2008年3月28日
發(fā)明者張建鑫 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1