專利名稱:嵌入式MIDlet調(diào)試軟件的斷點(diǎn)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式移動設(shè)備相應(yīng)軟件開發(fā)的調(diào)試技術(shù)領(lǐng)域,特別是涉及對 KVM虛擬機(jī)的遠(yuǎn)程調(diào)試支持的,嵌入式MIDlet調(diào)試軟件的斷點(diǎn)實(shí)現(xiàn)方法。
背景技術(shù):
科技的發(fā)展永遠(yuǎn)都要通過技術(shù)創(chuàng)新來實(shí)現(xiàn),而技術(shù)創(chuàng)新是沒有盡頭的。隨著 中國日漸成為世界最大的移動通訊與應(yīng)用市場,移動增值應(yīng)用服務(wù)迅速崛起, 這應(yīng)該就是繼互聯(lián)網(wǎng)之后最大的商機(jī)。智能手機(jī)在世界及中國的市場份額不斷 快速增長,各種創(chuàng)新手機(jī)軟件的開發(fā)和應(yīng)用正是推動移動增值服務(wù)市場不斷發(fā) 展前進(jìn)的動力來源,手機(jī)軟件開發(fā)漸入成熟。目前,手機(jī)游戲業(yè)務(wù),手機(jī)增值 業(yè)務(wù),移動商務(wù)應(yīng)用等領(lǐng)域正處于迅猛發(fā)展的階段。各大游戲公司,大型娛樂 網(wǎng)站,門戶網(wǎng)站,電子商務(wù),甚至到企業(yè)應(yīng)用,報(bào)刊媒體,電視廣播等機(jī)構(gòu)都 大力推出自己的移動業(yè)務(wù)。而即將到來的下一代通訊技術(shù)更是讓移動軟件開發(fā) 成為市場上份額最大的產(chǎn)業(yè)之一。
J2ME是目前技術(shù)開發(fā)的主體,其他市場需要的技術(shù)還有SYMBIANC++, WINDOWS MOBILE/CE C++。由于J2ME的技術(shù)先進(jìn),而且又能跨平臺運(yùn)行, 因此受到了眾多手機(jī)廠家的支持,甚至成為現(xiàn)在用戶購買手機(jī)的一項(xiàng)比較重要 的技術(shù)指標(biāo)。所以到目前為止,手機(jī)的游戲應(yīng)用平臺中,以支持J2ME的最多,
而且J2ME軟件開發(fā)商也有越來越多的趨勢,J2ME已成為2002年下半年之后 的行動游戲平臺主流。尤其在進(jìn)入04年之后,基于JSR184的Mobile 3D Graphics API for J2ME的3D游戲開始出現(xiàn),像索愛S700/K700/Z500以及西門子S65等 新機(jī)都開始支持在手機(jī)上運(yùn)行3D JAVA游戲。
phoneME是SUN Open Source Java中的一個(gè)重要項(xiàng)目,包含了 CLDC和CDC 的HotSpot實(shí)現(xiàn)以及多個(gè)JSR。相比起以前能下載到的RI, phoneME是一個(gè)真 正經(jīng)歷過眾多實(shí)際產(chǎn)品驗(yàn)證的,商業(yè)級的JavaME實(shí)現(xiàn)。運(yùn)行phoneME到當(dāng)代 的手機(jī)上便是自然而然的事。同時(shí),以J2ME平臺開發(fā)的程序叫做MIDlet,可 以直接從在線下載后離線運(yùn)行,或從PC通過數(shù)據(jù)線、紅外或者藍(lán)牙傳輸?shù)绞謾C(jī) 上。由于J2ME程序都很小,只有幾十K,所以又被稱為K-JAVA。由于K-JAVA (J2ME)是開放平臺,因此任何程序設(shè)計(jì)師甚至程序編寫愛好者都能到Sun網(wǎng) 站下載J2ME開發(fā)工具,為手機(jī)寫JAVA程序。然而Sun網(wǎng)站上的開發(fā)工具或 多或少存在一些問題,如配置復(fù)雜,專用性不足以及平臺不能得到快速更新; 尤其是對一個(gè)需要推出新的手機(jī)、新的平臺的企業(yè)來說,就要開發(fā)自己版本的 開發(fā)平臺。
調(diào)試工具是開發(fā)平臺中的不可缺少的一部分。每個(gè)開發(fā)人員都應(yīng)該使用調(diào)試 器或調(diào)試工具。調(diào)試器可以讓您單步調(diào)試代碼、凍結(jié)輸出并檢查變量。調(diào)試工 具可以幫助有經(jīng)驗(yàn)的開發(fā)人員更迅速地找到發(fā)生問題的位置。本軟件集就是基 于以上背景和技術(shù)條件下開發(fā)的MIDlet調(diào)試軟件。調(diào)試器是MIDlet開發(fā)平臺中 的一個(gè)必不可或缺的開發(fā)工具,因此開發(fā)這樣的調(diào)試工具是必要的。本嵌入式 手機(jī)標(biāo)準(zhǔn)Java軟件MIDlet調(diào)試軟件的一種斷點(diǎn)實(shí)現(xiàn)方法就是在這樣背景下的一
個(gè)基礎(chǔ)性功能。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供嵌入式手機(jī)標(biāo)準(zhǔn)Java軟件MIDlet調(diào)試軟件的一種斷 點(diǎn)實(shí)現(xiàn)方法。
本發(fā)明解決其技術(shù)問題采用的技術(shù)方案如下-
1) 建立雙向連接
嵌入式遠(yuǎn)程調(diào)試中分為三大組件,即JDWP調(diào)試器,調(diào)試代理和運(yùn)行MIDlet 的虛擬機(jī)。實(shí)現(xiàn)調(diào)試的第一步就是這三者之間建立雙向連接,即KDWP調(diào)試器和 調(diào)試代理建立JDWP連接,調(diào)試代理與虛擬機(jī)建立KDWP連接;
2) 加載類
調(diào)試器向調(diào)試代理發(fā)送加載class的命令,發(fā)來的數(shù)據(jù)包中包括要執(zhí)行的 MIDlet的class名稱,調(diào)試代理會為每個(gè)class名稱產(chǎn)生一個(gè)命令消息并依次 發(fā)送給KVM, KVM開始準(zhǔn)備加載MIDlet class;
3) 設(shè)置斷點(diǎn)
KVM會將調(diào)試器需求的bytecode設(shè)為斷點(diǎn)并應(yīng)答調(diào)試代理一個(gè)消息,接著 KVM再次阻塞自己;
4) 斷點(diǎn)操作
當(dāng)Java解釋器解釋到設(shè)為斷點(diǎn)的那條bytecode時(shí)立即停止執(zhí)行,向debug agent發(fā)送斷點(diǎn)到達(dá)信號,并阻塞自己;
5) 完成斷點(diǎn)操作
調(diào)試代理收到KVM的斷點(diǎn)到達(dá)消息后,在本地消息隊(duì)列中查找相應(yīng)的調(diào)試 代理的請求消息,形成應(yīng)答送Debugger;
本發(fā)明與背景技術(shù)相結(jié)合,具有的有益的效果是
本發(fā)明是一種嵌入式手機(jī)標(biāo)準(zhǔn)Java軟件MIDlet調(diào)試軟件的一種斷點(diǎn)實(shí)現(xiàn)方 法,其主要功能是對類似phoneME虛擬機(jī)提供MIDlet調(diào)試的一種斷點(diǎn)實(shí)現(xiàn)方法, 以對虛擬機(jī)軟件實(shí)現(xiàn)基礎(chǔ)遠(yuǎn)程調(diào)試的功能。
(1)基礎(chǔ)性。本方法實(shí)現(xiàn)了在嵌入式手機(jī)標(biāo)準(zhǔn)java軟件MIDlet調(diào)試軟件 的一種斷點(diǎn)實(shí)現(xiàn)方法。斷點(diǎn)是任何調(diào)試方法中的一種基礎(chǔ)性操作,在實(shí)現(xiàn)了這 一操作后,基于這一操作可以方便地實(shí)現(xiàn)更多更高級的調(diào)試功能,展示了本發(fā)
明的基礎(chǔ)性功能。
(2)高效性。本嵌入式手機(jī)標(biāo)準(zhǔn)Java軟件MIDlet調(diào)試軟件的一種斷點(diǎn)實(shí) 現(xiàn)具有具有通用性強(qiáng),利用調(diào)試代理充分節(jié)省了虛擬機(jī)的硬件資源,達(dá)到嵌入 式軟件的簡易調(diào)試能力。
圖1是本發(fā)明的實(shí)施過程示意圖;
具體實(shí)施例方式
本發(fā)明是一種嵌入式標(biāo)準(zhǔn)標(biāo)準(zhǔn)Java軟件MIDlet調(diào)試軟件的一種斷點(diǎn)實(shí)現(xiàn)方 法,下面結(jié)合圖1說明其具體實(shí)施過程。
1) 建立雙向連接
嵌入式遠(yuǎn)程調(diào)試中分為三大組件,即JDWP調(diào)試器,調(diào)試代理和運(yùn)行MIDlet 的虛擬機(jī)。實(shí)現(xiàn)調(diào)試的第一步就是這三者之間建立雙向連接,即KDWP調(diào)試器和 調(diào)試代理建立JDWP連接,調(diào)試代理與虛擬機(jī)建立KDWP連接。
具體連接實(shí)現(xiàn)是有每個(gè)組件的連接管理器和連接代理完成的,建立連接后 即為無錯(cuò)誤型連接,各種數(shù)據(jù)包的拼接,超時(shí),重發(fā)等操作由連接代理和連接 管理器完成。
2) 加載類
調(diào)試器向調(diào)試代理發(fā)送加載class的命令,發(fā)來的數(shù)據(jù)包中包括要執(zhí)行的 MIDlet的class名稱,調(diào)試代理會為每個(gè)class名稱產(chǎn)生一個(gè)命令消息并依次 發(fā)送給KVM, KVM開始準(zhǔn)備加載MIDlet class。
在嵌入式遠(yuǎn)程調(diào)試中,每一次操作都分為一次命令操作和一次或數(shù)次應(yīng)答 操作。當(dāng)兩端的連接建立后,調(diào)試代理進(jìn)入一個(gè)socket偵聽循環(huán),等待來自調(diào) 試器(用戶端)的命令,而KVM會阻塞自己,等待來自調(diào)試代理的resume命令。 接著調(diào)試器向調(diào)試代理發(fā)送加載class的命令,發(fā)來的數(shù)據(jù)包中包括要執(zhí)行的 MIDlet的class名稱,調(diào)試代理為每個(gè)class名稱產(chǎn)生一個(gè)命令消息并依次發(fā) 送給KVM。 KVM接到條時(shí)代發(fā)來的resume命令后開始準(zhǔn)備加載MIDlet class, 每次成功加載一個(gè)class后,KVM會向調(diào)試代理發(fā)送一個(gè)class加載成功的應(yīng)答 消息,然后再次阻塞自己。最后調(diào)試代理會向調(diào)試器應(yīng)答一個(gè)class加載成功
消息。
3) 設(shè)置斷點(diǎn)
調(diào)試器收到調(diào)試代理的classes準(zhǔn)備完畢的消息后,會檢査該class中是 否設(shè)有斷點(diǎn),如果沒有,KVM就以正常方式運(yùn)行;如果有斷點(diǎn),他會向調(diào)試代理 發(fā)送一個(gè)設(shè)置斷點(diǎn)命令以及與斷點(diǎn)有關(guān)的信息。調(diào)試代理也發(fā)送同樣的命令給 KVM,KVM會將對應(yīng)的bytecode插入斷點(diǎn)信息設(shè)為斷點(diǎn)并應(yīng)答調(diào)試代理一個(gè)消息, 接著KVM再次阻塞自己,等待下一條命令。
4) 斷點(diǎn)操作
調(diào)試器在接收到調(diào)試代理發(fā)來的端點(diǎn)設(shè)置完畢信號后,發(fā)送resume信號, 虛擬機(jī)KVM接收到resume信號后開始執(zhí)行當(dāng)前class對應(yīng)的bytecodes,當(dāng)Java 解釋器解釋到設(shè)為斷點(diǎn)的那條bytecode時(shí)立即停止執(zhí)行,向調(diào)試代理發(fā)送斷點(diǎn) 到達(dá)信號,再次阻塞自己等待命令。
5) 完成斷點(diǎn)操作
調(diào)試代理收到虛擬機(jī)KVM的斷點(diǎn)到達(dá)消息后,在本地消息池中査找相應(yīng)的 調(diào)試代理的請求消息,形成應(yīng)答信息送給調(diào)試器;
斷點(diǎn)操作是任何調(diào)試方法中的一種基礎(chǔ)性操作,在實(shí)現(xiàn)了這一操作后,基 于這一操作可以方便地實(shí)現(xiàn)更多更高級的調(diào)試功能,展示了本發(fā)明的基礎(chǔ)性功
權(quán)利要求
1、一種嵌入式MIDlet調(diào)試軟件的斷點(diǎn)實(shí)現(xiàn)方法,其特征在于,包括 1)建立雙向連接 嵌入式遠(yuǎn)程調(diào)試中分為三大組件,即JDWP調(diào)試器,調(diào)試代理和運(yùn)行MIDlet的虛擬機(jī);實(shí)現(xiàn)調(diào)試的第一步就是這三者之間建立雙向連接,即KDWP調(diào)試器和調(diào)試代理建立JDWP連接,調(diào)試代理與虛擬機(jī)建立KDWP連接;2)加載類調(diào)試器向調(diào)試代理發(fā)送加載class的命令,發(fā)來的數(shù)據(jù)包中包括要執(zhí)行的MIDlet的class名稱,調(diào)試代理為每個(gè)class名稱產(chǎn)生一個(gè)命令消息并依次發(fā)送給KVM,KVM開始準(zhǔn)備加載MIDlet class;3)設(shè)置斷點(diǎn)KVM將調(diào)試器需求的bytecode設(shè)為斷點(diǎn)并應(yīng)答調(diào)試代理一個(gè)消息,接著KVM再次阻塞自己;4)斷點(diǎn)操作當(dāng)Java解釋器解釋到設(shè)為斷點(diǎn)的那條bytecode時(shí)立即停止執(zhí)行,向debug agent發(fā)送斷點(diǎn)到達(dá)信號,并阻塞自己;5)完成斷點(diǎn)操作調(diào)試代理收到KVM的斷點(diǎn)到達(dá)消息后,在本地消息隊(duì)列中查找相應(yīng)的調(diào)試代理的請求消息,形成應(yīng)答送Debugger。
全文摘要
本發(fā)明涉及嵌入式移動設(shè)備相應(yīng)軟件開發(fā)的調(diào)試技術(shù)領(lǐng)域,旨在提供一種嵌入式MIDlet調(diào)試軟件的斷點(diǎn)實(shí)現(xiàn)方法。該方法包括建立雙向連接、加載類、設(shè)置斷點(diǎn)、斷點(diǎn)操作、完成斷點(diǎn)操作。本發(fā)明是一種嵌入式手機(jī)標(biāo)準(zhǔn)java軟件MIDlet調(diào)試軟件的一種斷點(diǎn)實(shí)現(xiàn)方法,其主要功能是對類似phoneME虛擬機(jī)提供MIDlet調(diào)試的一種斷點(diǎn)實(shí)現(xiàn)方法,以對虛擬機(jī)軟件實(shí)現(xiàn)基礎(chǔ)遠(yuǎn)程調(diào)試的功能,具有基礎(chǔ)性和高效性的特點(diǎn)。
文檔編號G06F11/36GK101364200SQ20081012082
公開日2009年2月11日 申請日期2008年9月18日 優(yōu)先權(quán)日2008年9月18日
發(fā)明者馮德貴, 鑫 劉, 俊 吳, 施青松, 歐陽雷, 繆良華, 羅尚虎, 威 胡, 劍 陳, 陳天洲 申請人:浙江大學(xué)