本發(fā)明涉及一種互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種開(kāi)發(fā)調(diào)試方法及裝置。
背景技術(shù):
目前隨著移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,移動(dòng)終端的web前端開(kāi)發(fā)越來(lái)越多。受限于移動(dòng)終端性能、屏幕尺寸的影響,用于真機(jī)調(diào)試的工具特別缺乏,因此有必要提供一種適用于真機(jī)調(diào)試的web前端調(diào)試技術(shù),其中,真機(jī)調(diào)試是使用真機(jī)(如:移動(dòng)終端)進(jìn)行測(cè)試并獲取真機(jī)運(yùn)行時(shí)的調(diào)試信息的調(diào)試方法。在現(xiàn)有技術(shù)方案中,主要包括以下幾種調(diào)試方案:第一類alert提示框類型,該類型在代碼中插入“alert(‘some debug info’)”語(yǔ)句,當(dāng)代碼運(yùn)行到調(diào)試行,在頁(yè)面中彈出提示框,顯示調(diào)試信息;第二類頁(yè)面console控制臺(tái)類型,該類型在頁(yè)面中構(gòu)建一個(gè)調(diào)試控制臺(tái),調(diào)試信息可以隨時(shí)打印在頁(yè)面中;第三類jsconsole類型,該類型首先使用websocket將調(diào)試信息以網(wǎng)絡(luò)請(qǐng)求的方式發(fā)送到j(luò)sconsole服務(wù)器,然后jsconsole服務(wù)器將調(diào)試信息返回客戶端進(jìn)行顯示。但是,上述幾種開(kāi)發(fā)調(diào)試方式可能出現(xiàn)頁(yè)面卡住、調(diào)試不穩(wěn)定或者依賴服務(wù)器顯示速度慢等技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例所要解決的技術(shù)問(wèn)題在于,提供一種開(kāi)發(fā)調(diào)試的方法及裝置,可以提高開(kāi)發(fā)調(diào)試效率,并提高開(kāi)發(fā)調(diào)試的穩(wěn)定性以及安全性。
為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種開(kāi)發(fā)調(diào)試的方法,包括:
當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求;
使用預(yù)裝的調(diào)試代理工具Fiddler攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試 信息;
將獲取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示以提示用戶對(duì)所述程序進(jìn)行調(diào)試。
可選的,所述使用預(yù)裝的調(diào)試代理工具Fiddler攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求包括:
使用預(yù)裝的調(diào)試代理工具Fiddler,通過(guò)監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求。
可選的,所述網(wǎng)絡(luò)調(diào)試請(qǐng)求包括調(diào)試會(huì)話標(biāo)識(shí),所述使用預(yù)裝的調(diào)試代理工具Fiddler攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息包括:
根據(jù)所述調(diào)試會(huì)話標(biāo)識(shí),從攔截的多個(gè)服務(wù)請(qǐng)求中查詢所述網(wǎng)絡(luò)調(diào)試請(qǐng)求;
從查詢到的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
可選的,所述將獲取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示以提示用戶對(duì)所述程序進(jìn)行調(diào)試包括:
將所述調(diào)試信息從字符串類型轉(zhuǎn)化為JSON數(shù)據(jù)類型進(jìn)行顯示。
可選的,所述當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求之前,還包括:
建立與所述虛擬服務(wù)器的網(wǎng)絡(luò)連接。
相應(yīng)地,本發(fā)明實(shí)施例提供了一種開(kāi)發(fā)調(diào)試的裝置,包括:
請(qǐng)求發(fā)送模塊,用于當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求;
信息獲取模塊,用于使用預(yù)裝的調(diào)試代理工具Fiddler攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息;
信息顯示模塊,用于將獲取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示以提示用戶對(duì)所述程序進(jìn)行調(diào)試。
可選的,所述信息獲取模塊具體用于:
使用預(yù)裝的調(diào)試代理工具Fiddler,通過(guò)監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求。
可選的,所述信息獲取模塊包括:
請(qǐng)求查詢單元,用于根據(jù)所述調(diào)試會(huì)話標(biāo)識(shí),從攔截的多個(gè)服務(wù)請(qǐng)求中查詢所述網(wǎng)絡(luò)調(diào)試請(qǐng)求;
信息獲取單元,用于從查詢到的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
可選的,所述信息顯示模塊,還用于將所述調(diào)試信息從字符串類型轉(zhuǎn)化為JSON數(shù)據(jù)類型進(jìn)行顯示。
可選的,所述裝置還包括:
連接建立模塊,用于建立與所述虛擬服務(wù)器的網(wǎng)絡(luò)連接。
本發(fā)明實(shí)施例中首先在程序運(yùn)行到調(diào)試代碼處時(shí)發(fā)起網(wǎng)絡(luò)調(diào)試請(qǐng)求;然后使用預(yù)裝的調(diào)試代理工具Fiddler攔截網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取調(diào)試信息,最后將從網(wǎng)絡(luò)調(diào)試請(qǐng)求獲取到調(diào)試信息作為網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示,調(diào)試的整個(gè)過(guò)程均在本地完成,因此不僅可以提高開(kāi)發(fā)調(diào)試效率,而且提高開(kāi)發(fā)調(diào)試的穩(wěn)定性以及安全性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明提出的一種開(kāi)發(fā)調(diào)試方法的第一實(shí)施例的流程示意圖;
圖2是本發(fā)明實(shí)施例提供的調(diào)試信息顯示效果示意圖;
圖3是本發(fā)明提出的一種開(kāi)發(fā)調(diào)試方法的第二實(shí)施例的流程示意圖;
圖4是本發(fā)明實(shí)施例提出的一種開(kāi)發(fā)調(diào)試裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例提出的開(kāi)發(fā)調(diào)試裝置中信息獲取模塊的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實(shí)施例提出的另一種開(kāi)發(fā)調(diào)試裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參考圖1,圖1是本發(fā)明提出的一種開(kāi)發(fā)調(diào)試方法的第一實(shí)施例的流程示意圖。本實(shí)施例的執(zhí)行主體可以為個(gè)人電腦,如圖所示,本發(fā)明實(shí)施例中的方法包括:
S101,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求。
具體實(shí)現(xiàn)中,為了獲知程序運(yùn)行的執(zhí)行過(guò)程,用戶在程序的每個(gè)執(zhí)行階段可以插入調(diào)試代碼,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),程序通過(guò)執(zhí)行相關(guān)調(diào)用函數(shù)打印出插入的調(diào)試代碼,從而用戶可以獲知程序運(yùn)行到調(diào)試代碼處的時(shí)間點(diǎn),或者如果在打印的調(diào)試信息中未查找到目標(biāo)調(diào)試代碼,用戶可以確定程序在該目標(biāo)調(diào)試代碼對(duì)應(yīng)的執(zhí)行階段存在問(wèn)題。在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)調(diào)試請(qǐng)求可以為HTTP(Hypertext transfer protocol,超文本傳送協(xié)議)請(qǐng)求,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),可以以ajax(Asynchronous JavaScript and XML)的形式向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的HTTP請(qǐng)求。例如:當(dāng)程序運(yùn)行到調(diào)試代碼fc.log('something want to display',{name:'aslin',age:'23',job:'code farmer'},{fcflag:'print 1'})處時(shí),向虛擬服務(wù)器http://fiddler.fc.com接口發(fā)送HTTP請(qǐng)求。其中,fcflag對(duì)應(yīng)的參數(shù)print 1為調(diào)試會(huì)話標(biāo)識(shí)。需要說(shuō)明的是,http://fiddler.fc.com接口在實(shí)際網(wǎng)絡(luò)中并不存在。
可選的,在向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求之前,可以建立與所述虛擬服務(wù)器的網(wǎng)絡(luò)連接。
S102,使用預(yù)裝的調(diào)試代理工具Fiddler攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
具體實(shí)現(xiàn)中,可以首先啟動(dòng)并運(yùn)行預(yù)裝的調(diào)試代理工具Fiddler,使用預(yù)裝的調(diào)試代碼工具Fiddler監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口,通過(guò)監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口攔截所 述網(wǎng)絡(luò)調(diào)試請(qǐng)求,然后通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。其中,該插件為調(diào)用上述預(yù)裝的調(diào)試代理工具Fiddler中的多個(gè)調(diào)用接口并編譯出的在windows下可安裝執(zhí)行的程序。需要說(shuō)明的是,通過(guò)預(yù)設(shè)的網(wǎng)絡(luò)端口可以向虛擬服務(wù)器發(fā)送多個(gè)服務(wù)請(qǐng)求,預(yù)裝的調(diào)試代碼工具可以對(duì)所有的上述多個(gè)服務(wù)請(qǐng)求進(jìn)行攔截。
進(jìn)一步的,所述網(wǎng)絡(luò)調(diào)試請(qǐng)求可以包括調(diào)試會(huì)話標(biāo)識(shí),可以根據(jù)所述調(diào)試會(huì)話標(biāo)識(shí),從攔截的多個(gè)服務(wù)請(qǐng)求中查詢所述網(wǎng)絡(luò)調(diào)試請(qǐng)求;從查詢到的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
S103,將獲取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示以提示用戶對(duì)所述程序進(jìn)行調(diào)試。
具體實(shí)現(xiàn)中,一次網(wǎng)絡(luò)調(diào)試請(qǐng)求可以分為客戶端對(duì)虛擬服務(wù)器發(fā)送請(qǐng)求以及虛擬服務(wù)器響應(yīng)客戶端的請(qǐng)求兩個(gè)階段,從上述步驟可知,虛擬服務(wù)器http://fiddler.fc.com接口在實(shí)際網(wǎng)絡(luò)中并不存在,使用預(yù)裝的調(diào)試代理工具Fiddler攔截網(wǎng)絡(luò)調(diào)試請(qǐng)求之后,網(wǎng)絡(luò)調(diào)試請(qǐng)求并不發(fā)往實(shí)際網(wǎng)絡(luò),可以將獲取到的所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容。
可選的,可以將所述調(diào)試信息從字符串類型轉(zhuǎn)化為JSON(JavaScript Object Notation)數(shù)據(jù)類型進(jìn)行顯示。如圖2所示,圖2是調(diào)試代碼fc.log('something want to display',{name:'aslin',age:'23',job:'code farmer'},{fcflag:'print 1'})執(zhí)行完成后打印出的以JSON數(shù)據(jù)類型顯示的效果圖,從而向用戶展示調(diào)試信息的數(shù)據(jù)結(jié)構(gòu),方便用戶操作。
本發(fā)明實(shí)施例中首先在程序運(yùn)行到調(diào)試代碼處時(shí)發(fā)起網(wǎng)絡(luò)調(diào)試請(qǐng)求;然后使用預(yù)裝的調(diào)試代理工具Fiddler攔截網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取調(diào)試信息,最后將從網(wǎng)絡(luò)調(diào)試請(qǐng)求獲取到調(diào)試信息作為網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示,調(diào)試的整個(gè)過(guò)程均在本地完成,因此不僅可以提高開(kāi)發(fā)調(diào)試效率,而且提高開(kāi)發(fā)調(diào)試的穩(wěn)定性以及安全性。
請(qǐng)參考圖3,圖3是本發(fā)明提出的一種開(kāi)發(fā)調(diào)試方法的第二實(shí)施例的流程示 意圖。本實(shí)施例的執(zhí)行主體可以為個(gè)人電腦,如圖所示,本發(fā)明實(shí)施例中的方法包括:
S301,建立與所述虛擬服務(wù)器的網(wǎng)絡(luò)連接。
S302,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求。
具體實(shí)現(xiàn)中,為了獲知程序運(yùn)行的執(zhí)行過(guò)程,用戶在程序的每個(gè)執(zhí)行階段可以插入調(diào)試代碼,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),程序通過(guò)執(zhí)行相關(guān)調(diào)用函數(shù)打印出插入的調(diào)試代碼,從而用戶可以獲知程序運(yùn)行到調(diào)試代碼處的時(shí)間點(diǎn),或者如果在打印的調(diào)試信息中未查找到目標(biāo)調(diào)試代碼,用戶可以確定程序在該目標(biāo)調(diào)試代碼對(duì)應(yīng)的執(zhí)行階段存在問(wèn)題。在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)調(diào)試請(qǐng)求可以為HTTP(Hypertext transfer protocol,超文本傳送協(xié)議)請(qǐng)求,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),可以以ajax(Asynchronous JavaScript and XML)的形式向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的HTTP請(qǐng)求。例如:當(dāng)程序運(yùn)行到調(diào)試代碼fc.log('something want to display',{name:'aslin',age:'23',job:'code farmer'},{fcflag:'print 1'})處時(shí),向虛擬服務(wù)器http://fiddler.fc.com接口發(fā)送HTTP請(qǐng)求。其中,fcflag對(duì)應(yīng)的參數(shù)print 1為調(diào)試會(huì)話標(biāo)識(shí)。需要說(shuō)明的是,http://fiddler.fc.com接口在實(shí)際網(wǎng)絡(luò)中并不存在。
S303,使用預(yù)裝的調(diào)試代理工具Fiddler,通過(guò)監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
具體實(shí)現(xiàn)中,可以首先啟動(dòng)并運(yùn)行預(yù)裝的調(diào)試代理工具Fiddler,使用預(yù)裝的調(diào)試代碼工具Fiddler監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口,通過(guò)監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,然后通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。其中,該插件為調(diào)用上述預(yù)裝的調(diào)試代理工具Fiddler中多個(gè)調(diào)用接口并編譯出的在windows下可安裝執(zhí)行的程序。需要說(shuō)明的是,通過(guò)預(yù)設(shè)的網(wǎng)絡(luò)端口可以向虛擬服務(wù)器發(fā)送多個(gè)服務(wù)請(qǐng)求,預(yù)裝的調(diào)試代碼工具可以對(duì)所有的上述多個(gè)服務(wù)請(qǐng)求進(jìn)行攔截。
進(jìn)一步的,所述網(wǎng)絡(luò)調(diào)試請(qǐng)求可以包括調(diào)試會(huì)話標(biāo)識(shí),可以根據(jù)所述調(diào)試 會(huì)話標(biāo)識(shí),從攔截的多個(gè)服務(wù)請(qǐng)求中查詢所述網(wǎng)絡(luò)調(diào)試請(qǐng)求;從查詢到的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
S304,將獲取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示以提示用戶對(duì)所述程序進(jìn)行調(diào)試。
具體實(shí)現(xiàn)中,一次網(wǎng)絡(luò)調(diào)試請(qǐng)求可以分為客戶端對(duì)虛擬服務(wù)器發(fā)送請(qǐng)求以及虛擬服務(wù)器響應(yīng)客戶端的請(qǐng)求兩個(gè)階段,從上述步驟可知,虛擬服務(wù)器http://fiddler.fc.com接口在實(shí)際網(wǎng)絡(luò)中并不存在,使用預(yù)裝的調(diào)試代理工具Fiddler攔截網(wǎng)絡(luò)調(diào)試請(qǐng)求之后,網(wǎng)絡(luò)調(diào)試請(qǐng)求并不發(fā)往實(shí)際網(wǎng)絡(luò),可以將獲取到的所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容。
可選的,可以將所述調(diào)試信息從字符串類型轉(zhuǎn)化為JSON(JavaScript Object Notation)數(shù)據(jù)類型進(jìn)行顯示。如圖2所示,圖2是調(diào)試代碼fc.log('something want to display',{name:'aslin',age:'23',job:'code farmer'},{fcflag:'print 1'})執(zhí)行完成后打印出的以JSON數(shù)據(jù)類型顯示的效果圖,從而向用戶展示調(diào)試信息的數(shù)據(jù)結(jié)構(gòu),方便用戶操作。
本發(fā)明實(shí)施例中首先在程序運(yùn)行到調(diào)試代碼處時(shí)發(fā)起網(wǎng)絡(luò)調(diào)試請(qǐng)求;然后使用預(yù)裝的調(diào)試代理工具Fiddler攔截網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取調(diào)試信息,最后將從網(wǎng)絡(luò)調(diào)試請(qǐng)求獲取到調(diào)試信息作為網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示,調(diào)試的整個(gè)過(guò)程均在本地完成,因此不僅可以提高開(kāi)發(fā)調(diào)試效率,而且提高開(kāi)發(fā)調(diào)試的穩(wěn)定性以及安全性。
如圖4所示,圖4是本發(fā)明實(shí)施例提出的一種開(kāi)發(fā)調(diào)試裝置的結(jié)構(gòu)示意圖,如圖所示,本發(fā)明實(shí)施例中的裝置包括:
請(qǐng)求發(fā)送模塊401,用于當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求。
具體實(shí)現(xiàn)中,為了獲知程序運(yùn)行的執(zhí)行過(guò)程,用戶在程序的每個(gè)執(zhí)行階段可以插入調(diào)試代碼,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),程序通過(guò)執(zhí)行相關(guān)調(diào)用函數(shù)打印出插入的調(diào)試代碼,從而用戶可以獲知程序運(yùn)行到調(diào)試代碼處的時(shí)間點(diǎn), 或者如果在打印的調(diào)試信息中未查找到目標(biāo)調(diào)試代碼,用戶可以確定程序在該目標(biāo)調(diào)試代碼對(duì)應(yīng)的執(zhí)行階段存在問(wèn)題。在本發(fā)明實(shí)施例中,網(wǎng)絡(luò)調(diào)試請(qǐng)求可以為HTTP(Hypertext transfer protocol,超文本傳送協(xié)議)請(qǐng)求,當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),可以以ajax(Asynchronous JavaScript and XML)的形式向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的HTTP請(qǐng)求。例如:當(dāng)程序運(yùn)行到調(diào)試代碼fc.log('something want to display',{name:'aslin',age:'23',job:'code farmer'},{fcflag:'print 1'})處時(shí),向虛擬服務(wù)器http://fiddler.fc.com接口發(fā)送HTTP請(qǐng)求。其中,fcflag對(duì)應(yīng)的參數(shù)print 1為調(diào)試會(huì)話標(biāo)識(shí)。需要說(shuō)明的是,http://fiddler.fc.com接口在實(shí)際網(wǎng)絡(luò)中并不存在。
信息獲取模塊402,用于使用預(yù)裝的調(diào)試代理工具Fiddler攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。其中,所述網(wǎng)絡(luò)調(diào)試請(qǐng)求可以包括調(diào)試會(huì)話標(biāo)識(shí)。
具體實(shí)現(xiàn)中,可以首先啟動(dòng)并運(yùn)行預(yù)裝的調(diào)試代理工具Fiddler,使用預(yù)裝的調(diào)試代碼工具Fiddler監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口,通過(guò)監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,然后通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。其中,該插件為調(diào)用上述預(yù)裝的調(diào)試代理工具Fiddler中多個(gè)調(diào)用接口并編譯出的在windows下可安裝執(zhí)行的程序。需要說(shuō)明的是,通過(guò)預(yù)設(shè)的網(wǎng)絡(luò)端口可以向虛擬服務(wù)器發(fā)送多個(gè)服務(wù)請(qǐng)求,預(yù)裝的調(diào)試代碼工具可以對(duì)所有的上述多個(gè)服務(wù)請(qǐng)求進(jìn)行攔截。
進(jìn)一步的,如圖5所示,信息獲取模塊402還可以進(jìn)一步包括:
請(qǐng)求查詢單元501,用于根據(jù)所述調(diào)試會(huì)話標(biāo)識(shí),從攔截的多個(gè)服務(wù)請(qǐng)求中查詢所述網(wǎng)絡(luò)調(diào)試請(qǐng)求。
信息獲取單元502,用于從查詢到的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
信息顯示模塊403,用于將獲取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示以提示用戶對(duì)所述程序進(jìn)行調(diào)試。
具體實(shí)現(xiàn)中,一次網(wǎng)絡(luò)調(diào)試請(qǐng)求可以分為客戶端對(duì)虛擬服務(wù)器發(fā)送請(qǐng)求以 及虛擬服務(wù)器響應(yīng)客戶端的請(qǐng)求兩個(gè)階段,從上述步驟可知,虛擬服務(wù)器http://fiddler.fc.com接口在實(shí)際網(wǎng)絡(luò)中并不存在,使用預(yù)裝的調(diào)試代理工具Fiddler攔截網(wǎng)絡(luò)調(diào)試請(qǐng)求之后,網(wǎng)絡(luò)調(diào)試請(qǐng)求并不發(fā)往實(shí)際網(wǎng)絡(luò),可以將取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容。
可選的,可以將所述調(diào)試信息從字符串類型轉(zhuǎn)化為JSON(JavaScript Object Notation)數(shù)據(jù)類型進(jìn)行顯示。如圖2所示,圖2是調(diào)試代碼fc.log('something want to display',{name:'aslin',age:'23',job:'code farmer'},{fcflag:'print 1'})執(zhí)行完成后打印出的以JSON數(shù)據(jù)類型顯示的效果圖,從而向用戶展示調(diào)試信息的數(shù)據(jù)結(jié)構(gòu),方便用戶操作。
可選的,如圖4所示,開(kāi)發(fā)調(diào)試裝置還可以進(jìn)一步包括:
連接建立模塊404,用于建立與所述虛擬服務(wù)器的網(wǎng)絡(luò)連接。
本發(fā)明實(shí)施例中首先在程序運(yùn)行到調(diào)試代碼處時(shí)發(fā)起網(wǎng)絡(luò)調(diào)試請(qǐng)求;然后使用預(yù)裝的調(diào)試代理工具Fiddler攔截網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取調(diào)試信息,最后將從網(wǎng)絡(luò)調(diào)試請(qǐng)求獲取到調(diào)試信息作為網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示,調(diào)試的整個(gè)過(guò)程均在本地完成,因此不僅可以提高開(kāi)發(fā)調(diào)試效率,而且提高開(kāi)發(fā)調(diào)試的穩(wěn)定性以及安全性。
圖6是本發(fā)明實(shí)施例提出的一種開(kāi)發(fā)調(diào)試裝置的另一結(jié)構(gòu)示意圖。如圖所示,所述開(kāi)發(fā)調(diào)試裝置可以包括:至少一個(gè)處理器601,例如CPU,至少一個(gè)接收器603,至少一個(gè)存儲(chǔ)器604,至少一個(gè)發(fā)送器605,至少一個(gè)通信總線602。其中,通信總線602用于實(shí)現(xiàn)這些組件之間的連接通信。其中,本發(fā)明實(shí)施例中的開(kāi)發(fā)調(diào)試裝置的接收器603和發(fā)送器605可以是有線發(fā)送端口,也可以為無(wú)線設(shè)備,例如包括天線裝置,用于與虛擬服務(wù)器進(jìn)行信令或數(shù)據(jù)的通信。存儲(chǔ)器604可以是高速RAM存儲(chǔ)器,也可以是非不穩(wěn)定的存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器。存儲(chǔ)器604可選的還可以是至少一個(gè)位于遠(yuǎn)離前述處理器601的存儲(chǔ)裝置。存儲(chǔ)器604中存儲(chǔ)一組程序代碼,且處理器601用于調(diào)用存儲(chǔ)器604中存儲(chǔ)的程序代碼,用于執(zhí)行以下操作:
當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),通過(guò)發(fā)送器605向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求;
使用預(yù)裝的調(diào)試代理工具Fiddler攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求,并通過(guò)所述調(diào)試代理工具Fiddler中預(yù)先編寫的插件從攔截的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息;
將獲取到所述調(diào)試信息作為所述網(wǎng)絡(luò)調(diào)試請(qǐng)求的響應(yīng)內(nèi)容進(jìn)行顯示以提示用戶對(duì)所述程序進(jìn)行調(diào)試。
可選的,處理器601調(diào)用存儲(chǔ)器604中存儲(chǔ)的程序,處理器601還可以執(zhí)行:
使用預(yù)裝的調(diào)試代理工具Fiddler,通過(guò)監(jiān)聽(tīng)預(yù)設(shè)的網(wǎng)絡(luò)端口攔截所述網(wǎng)絡(luò)調(diào)試請(qǐng)求。
可選的,處理器601調(diào)用存儲(chǔ)器604中存儲(chǔ)的程序,所述網(wǎng)絡(luò)調(diào)試請(qǐng)求包括調(diào)試會(huì)話標(biāo)識(shí),處理器601還可以執(zhí)行:
根據(jù)所述調(diào)試會(huì)話標(biāo)識(shí),從攔截的多個(gè)服務(wù)請(qǐng)求中查詢所述網(wǎng)絡(luò)調(diào)試請(qǐng)求;
從查詢到的所述網(wǎng)絡(luò)調(diào)試請(qǐng)求中獲取所述調(diào)試信息。
可選的,處理器601調(diào)用存儲(chǔ)器604中存儲(chǔ)的程序,處理器601還可以執(zhí)行:
將所述調(diào)試信息從字符串類型轉(zhuǎn)化為JSON數(shù)據(jù)類型進(jìn)行顯示。
可選的,處理器601調(diào)用存儲(chǔ)器604中存儲(chǔ)的程序,所述當(dāng)程序運(yùn)行到調(diào)試代碼處時(shí),向虛擬服務(wù)器發(fā)送攜帶有調(diào)試信息的網(wǎng)絡(luò)調(diào)試請(qǐng)求之前,還可以執(zhí)行:
建立與所述虛擬服務(wù)器的網(wǎng)絡(luò)連接。
需要說(shuō)明的是,對(duì)于前述的各個(gè)方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某一些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳 細(xì)描述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:閃存盤、只讀存儲(chǔ)器(英文:Read-Only Memory,簡(jiǎn)稱:ROM)、隨機(jī)存取器(英文:Random Access Memory,簡(jiǎn)稱:RAM)、磁盤或光盤等。
以上對(duì)本發(fā)明實(shí)施例所提供的內(nèi)容下載方法及相關(guān)設(shè)備、系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。