遠(yuǎn)程調(diào)試方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種遠(yuǎn)程調(diào)試方法和裝置,其中,該方法包括:接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,其中,調(diào)試請(qǐng)求中攜帶調(diào)試指令和用于指示調(diào)試目標(biāo)的指示信息;響應(yīng)調(diào)試請(qǐng)求來對(duì)指示信息指示的調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作;將調(diào)試的結(jié)果通過HTTP協(xié)議返回給宿主機(jī)。本發(fā)明解決了在通過宿主機(jī)對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程調(diào)試時(shí),需要在宿主機(jī)中增加額外的遠(yuǎn)程調(diào)試接口而造成的遠(yuǎn)程調(diào)試過程復(fù)雜的技術(shù)問題,達(dá)到了在無需增加額外的調(diào)試接口就能實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試的目的,提高了遠(yuǎn)程調(diào)試的效率和靈活性。
【專利說明】遠(yuǎn)程調(diào)試方法和裝置【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種遠(yuǎn)程調(diào)試方法和裝置。
【背景技術(shù)】
[0002]Gdbserver (Gdb服務(wù)器)是一個(gè)與Gdb協(xié)作提供遠(yuǎn)程調(diào)試的工具,其中,Gdb是革奴計(jì)劃開源組織發(fā)布的一個(gè)UNIX下的程序調(diào)試工具。Gdbserver運(yùn)行在目標(biāo)機(jī)上,Gdb運(yùn)行在宿主機(jī)上,用戶可以在宿主機(jī)上通過Gdb對(duì)目標(biāo)機(jī)上Gdbserver啟動(dòng)的程序進(jìn)行遠(yuǎn)程調(diào)試。 [0003]然而,Gdbserver主要存在以下兩方面的缺陷:
[0004]I)當(dāng)用戶需要通過當(dāng)前的宿主機(jī)對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程調(diào)試時(shí),需要在該宿主機(jī)上增加特定的遠(yuǎn)程調(diào)試接口,并安裝相應(yīng)的Gdb程序才能對(duì)目標(biāo)機(jī)上Gdbserver啟動(dòng)的程序進(jìn)行遠(yuǎn)程調(diào)試,從而導(dǎo)致對(duì)于未增加特定的調(diào)試端口或者未安裝Gdb程序的宿主機(jī)無法對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程測(cè)試而造成的遠(yuǎn)程調(diào)試的過程比較復(fù)雜,調(diào)試的靈活性較低。
[0005]2)現(xiàn)有技術(shù)中,目標(biāo)機(jī)會(huì)執(zhí)行接收到的所有的調(diào)試指令,這樣就可能對(duì)目標(biāo)機(jī)上不允許調(diào)試的目標(biāo)執(zhí)行調(diào)試,或者,對(duì)目標(biāo)機(jī)上的調(diào)試目標(biāo)執(zhí)行不允許的調(diào)試指令,從而導(dǎo)致對(duì)目標(biāo)機(jī)的環(huán)境產(chǎn)生影響,使得調(diào)試過程存在一定的安全風(fēng)險(xiǎn)。
[0006]針對(duì)上述問題,尚未提出有效的解決方法。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供了一種遠(yuǎn)程調(diào)試方法和裝置,以至少解決現(xiàn)有技術(shù)中在通過宿主機(jī)對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程調(diào)試時(shí),需要在宿主機(jī)中增加額外的遠(yuǎn)程調(diào)試接口而造成的遠(yuǎn)程調(diào)試過程復(fù)雜的技術(shù)問題。
[0008]根據(jù)本發(fā)明的一個(gè)方面,提供了一種遠(yuǎn)程調(diào)試方法,包括:接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,其中,上述調(diào)試請(qǐng)求中攜帶調(diào)試指令和用于指示調(diào)試目標(biāo)的指示信息;響應(yīng)上述調(diào)試請(qǐng)求來對(duì)上述指示信息指示的調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作;將調(diào)試的結(jié)果通過上述HTTP協(xié)議返回給上述宿主機(jī)。
[0009]優(yōu)選地,響應(yīng)上述調(diào)試請(qǐng)求來對(duì)上述指示信息指示的調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作包括:判斷上述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及上述調(diào)試指令是否屬于被允許的調(diào)試指令;若上述指示信息指示的調(diào)試目標(biāo)屬于上述被允許調(diào)試的調(diào)試目標(biāo)且上述調(diào)試指令屬于被允許的調(diào)試指令,則響應(yīng)上述調(diào)試請(qǐng)求對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作;否則,則將用于指示調(diào)試失敗的信息作為上述調(diào)試的結(jié)果。
[0010]優(yōu)選地,上述響應(yīng)上述調(diào)試請(qǐng)求對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作包括:判斷是否存在與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;若存在與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則通過存在的上述調(diào)試會(huì)話對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作;若不存在與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則建立與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,并通過建立的上述調(diào)試會(huì)話對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作。
[0011]優(yōu)選地,在響應(yīng)上述調(diào)試請(qǐng)求來對(duì)上述指示信息指示的調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作之后,上述方法還包括:接收到上述宿主機(jī)基于HTTP協(xié)議傳輸?shù)耐顺稣?qǐng)求,其中,上述退出請(qǐng)求用于請(qǐng)求停止對(duì)上述調(diào)試目標(biāo)進(jìn)行調(diào)試;響應(yīng)上述退出請(qǐng)求來查找與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;若查找到與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則關(guān)閉查找到的上述調(diào)試會(huì)話。
[0012]優(yōu)選地,上述方法還包括:周期性地檢測(cè)上述調(diào)試會(huì)話對(duì)應(yīng)的最后接收到的調(diào)試請(qǐng)求的接收時(shí)間到當(dāng)前時(shí)間之間的時(shí)間間隔是否超出預(yù)定的閾值;若超出上述預(yù)定的閾值,則關(guān)閉上述調(diào)試會(huì)話。
[0013]優(yōu)選地,上述接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求包括:位于目標(biāo)機(jī)上的HTTP服務(wù)器接收上述宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,并將上述調(diào)試請(qǐng)求轉(zhuǎn)發(fā)給位于上述目標(biāo)機(jī)上的調(diào)試管理器;上述響應(yīng)上述調(diào)試請(qǐng)求來對(duì)上述指示信息指示的調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作包括:上述調(diào)試管理器判斷上述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及上述調(diào)試指令是否屬于被允許的調(diào)試指令,并在上述指示信息指示的調(diào)試目標(biāo)屬于上述被允許調(diào)試的調(diào)試目標(biāo)且上述調(diào)試指令屬于被允許的調(diào)試指令的情況下通過調(diào)試會(huì)話對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作,在上述指示信息指示的調(diào)試目標(biāo)不屬于上述被允許調(diào)試的調(diào)試目標(biāo)或者上述調(diào)試指令不屬于被允許的調(diào)試指令的情況下,將用于指示調(diào)試失敗的信息作為上述調(diào)試的結(jié)果;上述將調(diào)試的結(jié)果通過上述HTTP協(xié)議返回給上述宿主機(jī)包括:上述調(diào)試管理器將上述調(diào)試的結(jié)果通過上述HTTP服務(wù)器返回給上述宿主機(jī)。
[0014]優(yōu)選地,上述調(diào)試目標(biāo)包括:進(jìn)程和/或文件。
[0015]根據(jù)本發(fā)明的另一方面,提供了一種遠(yuǎn)程調(diào)試裝置,包括:接收單元,用于接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,其中,上述調(diào)試請(qǐng)求中攜帶調(diào)試指令和用于指示調(diào)試目標(biāo)的指示信息;執(zhí)行單元,用于響應(yīng)上述調(diào)試請(qǐng)求來對(duì)上述指示信息指示的調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作;返回單元,用于將調(diào)試的結(jié)果通過上述HTTP協(xié)議返回給上述宿主機(jī)。
[0016]優(yōu)選地,上述執(zhí)行單元包括:判斷模塊,用于判斷上述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及上述調(diào)試指令是否屬于被允許的調(diào)試指令;執(zhí)行模塊,用于在判斷出上述指示信息指示的調(diào)試目標(biāo)屬于上述被允許調(diào)試的調(diào)試目標(biāo)且上述調(diào)試指令屬于被允許的調(diào)試指令時(shí),響應(yīng)上述調(diào)試請(qǐng)求對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作;在判斷出上述指示信息指示的調(diào)試目標(biāo)不屬于上述被允許調(diào)試的調(diào)試目標(biāo)或者上述調(diào)試指令不屬于被允許的調(diào)試指令時(shí),將用于指示調(diào)試失敗的信息作為上述調(diào)試的結(jié)果。
[0017]優(yōu)選地,上述執(zhí)行模塊包括:判斷子模塊,用于在判斷出上述指示信息指示的調(diào)試目標(biāo)屬于上述被允許調(diào)試的調(diào)試目標(biāo)且上述調(diào)試指令屬于被允許的調(diào)試指令時(shí),判斷是否存在與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;執(zhí)行子模塊,用于在判斷出存在與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話時(shí),通過存在的上述調(diào)試會(huì)話對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作;在判斷出不存在與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話時(shí),建立與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,并通過建立的上述調(diào)試會(huì)話對(duì)上述調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作。
[0018]優(yōu)選地,上述遠(yuǎn)程調(diào)試裝置還包括:第一接收單元,用于在上述執(zhí)行單元響應(yīng)上述調(diào)試請(qǐng)求來對(duì)上述指示信息指示的調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作之后,接收上述宿主機(jī)基于HTTP協(xié)議傳輸?shù)耐顺稣?qǐng)求,其中,上述退出請(qǐng)求用于請(qǐng)求停止對(duì)上述調(diào)試目標(biāo)進(jìn)行調(diào)試;查找單元,用于響應(yīng)上述退出請(qǐng)求來查找與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;第一關(guān)閉單元,用于在上述查找單元未查找到與上述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話的情況下,關(guān)閉查找到的上述調(diào)試會(huì)話。
[0019]優(yōu)選地,上述遠(yuǎn)程調(diào)試裝置還包括:檢測(cè)單元,用于周期性地檢測(cè)上述調(diào)試會(huì)話對(duì)應(yīng)的最后接收到的調(diào)試請(qǐng)求的接收時(shí)間到當(dāng)前時(shí)間之間的時(shí)間間隔是否超出預(yù)定的閾值;第二關(guān)閉單元,用于在上述判斷單元判斷出超出上述預(yù)定的閾值時(shí),關(guān)閉上述調(diào)試會(huì)話。
[0020]在本發(fā)明中,宿主機(jī)可以通過HTTP協(xié)議將調(diào)試請(qǐng)求發(fā)送給目標(biāo)機(jī),以便實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試,而無需預(yù)先設(shè)定特定的調(diào)試接口也無需安裝相應(yīng)的程序,從而解決了現(xiàn)有技術(shù)中在通過宿主機(jī)對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程調(diào)試時(shí),需要在宿主機(jī)中增加額外的遠(yuǎn)程調(diào)試接口而造成的遠(yuǎn)程調(diào)試過程復(fù)雜的技術(shù)問題,達(dá)到了在無需增加額外的調(diào)試接口就能實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試的目的,提高了遠(yuǎn)程調(diào)試的效率和靈活性;此外,通過對(duì)接收到的調(diào)試指令和所需調(diào)試的調(diào)試目標(biāo)進(jìn)行判斷,避免了對(duì)目標(biāo)機(jī)上不允許調(diào)試的目標(biāo)執(zhí)行調(diào)試,或者,對(duì)目標(biāo)機(jī)上的調(diào)試目標(biāo)執(zhí)行不允許的調(diào)試指令,從而保證了調(diào)試的安全性。
【專利附圖】
【附圖說明】
[0021]此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0022]圖1是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試系統(tǒng)的一種優(yōu)選結(jié)構(gòu)框圖;
[0023]圖2是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試系統(tǒng)架構(gòu)的示意圖;
[0024]圖3是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試裝置的一種優(yōu)選結(jié)構(gòu)框圖;
[0025]圖4是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試裝置的另一種優(yōu)選結(jié)構(gòu)框圖;
[0026]圖5是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試方法的一種優(yōu)選流程圖;
[0027]圖6是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試方法的另一種優(yōu)選流程圖;
[0028]圖7是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試方法的又一種優(yōu)選流程圖;
[0029]圖8是根據(jù)本發(fā)明實(shí)施例的遠(yuǎn)程調(diào)試方法的又一種優(yōu)選流程圖。
【具體實(shí)施方式】
[0030]下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0031]在描述本發(fā)明的各實(shí)施例的進(jìn)一步細(xì)節(jié)之前,將參考圖1來描述可用于實(shí)現(xiàn)本發(fā)明的原理的一個(gè)合適的計(jì)算體系結(jié)構(gòu)。在以下描述中,除非另外指明,否則將參考由一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行的動(dòng)作和操作的符號(hào)表示來描述本發(fā)明的各實(shí)施例。由此,可以理解,有時(shí)被稱為計(jì)算機(jī)執(zhí)行的這類動(dòng)作和操作包括計(jì)算機(jī)的處理單元對(duì)以結(jié)構(gòu)化形式表示數(shù)據(jù)的電信號(hào)的操縱。這一操縱轉(zhuǎn)換了數(shù)據(jù)或在計(jì)算機(jī)的存儲(chǔ)器系統(tǒng)中的位置上維護(hù)它,這以本領(lǐng)域的技術(shù)人員都理解的方式重配置或改變了計(jì)算機(jī)的操作。維護(hù)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是具有數(shù)據(jù)的格式所定義的特定屬性的存儲(chǔ)器的物理位置。然而,盡管在上述上下文中描述本發(fā)明,但它并不意味著限制性的,如本領(lǐng)域的技術(shù)人員所理解的,后文所描述的動(dòng)作和操作的各方面也可用硬件來實(shí)現(xiàn)。
[0032]轉(zhuǎn)向附圖,其中相同的參考標(biāo)號(hào)指代相同的元素,本發(fā)明的原理被示為在一個(gè)合適的計(jì)算環(huán)境中實(shí)現(xiàn)。以下描述基于所述的本發(fā)明的實(shí)施例,并且不應(yīng)認(rèn)為是關(guān)于此處未明確描述的替換實(shí)施例而限制本發(fā)明。
[0033]圖1示出了可用于這些設(shè)備的一個(gè)示例計(jì)算機(jī)體系結(jié)構(gòu)的示意圖。出于描述的目的,所繪的體系結(jié)構(gòu)僅為合適環(huán)境的一個(gè)示例,并非對(duì)本發(fā)明的使用范圍或功能提出任何局限。也不應(yīng)將該計(jì)算系統(tǒng)解釋為對(duì)圖1所示的任一組件或其組合具有任何依賴或需求。
[0034]本發(fā)明的原理可以使用其它通用或?qū)S糜?jì)算或通信環(huán)境或配置來操作。適用于本發(fā)明的眾所周知的計(jì)算系統(tǒng)、環(huán)境和配置的示例包括但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器,多處理器系統(tǒng)、基于微處理的系統(tǒng)、小型機(jī)、大型計(jì)算機(jī)、以及包括任一上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境。
[0035]在其最基本的配置中,圖1中的遠(yuǎn)程調(diào)試系統(tǒng)100至少包括:宿主機(jī)102和通過網(wǎng)絡(luò)連接的目標(biāo)機(jī)104,其中,宿主機(jī)102用于將調(diào)試請(qǐng)求發(fā)送給目標(biāo)機(jī)104,目標(biāo)機(jī)104用于根據(jù)接收到的調(diào)試請(qǐng)求對(duì)響應(yīng)的調(diào)試目標(biāo)進(jìn)行調(diào)試。宿主機(jī)102和目標(biāo)機(jī)104可以包括但不限于微處理器MCU或可編程邏輯器件FPGA等的處理裝置、用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)裝置以及與另一方進(jìn)行通信的傳輸裝置。在本說明書和權(quán)利要求書中,“系統(tǒng)”也可以被定義為能夠執(zhí)行軟件、固件或微碼來實(shí)現(xiàn)功能的任何硬件組件或硬件組件的組合,遠(yuǎn)程調(diào)試系統(tǒng)100甚至可以是分布式的,以實(shí)現(xiàn)分布式功能。
[0036]如本發(fā)明所使用的,術(shù)語“模塊”、“組件”或“單元”可以指在遠(yuǎn)程調(diào)試系統(tǒng)100上執(zhí)行的軟件對(duì)象或例程。此處所描述的不同組件、模塊、單元、引擎和服務(wù)可被實(shí)現(xiàn)為在遠(yuǎn)程調(diào)試系統(tǒng)100上執(zhí)行(例如,作為單獨(dú)的線程)的對(duì)象或進(jìn)程。盡管此處所描述的系統(tǒng)和方法較佳地以軟件來實(shí)現(xiàn),但是硬件或軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
[0037]實(shí)施例1
[0038]在本優(yōu)選實(shí)施例中,提供了一種遠(yuǎn)程調(diào)試系統(tǒng)架構(gòu),位于上述的目標(biāo)機(jī)104中,如圖2所示,該位于目標(biāo)機(jī)中的遠(yuǎn)程調(diào)試系統(tǒng)包括:HTTP服務(wù)器(HTTP Server) 202和調(diào)試管理器(Debug Manager) 204。下面對(duì)這兩個(gè)網(wǎng)元的作用進(jìn)行詳細(xì)描述。
[0039]HTTP Server主要負(fù)責(zé)接收用戶的Web請(qǐng)求,同時(shí)將該請(qǐng)求轉(zhuǎn)發(fā)給Debug Manager進(jìn)行處理,并把處理結(jié)果通過HTTP協(xié)議返回給用戶。優(yōu)選的,HTTP Server采用HTTP協(xié)議與宿主機(jī)102進(jìn)行通信,從而使得用戶可以直接通過宿主機(jī)102上的瀏覽器對(duì)目標(biāo)機(jī)104進(jìn)行調(diào)試。
[0040]Debug Manager主要負(fù)責(zé)管理用戶的權(quán)限認(rèn)證、Gdb指令檢查,Gdb指令和執(zhí)行結(jié)果的轉(zhuǎn)發(fā),以及對(duì)會(huì)話(Session)的生命周期進(jìn)行調(diào)試(即,判斷是否關(guān)閉該調(diào)試會(huì)話)。其中,權(quán)限認(rèn)證和Gdb指令檢查是用來保證調(diào)試的安全性,例如:每個(gè)用戶只能對(duì)目標(biāo)機(jī)104上特定的文件或者進(jìn)程進(jìn)行調(diào)試,優(yōu)選的,允許在目標(biāo)機(jī)104上執(zhí)行的調(diào)試指令也被限制在一定范圍內(nèi),例如:像“shell”等不可預(yù)估并且可能產(chǎn)生較大的影響的Gdb指令將被禁止。
[0041]本優(yōu)選實(shí)施例還提供了一種遠(yuǎn)程調(diào)試裝置,該遠(yuǎn)程調(diào)試裝置位于被調(diào)試的目標(biāo)機(jī)104上。如圖3所示,本實(shí)施例的遠(yuǎn)程調(diào)試裝置主要包括:接收單元302、執(zhí)行單元304以及返回單元306。下面對(duì)這幾個(gè)結(jié)構(gòu)的功能進(jìn)行具體描述。
[0042]I)接收單元302,用于接收宿主機(jī)基于超文本傳輸協(xié)議(Hypertext TransferProtocol,簡(jiǎn)稱為HTTP)傳輸?shù)恼{(diào)試請(qǐng)求,其中,調(diào)試請(qǐng)求中攜帶調(diào)試指令和用于指示調(diào)試目標(biāo)的指示信息;優(yōu)選的,上述調(diào)試目標(biāo)可以為:目標(biāo)機(jī)中的進(jìn)程和/或文件;用于指示調(diào)試目標(biāo)的指示信息可以為該進(jìn)程和/或文件的名稱或地址。該接收單元的功能主要通過圖2中的HTTP Server實(shí)現(xiàn)。
[0043]2)執(zhí)行單元304,與接收單元302耦合,用于響應(yīng)調(diào)試請(qǐng)求來對(duì)指示信息指示的調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作;該執(zhí)行單元的功能主要通過圖2中的DebugManager 實(shí)現(xiàn)。
[0044]3)返回單元306,與執(zhí)行單元304耦合,用于將調(diào)試的結(jié)果通過HTTP協(xié)議返回給宿主機(jī)。該返回單元的功能可以通過圖2中的HTTP Server實(shí)現(xiàn),也可以通過圖2中的Debug Manager實(shí)現(xiàn),在此不做限定。
[0045]在上述優(yōu)選實(shí)施方式中,宿主機(jī)可以通過HTTP協(xié)議將調(diào)試請(qǐng)求發(fā)送給目標(biāo)機(jī),以便實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試,而無需預(yù)先設(shè)定特定的調(diào)試接口也無需安裝相應(yīng)的程序,從而解決了現(xiàn)有技術(shù)中在通過宿主機(jī)對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程調(diào)試時(shí),需要在宿主機(jī)中增加額外的遠(yuǎn)程調(diào)試接口而造成的遠(yuǎn)程調(diào)試過程復(fù)雜的技術(shù)問題,達(dá)到了在無需增加額外的調(diào)試接口就能實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試的目的,提高了遠(yuǎn)程調(diào)試的效率和靈活性。
[0046]為了保證調(diào)試的安全性,可以限定每個(gè)用戶只能對(duì)特定的文件或者進(jìn)程進(jìn)行調(diào)試。為了實(shí)現(xiàn)上述目的,可以預(yù)先設(shè)定允許被調(diào)試的調(diào)試目標(biāo)的集合,只有請(qǐng)求調(diào)試的調(diào)試目標(biāo)在該集合內(nèi),才會(huì)觸發(fā)相應(yīng)的調(diào)試操作,其中,調(diào)試目標(biāo)可以是目標(biāo)機(jī)上的文件或者是進(jìn)程等。優(yōu)選的,不僅可以對(duì)調(diào)試的目標(biāo)進(jìn)行限定,也可以對(duì)調(diào)試的指令進(jìn)行限定,例如,對(duì)于像“shell”等不可預(yù)估并且可能產(chǎn)生較大的影響的Gdb指令是被禁止的指令,即,如果在調(diào)試請(qǐng)求中攜帶的調(diào)試指令是被禁止的指令,則返回調(diào)試失敗,從而有效避免了相關(guān)技術(shù)中在調(diào)試過程中有一些調(diào)試指令可能會(huì)對(duì)目標(biāo)機(jī)的環(huán)境產(chǎn)生影響而造成的調(diào)試出現(xiàn)故障的問題。
[0047]在一個(gè)優(yōu)選實(shí)施方式中,如圖4所示,上述執(zhí)行單元304包括:判斷模塊402,用于判斷所述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及所述調(diào)試指令是否屬于被允許的調(diào)試指令;執(zhí)行模塊404,用于在判斷出所述指示信息指示的調(diào)試目標(biāo)屬于所述被允許調(diào)試的調(diào)試目標(biāo)且所述調(diào)試指令屬于被允許的調(diào)試指令時(shí),響應(yīng)所述調(diào)試請(qǐng)求對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作;在判斷出所述指示信息指示的調(diào)試目標(biāo)不屬于所述被允許調(diào)試的調(diào)試目標(biāo)或者所述調(diào)試指令不屬于被允許的調(diào)試指令時(shí),將用于指示調(diào)試失敗的信息作為所述調(diào)試的結(jié)果。即,如果調(diào)試目標(biāo)在允許調(diào)試的目標(biāo)集合中且調(diào)試指令是被允許的指令,則進(jìn)行調(diào)試,否則返回調(diào)試失敗的指示信息,以表明該次調(diào)試請(qǐng)求未被執(zhí)行。
[0048]在對(duì)一個(gè)調(diào)試目標(biāo)進(jìn)行調(diào)試的時(shí)候需要為該調(diào)試目標(biāo)建立調(diào)試會(huì)話(DebugSession,如圖2所示),優(yōu)選的,該調(diào)試會(huì)話可以是為調(diào)試該調(diào)試目標(biāo)所分配的資源或者是分配的線程。例如,如圖2所示,當(dāng)需要調(diào)試的調(diào)試目標(biāo)為二進(jìn)制文件時(shí),為該二進(jìn)制文件建立Debug Sessionl (調(diào)試會(huì)話I),當(dāng)需要調(diào)試的調(diào)試目標(biāo)為進(jìn)程(Process)時(shí),為該進(jìn)程建立Debug Session 2 (調(diào)試會(huì)話2),當(dāng)需要調(diào)試的調(diào)試目標(biāo)為內(nèi)核文件(Core File)時(shí),為該內(nèi)核文件建立Debug Session 3 (調(diào)試會(huì)話3)。在一個(gè)優(yōu)選實(shí)施方式中,宿主機(jī)可能多次對(duì)同一個(gè)調(diào)試目標(biāo)進(jìn)行調(diào)試,如果每次調(diào)試完成后就立即釋放為該調(diào)試目標(biāo)分配的資源或者線程,然后在下一次對(duì)其進(jìn)行調(diào)試時(shí)又需要重新為其分配資源或者線程,這樣容易造成資源的浪費(fèi),同時(shí)還會(huì)延長(zhǎng)調(diào)試的時(shí)間。因此,在響應(yīng)于接收到的調(diào)試請(qǐng)求為某個(gè)調(diào)試目標(biāo)分配資源或者線程之后,可以對(duì)該部分的資源或者線程保留一段時(shí)間,這樣在下一次對(duì)同一個(gè)調(diào)試目標(biāo)進(jìn)行調(diào)試時(shí),直接利用先前的資源和線程即可。
[0049]在一個(gè)優(yōu)選實(shí)施方式中,上述執(zhí)行模塊404包括:判斷子模塊,用于在判斷出所述指示信息指示的調(diào)試目標(biāo)屬于所述被允許調(diào)試的調(diào)試目標(biāo)且所述調(diào)試指令屬于被允許的調(diào)試指令時(shí),判斷是否存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;執(zhí)行子模塊,用于在判斷出存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話時(shí),通過存在的所述調(diào)試會(huì)話對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作;在判斷出不存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話時(shí),建立與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,并通過建立的所述調(diào)試會(huì)話對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作。例如,由圖2可知,與二進(jìn)制文件對(duì)應(yīng)的調(diào)試會(huì)話是DebugSession I,當(dāng)接收到的調(diào)試請(qǐng)求的調(diào)試目標(biāo)是二進(jìn)制文件時(shí),判斷當(dāng)前是否存在DebugSession I,如果存在,則直接利用存在的Debug Session I對(duì)二進(jìn)制文件進(jìn)行調(diào)試;如果不存在,則建立Debug Session I,通過建立的這個(gè)Debug Session I對(duì)二進(jìn)制文件進(jìn)行調(diào)試。
[0050]當(dāng)然如果一直不釋放為某個(gè)調(diào)試目標(biāo)分配的調(diào)試會(huì)話也是不合理的,這樣資源得不到有效的利用,因此,可以設(shè)定一個(gè)時(shí)間閾值,如果在該時(shí)間閾值內(nèi)一直未接收到下一次對(duì)該調(diào)試目標(biāo)進(jìn)行調(diào)試的調(diào)試請(qǐng)求或者是通過HTTP協(xié)議接收到退出對(duì)該調(diào)試目標(biāo)的調(diào)試的請(qǐng)求,則關(guān)閉與該調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,從而實(shí)現(xiàn)資源的有效利用。在一個(gè)優(yōu)選實(shí)施方式中,上述的遠(yuǎn)程調(diào)試裝置還包括釋放單元,用于在響應(yīng)調(diào)試請(qǐng)求來對(duì)指示信息指示的調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作之后,按照以下方式之一關(guān)閉調(diào)試會(huì)話:
[0051]I)當(dāng)接收到宿主機(jī)基于HTTP協(xié)議傳輸?shù)耐顺稣?qǐng)求時(shí),其中,退出請(qǐng)求用于請(qǐng)求停止對(duì)調(diào)試目標(biāo)進(jìn)行調(diào)試;響應(yīng)于該退出請(qǐng)求來查找與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;若查找到與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則關(guān)閉查找到的調(diào)試會(huì)話。
[0052]2)周期性地檢測(cè)調(diào)試會(huì)話對(duì)應(yīng)的最后接收到的調(diào)試請(qǐng)求的接收時(shí)間到當(dāng)前時(shí)間之間的時(shí)間間隔是否超出預(yù)定的閾值;若超出預(yù)定的閾值,則關(guān)閉調(diào)試會(huì)話。優(yōu)選地,上述的當(dāng)前時(shí)間可以是目標(biāo)機(jī)的系統(tǒng)時(shí)間,即,判斷最近一次接收到對(duì)應(yīng)于該調(diào)試會(huì)話的調(diào)試請(qǐng)求到當(dāng)前的時(shí)間是否達(dá)到一個(gè)預(yù)定閾值,如果到了,就表明在這段時(shí)間內(nèi)一直不需要用到該調(diào)試會(huì)話,這種情況下就可以關(guān)閉該調(diào)試會(huì)話,以釋放相應(yīng)的資源。
[0053]仍以圖2中的二進(jìn)制文件作為調(diào)試目標(biāo)為例進(jìn)行說明,當(dāng)接收到用于指示退出對(duì)該二進(jìn)制文件的調(diào)試的退出請(qǐng)求,或者,在預(yù)定時(shí)間長(zhǎng)度內(nèi)一直未接收到再次對(duì)該二進(jìn)制文件進(jìn)行調(diào)試的調(diào)試請(qǐng)求時(shí),查找目標(biāo)機(jī)中是否有為對(duì)二進(jìn)制文件進(jìn)行調(diào)試而建立的Debug Session I,如果有,貝U關(guān)閉查找到的Debug Session I。通過上述方式可以將釋放的資源分配給其它調(diào)試目標(biāo)使用,從而實(shí)現(xiàn)資源的合理分配。
[0054]實(shí)施例2
[0055]在圖1-圖4所示的遠(yuǎn)程調(diào)試系統(tǒng)和裝置的基礎(chǔ)上,本發(fā)明提供了一種優(yōu)選的遠(yuǎn)程調(diào)試方法。如圖5所示,該方法可以包括如下步驟:
[0056]步驟S502:接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,其中,調(diào)試請(qǐng)求中攜帶調(diào)試指令和用于指示調(diào)試目標(biāo)的指示信息;上述調(diào)試目標(biāo)可以為:目標(biāo)機(jī)中的進(jìn)程和/或文件;用于指示調(diào)試目標(biāo)的指示信息可以為該進(jìn)程和/或文件的名稱或地址。
[0057]步驟S504:響應(yīng)調(diào)試請(qǐng)求來對(duì)指示信息指示的調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作;
[0058]步驟S506:將調(diào)試的結(jié)果通過HTTP協(xié)議返回給宿主機(jī)。
[0059]在上述優(yōu)選實(shí)施方式中,宿主機(jī)可以通過HTTP協(xié)議將調(diào)試請(qǐng)求發(fā)送給目標(biāo)機(jī),以便實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試,而無需預(yù)先設(shè)定特定的調(diào)試接口也無需安裝相應(yīng)的程序,從而解決了現(xiàn)有技術(shù)中在通過宿主機(jī)對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程調(diào)試時(shí),需要在宿主機(jī)中增加額外的遠(yuǎn)程調(diào)試接口而造成的遠(yuǎn)程調(diào)試過程復(fù)雜的技術(shù)問題,達(dá)到了在無需增加額外的調(diào)試接口就能實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試的目的,提高了遠(yuǎn)程調(diào)試的效率和靈活性。
[0060]為了保證調(diào)試的安全性,可以限定每個(gè)用戶只能對(duì)特定的文件或者進(jìn)程進(jìn)行調(diào)試。為了實(shí)現(xiàn)上述目的,可以預(yù)先設(shè)定允許被調(diào)試的調(diào)試目標(biāo)的集合,只有請(qǐng)求調(diào)試的調(diào)試目標(biāo)在該集合內(nèi),才會(huì)觸發(fā)相應(yīng)的調(diào)試操作,其中,調(diào)試目標(biāo)可以是目標(biāo)機(jī)上的文件或者是進(jìn)程等。優(yōu)選的,不僅可以對(duì)調(diào)試的目標(biāo)進(jìn)行限定,也可以對(duì)調(diào)試的指令進(jìn)行限定,例如,對(duì)于像“shell”等不可預(yù)估并且可能產(chǎn)生較大的影響的Gdb指令是被禁止的指令,即,如果在調(diào)試請(qǐng)求中攜帶的調(diào)試指令是被禁止的指令,則返回調(diào)試失敗,從而有效避免了相關(guān)技術(shù)中在調(diào)試過程中有一些調(diào)試指令可能會(huì)對(duì)目標(biāo)機(jī)的環(huán)境產(chǎn)生影響而造成的調(diào)試出現(xiàn)故障的問題。
[0061]在一個(gè)優(yōu)選實(shí)施方式中,響應(yīng)調(diào)試請(qǐng)求來對(duì)指示信息指示的調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作包括:判斷所述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及所述調(diào)試指令是否屬于被允許的調(diào)試指令;若所述指示信息指示的調(diào)試目標(biāo)屬于所述被允許調(diào)試的調(diào)試目標(biāo)且所述調(diào)試指令屬于被允許的調(diào)試指令,則響應(yīng)所述調(diào)試請(qǐng)求對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作;否則,則將用于指示調(diào)試失敗的信息作為所述調(diào)試的結(jié)果。即,如果調(diào)試目標(biāo)在允許調(diào)試的調(diào)試目標(biāo)的集合中且調(diào)試指令是被允許的調(diào)試指令,則對(duì)該調(diào)試目標(biāo)進(jìn)行調(diào)試,否則返回調(diào)試失敗的指示信息,以表明該次調(diào)試請(qǐng)求未被執(zhí)行。
[0062]在對(duì)一個(gè)調(diào)試目標(biāo)進(jìn)行調(diào)試的時(shí)候需要為該調(diào)試目標(biāo)設(shè)置調(diào)試會(huì)話,如圖2所示,優(yōu)選的,該調(diào)試會(huì)話可以是為調(diào)試該調(diào)試目標(biāo)所分配的資源或者是分配的線程。在一個(gè)優(yōu)選實(shí)施方式中,宿主機(jī)可能多次對(duì)同一個(gè)調(diào)試目標(biāo)進(jìn)行調(diào)試,如果每次調(diào)試完成后就立即釋放為該調(diào)試目標(biāo)分配的資源或者線程,然后在下一次對(duì)其進(jìn)行調(diào)試時(shí)又需要重新為其分配資源或者線程,這樣容易造成資源的浪費(fèi),同時(shí)還會(huì)延長(zhǎng)調(diào)試的時(shí)間。因此,在響應(yīng)于接收到的調(diào)試請(qǐng)求為某個(gè)調(diào)試目標(biāo)分配資源或者線程之后,可以對(duì)該部分的資源或者線程保留一段時(shí)間,這樣在下一次對(duì)同一個(gè)調(diào)試目標(biāo)進(jìn)行調(diào)試時(shí),直接利用先前的資源和線程即可。
[0063]在一個(gè)優(yōu)選實(shí)施方式中,響應(yīng)調(diào)試請(qǐng)求對(duì)調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作包括:判斷是否存在與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;若存在與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則通過存在的調(diào)試會(huì)話對(duì)調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作;若不存在與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則建立與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,并通過建立的調(diào)試會(huì)話對(duì)調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作。例如,由圖2可知,與二進(jìn)制文件對(duì)應(yīng)的調(diào)試會(huì)話是Debug Session I,當(dāng)接收到的調(diào)試請(qǐng)求的調(diào)試目標(biāo)是二進(jìn)制文件時(shí),判斷當(dāng)前是否存在Debug Session 1,如果存在,則利用該存在的Debug Session I對(duì)二進(jìn)制文件進(jìn)行調(diào)試;如果不存在,則建立Debug Session I,通過建立的這個(gè)Debug Session I對(duì)二進(jìn)制文件進(jìn)行調(diào)試。
[0064]當(dāng)然如果一直不釋放為某個(gè)調(diào)試目標(biāo)分配的調(diào)試會(huì)話也是不合理的,這樣資源得不到有效的利用,因此,可以設(shè)定一個(gè)時(shí)間閾值,如果在該時(shí)間閾值內(nèi)一直未接收到下一次對(duì)該調(diào)試目標(biāo)進(jìn)行調(diào)試的調(diào)試請(qǐng)求或者是通過HTTP協(xié)議接收到退出對(duì)該調(diào)試目標(biāo)的調(diào)試的請(qǐng)求,則關(guān)閉與該調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,從而實(shí)現(xiàn)資源的有效利用。在一個(gè)優(yōu)選實(shí)施方式中,在響應(yīng)調(diào)試請(qǐng)求來對(duì)指示信息指示的調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作之后,提供以下兩種關(guān)閉調(diào)試會(huì)話的方式:
[0065]I)如圖6所示,關(guān)閉調(diào)試會(huì)話包括以下步驟:
[0066]步驟S602:接收到宿主機(jī)基于HTTP協(xié)議傳輸?shù)耐顺稣?qǐng)求,其中,退出請(qǐng)求用于請(qǐng)求停止對(duì)調(diào)試目標(biāo)進(jìn)行調(diào)試;
[0067]步驟S604:響應(yīng)退出請(qǐng)求來查找與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話;
[0068]步驟S606:若查找到與調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則關(guān)閉查找到的調(diào)試會(huì)話。
[0069]2)如圖7所示,關(guān)閉調(diào)試會(huì)話包括以下步驟::
[0070]步驟S702:周期性地檢測(cè)所述調(diào)試會(huì)話對(duì)應(yīng)的最后接收到的調(diào)試請(qǐng)求的接收時(shí)間到當(dāng)前時(shí)間之間的時(shí)間間隔是否超出預(yù)定的閾值;
`[0071]優(yōu)選地,上述的當(dāng)前時(shí)間可以是目標(biāo)機(jī)的系統(tǒng)時(shí)間,即,判斷最近一次接收到對(duì)應(yīng)于該調(diào)試會(huì)話的調(diào)試請(qǐng)求到當(dāng)前的時(shí)間是否達(dá)到一個(gè)預(yù)定閾值,如果到了,就表明在這段時(shí)間內(nèi)一直不需要用到該調(diào)試會(huì)話,這種情況下就可以關(guān)閉該調(diào)試會(huì)話,以釋放相應(yīng)的資源。進(jìn)一步的,對(duì)于上述周期性地檢測(cè)可以發(fā)生在執(zhí)行單元響應(yīng)上述調(diào)試請(qǐng)求來對(duì)上述指示信息指示的調(diào)試目標(biāo)執(zhí)行上述調(diào)試指令所指示的調(diào)試操作之后,也可以在其它時(shí)間點(diǎn)出發(fā),本發(fā)明對(duì)此不做限定。
[0072]步驟S704:若超出所述預(yù)定的閾值,則關(guān)閉調(diào)試會(huì)話。
[0073]仍以圖2中的二進(jìn)制文件作為調(diào)試目標(biāo)為例進(jìn)行說明,當(dāng)接收到用于指示退出對(duì)該二進(jìn)制文件的調(diào)試的退出請(qǐng)求,或者,在預(yù)定時(shí)間長(zhǎng)度內(nèi)一直未接收到再次對(duì)該二進(jìn)制文件進(jìn)行調(diào)試的調(diào)試請(qǐng)求時(shí),查找目標(biāo)機(jī)中是否有為對(duì)二進(jìn)制文件進(jìn)行調(diào)試而建立的Debug Session I,如果有,貝U關(guān)閉查找到的Debug Session I。通過上述方式可以將釋放的資源分配給其它調(diào)試目標(biāo)使用,從而實(shí)現(xiàn)資源的合理分配。
[0074]可以在目標(biāo)機(jī)上設(shè)置一個(gè)HTTP服務(wù)器和調(diào)試管理器,由該HTTP服務(wù)器接收并轉(zhuǎn)發(fā)HTTP調(diào)試請(qǐng)求,由該調(diào)試管理器實(shí)現(xiàn)是否滿足調(diào)試條件的判斷,例如通過該調(diào)試管理器判斷請(qǐng)求調(diào)試的調(diào)試目標(biāo)是否是被允許的調(diào)試目標(biāo),以及對(duì)調(diào)試結(jié)果的返回。如圖8所示,通過上述的HTTP服務(wù)器和調(diào)試管理器進(jìn)行遠(yuǎn)程調(diào)試的方法包括以下步驟:
[0075]步驟S802 =HTTP服務(wù)器接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,并將調(diào)試請(qǐng)求轉(zhuǎn)發(fā)給調(diào)試管理器;
[0076]步驟S804:調(diào)試管理器判斷指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及調(diào)試指令是否屬于被允許的調(diào)試指令,并在指示信息指示的調(diào)試目標(biāo)屬于被允許調(diào)試的調(diào)試目標(biāo)且調(diào)試指令屬于被允許的調(diào)試指令的情況下通過調(diào)試會(huì)話對(duì)調(diào)試目標(biāo)執(zhí)行調(diào)試指令所指示的調(diào)試操作,在指示信息指示的調(diào)試目標(biāo)不屬于被允許調(diào)試的調(diào)試目標(biāo)或者調(diào)試指令不屬于被允許的調(diào)試指令的情況下,將用于指示調(diào)試失敗的信息作為調(diào)試的結(jié)果;
[0077]步驟S806:調(diào)試管理器將調(diào)試的結(jié)果通過HTTP服務(wù)器返回給宿主機(jī)。
[0078]在上述各個(gè)優(yōu)選實(shí)施方式中,上述調(diào)試目標(biāo)可以包括但不限于進(jìn)程和/或文件。
[0079]優(yōu)選的,在本實(shí)施例的調(diào)試過程中,每個(gè)調(diào)試會(huì)話都是單獨(dú)的進(jìn)程,其輸入和輸出都被Debug Manager接管,Debug Manager將Gdb調(diào)試指令作為輸入傳給調(diào)試會(huì)話,同時(shí)接收調(diào)試會(huì)話響應(yīng)于該Gdb調(diào)試指令的輸出結(jié)果,并將接收到的輸出結(jié)果轉(zhuǎn)發(fā)給HTTPServer0 一個(gè)調(diào)試會(huì)話會(huì)在宿主機(jī)輸入退出指令的時(shí)候結(jié)束。為了避免因異常而導(dǎo)致的執(zhí)行調(diào)試指令長(zhǎng)時(shí)間未被執(zhí)行,如果宿主機(jī)在預(yù)定時(shí)間內(nèi)沒有再次對(duì)目標(biāo)機(jī)上的調(diào)試目標(biāo)進(jìn)行調(diào)試,也將被認(rèn)為是會(huì)話結(jié)束,這種情況下可以由Debug Manager主動(dòng)結(jié)束該調(diào)試會(huì)話,優(yōu)選的,上述的預(yù)定時(shí)間可以根據(jù)系統(tǒng)需要或者調(diào)試的需要進(jìn)行靈活設(shè)置。
[0080]值得注意是上述實(shí)施例只是以Gdb作為調(diào)試器進(jìn)行說明,其它命令行調(diào)試器也可以實(shí)現(xiàn)這種遠(yuǎn)程調(diào)試,例如:T0talView,ALD,Dude以及kdb等命令行調(diào)試器都可以,本發(fā)明在此不做限定。
[0081]通過上述優(yōu)選實(shí)施方式,可以在很大程度上對(duì)用戶進(jìn)行代碼調(diào)試提供方便,用戶直接在Web頁面上就可以進(jìn)行代碼調(diào)試,進(jìn)一步的,通過權(quán)限認(rèn)證和指令限制保證了機(jī)器的安全性,也不會(huì)因?yàn)榇a調(diào)試導(dǎo)致機(jī)器運(yùn)行異常,從而影響其它程序的執(zhí)行。
[0082]通過以上的描述可知,本發(fā)明具有以下優(yōu)勢(shì):宿主機(jī)可以通過HTTP協(xié)議發(fā)送調(diào)試請(qǐng)求,同時(shí)目標(biāo)機(jī)可以識(shí)別該調(diào)試請(qǐng)求并根據(jù)該調(diào)試請(qǐng)求攜帶的信息進(jìn)行相應(yīng)的調(diào)試操作,并向發(fā)送調(diào)試請(qǐng)求的宿主機(jī)返回調(diào)試結(jié)果,通過上述方式解決了現(xiàn)有技術(shù)中在通過宿主機(jī)對(duì)目標(biāo)機(jī)進(jìn)行遠(yuǎn)程調(diào)試時(shí),需要在宿主機(jī)中增加額外的遠(yuǎn)程調(diào)試接口而造成的遠(yuǎn)程調(diào)試過程復(fù)雜的技術(shù)問題,達(dá)到了在無需增加額外的調(diào)試接口就能實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的遠(yuǎn)程調(diào)試的目的,提高了遠(yuǎn)程調(diào)試的效率和靈活性。
[0083]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0084]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種遠(yuǎn)程調(diào)試方法,其特征在于,包括: 接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,其中,所述調(diào)試請(qǐng)求中攜帶調(diào)試指令和用于指示調(diào)試目標(biāo)的指示信息; 響應(yīng)所述調(diào)試請(qǐng)求來對(duì)所述指示信息指示的調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作; 將調(diào)試的結(jié)果通過所述HTTP協(xié)議返回給所述宿主機(jī)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述響應(yīng)所述調(diào)試請(qǐng)求來對(duì)所述指示信息指示的調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作包括: 判斷所述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及所述調(diào)試指令是否屬于被允許的調(diào)試指令; 若所述指示信息指示的調(diào)試 目標(biāo)屬于所述被允許調(diào)試的調(diào)試目標(biāo)且所述調(diào)試指令屬于被允許的調(diào)試指令,則響應(yīng)所述調(diào)試請(qǐng)求對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作; 否則,則將用于指示調(diào)試失敗的信息作為所述調(diào)試的結(jié)果。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述響應(yīng)所述調(diào)試請(qǐng)求對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作包括: 判斷是否存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話; 若存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則通過存在的所述調(diào)試會(huì)話對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作; 若不存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則建立與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,并通過建立的所述調(diào)試會(huì)話對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在響應(yīng)所述調(diào)試請(qǐng)求來對(duì)所述指示信息指示的調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作之后,還包括: 接收到所述宿主機(jī)基于HTTP協(xié)議傳輸?shù)耐顺稣?qǐng)求,其中,所述退出請(qǐng)求用于請(qǐng)求停止對(duì)所述調(diào)試目標(biāo)進(jìn)行調(diào)試; 響應(yīng)所述退出請(qǐng)求來查找與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話; 若查找到與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,則關(guān)閉查找到的所述調(diào)試會(huì)話。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括: 周期性地檢測(cè)所述調(diào)試會(huì)話對(duì)應(yīng)的最后接收到的調(diào)試請(qǐng)求的接收時(shí)間到當(dāng)前時(shí)間之間的時(shí)間間隔是否超出預(yù)定的閾值; 若超出所述預(yù)定的閾值,則關(guān)閉所述調(diào)試會(huì)話。
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于, 所述接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求包括:位于目標(biāo)機(jī)上的HTTP服務(wù)器接收所述宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,并將所述調(diào)試請(qǐng)求轉(zhuǎn)發(fā)給位于所述目標(biāo)機(jī)上的調(diào)試管理器; 所述響應(yīng)所述調(diào)試請(qǐng)求來對(duì)所述指示信息指示的調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作包括:所述調(diào)試管理器判斷所述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及所述調(diào)試指令是否屬于被允許的調(diào)試指令,并在所述指示信息指示的調(diào)試目標(biāo)屬于所述被允許調(diào)試的調(diào)試目標(biāo)且所述調(diào)試指令屬于被允許的調(diào)試指令的情況下通過調(diào)試會(huì)話對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作,在所述指示信息指示的調(diào)試目標(biāo)不屬于所述被允許調(diào)試的調(diào)試目標(biāo)或者所述調(diào)試指令不屬于被允許的調(diào)試指令的情況下,將用于指示調(diào)試失敗的信息作為所述調(diào)試的結(jié)果; 所述將調(diào)試的結(jié)果通過所述HTTP協(xié)議返回給所述宿主機(jī)包括:所述調(diào)試管理器將所述調(diào)試的結(jié)果通過所述HTTP服務(wù)器返回給所述宿主機(jī)。
7.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述調(diào)試目標(biāo)包括:進(jìn)程和/或文件。
8.一種遠(yuǎn)程調(diào)試裝置,其特征在于,包括: 接收單元,用于接收宿主機(jī)基于HTTP協(xié)議傳輸?shù)恼{(diào)試請(qǐng)求,其中,所述調(diào)試請(qǐng)求中攜帶調(diào)試指令和用于指示調(diào)試目標(biāo)的指示信息; 執(zhí)行單元,用于響應(yīng)所述調(diào)試請(qǐng)求來對(duì)所述指示信息指示的調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作; 返回單元,用于將調(diào)試的結(jié)果通過所述HTTP協(xié)議返回給所述宿主機(jī)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述執(zhí)行單元包括: 判斷模塊,用于判斷所述指示信息指示的調(diào)試目標(biāo)是否屬于被允許調(diào)試的調(diào)試目標(biāo)以及所述調(diào)試指令是否屬于被允許的調(diào)試指令; 執(zhí)行模塊,用于在判斷出所述指示信息指示的調(diào)試目標(biāo)屬于所述被允許調(diào)試的調(diào)試目標(biāo)且所述調(diào)試指令屬于被允許的調(diào)試指令時(shí),響應(yīng)所述調(diào)試請(qǐng)求對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作;在判斷出所述指示信息指示的調(diào)試目標(biāo)不屬于所述被允許調(diào)試的調(diào)試目標(biāo)或者所述調(diào)試指令不屬于被允許的調(diào)試指令時(shí),將用于指示調(diào)試失敗的信息作為所述調(diào)試的結(jié)果。
10.根據(jù)權(quán)利要求9所述的裝`置,其特征在于,所述執(zhí)行模塊包括: 判斷子模塊,用于在判斷出所述指示信息指示的調(diào)試目標(biāo)屬于所述被允許調(diào)試的調(diào)試目標(biāo)且所述調(diào)試指令屬于被允許的調(diào)試指令時(shí),判斷是否存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話; 執(zhí)行子模塊,用于在判斷出存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話時(shí),通過存在的所述調(diào)試會(huì)話對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作;在判斷出不存在與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話時(shí),建立與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話,并通過建立的所述調(diào)試會(huì)話對(duì)所述調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,還包括: 第一接收單元,用于在所述執(zhí)行單元響應(yīng)所述調(diào)試請(qǐng)求來對(duì)所述指示信息指示的調(diào)試目標(biāo)執(zhí)行所述調(diào)試指令所指示的調(diào)試操作之后,接收所述宿主機(jī)基于HTTP協(xié)議傳輸?shù)耐顺稣?qǐng)求,其中,所述退出請(qǐng)求用于請(qǐng)求停止對(duì)所述調(diào)試目標(biāo)進(jìn)行調(diào)試; 查找單元,用于響應(yīng)所述退出請(qǐng)求來查找與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話; 第一關(guān)閉單元,用于在所述查找單元未查找到與所述調(diào)試目標(biāo)對(duì)應(yīng)的調(diào)試會(huì)話的情況下,關(guān)閉查找到的所述調(diào)試會(huì)話。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,還包括: 檢測(cè)單元,用于周期性地檢測(cè)所述調(diào)試會(huì)話對(duì)應(yīng)的最后接收到的調(diào)試請(qǐng)求的接收時(shí)間到當(dāng)前時(shí)間之間的時(shí)間間隔是否超出預(yù)定的閾值; 第二關(guān)閉單元,用于在所述判斷單元判斷出超出所述預(yù)定的閾值時(shí),關(guān)閉所述調(diào)試會(huì)話。
【文檔編號(hào)】H04L12/26GK103684899SQ201210344301
【公開日】2014年3月26日 申請(qǐng)日期:2012年9月17日 優(yōu)先權(quán)日:2012年9月17日
【發(fā)明者】鄧飛, 林恬, 郭志懋 申請(qǐng)人:騰訊科技(深圳)有限公司