欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法

文檔序號:7770523閱讀:263來源:國知局
一種網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法
【專利摘要】本發(fā)明提供一種網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,該方法包括:確定要調(diào)試的函數(shù),下發(fā)跳轉(zhuǎn)打印指令;獲取所述被調(diào)試函數(shù)的名稱和執(zhí)行地址;根據(jù)所述被調(diào)試函數(shù)的名稱和執(zhí)行地址,用預(yù)制的跳轉(zhuǎn)打印函數(shù)修改被調(diào)試函數(shù)的棧,使得跳轉(zhuǎn)打印函數(shù)先于被調(diào)試函數(shù)執(zhí)行;執(zhí)行跳轉(zhuǎn)打印函數(shù),打印調(diào)試信息。該方法只要預(yù)先做好一條或者多條打印信息,當(dāng)網(wǎng)絡(luò)設(shè)備出現(xiàn)問題時,通過一個動態(tài)輸入命令來使原本沒有打印信息的函數(shù)自動打印預(yù)設(shè)的信息,以便開發(fā)人員調(diào)試定位信息。這種方法具有較廣泛的應(yīng)用場景,不僅僅局限于已經(jīng)發(fā)布的產(chǎn)品,對于正處在開發(fā)階段的產(chǎn)品來說,同樣可以使用該方法調(diào)試定位問題。
【專利說明】一種網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)設(shè)備的調(diào)試領(lǐng)域,特別涉及一種通過動態(tài)插入函數(shù)的方式對網(wǎng)絡(luò)系統(tǒng)進(jìn)行調(diào)試的方法。
【背景技術(shù)】
[0002]當(dāng)今是互聯(lián)網(wǎng)快速發(fā)展的時代,各種各樣的網(wǎng)絡(luò)產(chǎn)品層出不窮,用戶對網(wǎng)絡(luò)產(chǎn)品的需求也逐漸增多,各個廠商也不斷的給用戶更加豐富的功能和體驗(yàn),成為網(wǎng)絡(luò)設(shè)備上網(wǎng)絡(luò)通信過程中必不可少的環(huán)節(jié)。隨著近些年的快速發(fā)展,網(wǎng)絡(luò)設(shè)備也越來越多,越來越復(fù)雜,交換機(jī)、路由器產(chǎn)品也僅僅是這些網(wǎng)絡(luò)產(chǎn)品中一小部分,網(wǎng)絡(luò)的部署也越來越復(fù)雜,從單機(jī)設(shè)備部署,框架式設(shè)備部署,到現(xiàn)在發(fā)展為數(shù)據(jù)中心、云部署。由于設(shè)備功能、網(wǎng)絡(luò)部署都變得越來越多,越來越復(fù)雜,因此一種良好的調(diào)試手段就顯得尤為重要。在產(chǎn)品發(fā)布之前的開發(fā)階段通常會有各種各樣的調(diào)試手段,但是在產(chǎn)品發(fā)布后,通常的調(diào)試手段都比較少,難以處理較復(fù)雜的場景。
[0003]現(xiàn)有技術(shù)通常是在代碼中添加大量打印或者日志信息,當(dāng)網(wǎng)絡(luò)設(shè)備出現(xiàn)問題時通過后臺查看日志信息,或者用戶終端的打印信息來分析可能出現(xiàn)的問題。但是這就需要提前將打印信息做好,如果打印信息沒有添加到發(fā)布的版本中,那么就無法獲取相應(yīng)信息。
[0004]同時,當(dāng)設(shè)備出現(xiàn)問題時,僅僅看打印信息是不夠的,研發(fā)人員通常需要一種方法獲知某個代碼流程是否走到了,或者更細(xì)微的某個函數(shù)是否得到了執(zhí)行,但是遺憾的是,當(dāng)前要不沒有方法要不還要借助第三方工具。當(dāng)發(fā)布的網(wǎng)絡(luò)設(shè)備出現(xiàn)問題時,研發(fā)人員通常無法通過跟蹤源代碼函數(shù)來確定某個函數(shù)是否得到執(zhí)行。

【發(fā)明內(nèi)容】

[0005]本發(fā)明鑒于上述問題而提出,其目的是提供一種網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,實(shí)現(xiàn)動態(tài)打印,只要預(yù)先做好一條或者多條打印信息,當(dāng)網(wǎng)絡(luò)設(shè)備出現(xiàn)問題時,通過一個動態(tài)輸入命令來使原本沒有打印信息的函數(shù)自動打印預(yù)設(shè)的信息,以便開發(fā)人員調(diào)試定位信息。
[0006]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是:一種網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,該方法包括:
[0007]通過CLI或者WEB下發(fā)要調(diào)試的函數(shù)名稱;
[0008]獲取所述被調(diào)試函數(shù)的名稱和執(zhí)行地址;
[0009]根據(jù)所述被調(diào)試函數(shù)的名稱和執(zhí)行地址,用預(yù)制的跳轉(zhuǎn)打印函數(shù)修改被調(diào)試函數(shù)的棧,使得跳轉(zhuǎn)打印函數(shù)先于被調(diào)試函數(shù)執(zhí)行;
[0010]執(zhí)行跳轉(zhuǎn)打印函數(shù),打印調(diào)試信息。
[0011]進(jìn)一步的,在所述確定要調(diào)試的被調(diào)試函數(shù),跳轉(zhuǎn)到跳轉(zhuǎn)打印函數(shù)之前還包括:預(yù)先制作跳轉(zhuǎn)指令的二進(jìn)制碼,所述二進(jìn)制碼包括跳轉(zhuǎn)打印函數(shù)的地址。
[0012]進(jìn)一步的,執(zhí)行跳轉(zhuǎn)打印函數(shù)包括:
[0013]保存被調(diào)試函數(shù)的入?yún)⒑头祷氐刂罚?br> [0014]打印調(diào)試信息;[0015]恢復(fù)被調(diào)試函數(shù)的棧信息;
[0016]修改跳轉(zhuǎn)打印函數(shù)的棧信息。
[0017]進(jìn)一步的,修改被調(diào)試函數(shù)的棧包括:保存被調(diào)試函數(shù)二進(jìn)制代碼的前幾個字節(jié),修改為預(yù)先寫好的跳轉(zhuǎn)指令的二進(jìn)制碼,使得第一個指令跳轉(zhuǎn)到跳轉(zhuǎn)打印函數(shù)。
[0018]進(jìn)一步的,所述的修改跳轉(zhuǎn)打印函數(shù)的信息是修改跳轉(zhuǎn)打印函數(shù)的后面幾字節(jié)的二進(jìn)制代碼,使得跳轉(zhuǎn)打印函數(shù)的棧得到正常的回收并返回到被調(diào)試函數(shù)。
[0019]本發(fā)明方法的有益效果是:使用本專利描述的方法,當(dāng)想查看某函數(shù)是否得到執(zhí)行時,只需下發(fā)命令就可以了,如果確實(shí)得到了執(zhí)行,會有對應(yīng)的函數(shù)名稱打印出來,如果沒有得到執(zhí)行,那么就沒有打印信息。
[0020]該方法使用簡單,且具有通用性,減少了各種調(diào)試打印信息的開發(fā)量,以及維護(hù)工作量,大大提高了工作效率。
[0021]這種方法具有較廣泛的應(yīng)用場景,不僅僅局限于已經(jīng)發(fā)布的產(chǎn)品,對于正處在開發(fā)階段的產(chǎn)品來說,同樣可以使用該方法調(diào)試定位問題。
【專利附圖】

【附圖說明】
[0022]圖1是本發(fā)明的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法的原理示意圖;
[0023]圖2是本發(fā)明的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法的執(zhí)行流程圖;
[0024]圖3是本發(fā)明的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法的使用流程圖。
【具體實(shí)施方式】
[0025]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明了,下面結(jié)合【具體實(shí)施方式】并參照附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)該理解,這些描述只是示例性的,而并非要限制本發(fā)明的范圍。此外,在以下說明中,省略了對公知結(jié)構(gòu)和技術(shù)的部份描述,以避免不必要地混淆本發(fā)明的概念。
[0026]圖1顯示了本發(fā)明的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法的原理示意圖。
[0027]圖中示例性的給出了最簡單的函數(shù)調(diào)用關(guān)系,其中函數(shù)B是分析確定的要調(diào)試的函數(shù),函數(shù)D是按本方法制作的跳轉(zhuǎn)打印函數(shù)。
[0028]如圖1所示,正常的調(diào)試方法中的函數(shù)調(diào)用過程是:函數(shù)A調(diào)用函數(shù)B,函數(shù)B調(diào)用函數(shù)C,函數(shù)C執(zhí)行完后返回到函數(shù)B,函數(shù)B執(zhí)行完后返回到函數(shù)A,而跳轉(zhuǎn)打印函數(shù)D根本沒有被執(zhí)行到。上述執(zhí)行順序見圖1的數(shù)字序號1-2-3-4。
[0029]本發(fā)明的調(diào)試方法中,函數(shù)的執(zhí)行順序被打斷了,變成函數(shù)A調(diào)用函數(shù)B,而此時函數(shù)B沒有得到執(zhí)行反而去執(zhí)行跳轉(zhuǎn)打印函數(shù)D,而后跳轉(zhuǎn)打印函數(shù)D執(zhí)行完后返回到函數(shù)B,此時函數(shù)B才開始得到執(zhí)行,然后調(diào)用函數(shù)C,而后就是順序執(zhí)行了。上述執(zhí)行順序見圖1中文序號一 -二-三-四-五。
[0030]圖2顯示了本發(fā)明網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法的執(zhí)行流程圖。
[0031]如圖2所示,本發(fā)明網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法的執(zhí)行包括以下步驟:
[0032]首先是準(zhǔn)備工作(步驟301),包括預(yù)制跳轉(zhuǎn)指令的二進(jìn)制機(jī)器碼和制作跳轉(zhuǎn)打印函數(shù)D,制作跳轉(zhuǎn)二進(jìn)制碼的作用是跳轉(zhuǎn)到跳轉(zhuǎn)打印函數(shù)D的地址;
[0033]接下來就是,確定需要調(diào)試的函數(shù)B(步驟302),通過CLI或者WEB下發(fā)命令(步驟303),獲取函數(shù)B的函數(shù)名稱和地址(步驟304),分析需要打斷執(zhí)行的函數(shù)B的執(zhí)行地址,并將函數(shù)B的名稱附給一個全局變量。
[0034]接下來就是跳轉(zhuǎn)到跳轉(zhuǎn)打印函數(shù)D (步驟305);
[0035]當(dāng)跳轉(zhuǎn)打印函數(shù)D開始執(zhí)行時,完成的步驟包括:
[0036](I)保存函數(shù)B的信息(步驟306),包括函數(shù)B的入?yún)⒑头祷氐刂?。保存函?shù)B的入?yún)?,對于x86平臺來說就是EBP (寄存器)以及其偏移對應(yīng)地址中的值,對于Mips(Microprocessor without interlocked piped stages)平臺對應(yīng) a0, al, a2, a3 寄存器。保存這些值到跳轉(zhuǎn)打印函數(shù)D的??臻g。需要說明的是Mips是一種CPU架構(gòu)的名字,Mips和x86,arm都是對應(yīng)的CPU架構(gòu)。
[0037]保存函數(shù)B的返回地址。這樣程序才能最終返回到函數(shù)A中。
[0038](2)打印函數(shù)B的調(diào)試信息(步驟307)。這里以打印函數(shù)名舉例,由于前面在全局變量中保存了函數(shù)B的名字,因此這里就可以打印出該函數(shù)的名字了。
[0039]當(dāng)然,如果函數(shù)B得到了執(zhí)行則會打印出調(diào)試信息(步驟311),如果函數(shù)B沒有執(zhí)行則無打印輸出(步驟312)。
[0040](3)恢復(fù)函數(shù)B的信息(步驟308)。恢復(fù)之前保存在跳轉(zhuǎn)打印函數(shù)D??臻g的函數(shù)B的入?yún)?、返回地址等信息?br> [0041]這樣函數(shù)B就正常了,但是由于跳轉(zhuǎn)打印函數(shù)D還沒有返回,因此函數(shù)B還得不到執(zhí)行。
[0042](4)所以要修改跳轉(zhuǎn)打印函數(shù)D的信息(步驟309)。
[0043]需要說明的是,大部分函數(shù)開始時會進(jìn)行開棧,在函數(shù)結(jié)束時會收棧。進(jìn)入跳轉(zhuǎn)打印函數(shù)D后也會有這些操作,如果在跳轉(zhuǎn)打印函數(shù)D執(zhí)行完畢后直接跳轉(zhuǎn)到函數(shù)B,那么實(shí)際上跳轉(zhuǎn)打印函數(shù)D的棧沒有回收,會造成不可預(yù)知的問題。因此需要將跳轉(zhuǎn)打印函數(shù)D的最后面的二進(jìn)制數(shù)值改掉,這樣跳轉(zhuǎn)打印函數(shù)D會自然地返回到函數(shù)B,同時也做了棧的回收工作。
[0044]跳轉(zhuǎn)打印函數(shù)D執(zhí)行完了,就會打印出函數(shù)B的名稱。
[0045]現(xiàn)在處于函數(shù)B中,且函數(shù)B的棧信息、入?yún)?、返回地址等信息都得到了恢?fù),就好像從來沒有變化過一樣,因此函數(shù)B可以繼續(xù)順序執(zhí)行(步驟310)。
[0046]如果函數(shù)B得到執(zhí)行了,則會打印出函數(shù)B的名稱,說明程序出錯的地方在函數(shù)B的后面。
[0047]當(dāng)然,如果程序在函數(shù)B的前面就已經(jīng)出錯了,這時函數(shù)B是不會執(zhí)行的,因此也就沒有打印信息。所以如果沒有打印到函數(shù)的名稱,就說明出錯的地方在函數(shù)B前面。
[0048]如上所述,根據(jù)本發(fā)明的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,可以用于判斷程序出錯的位置。
[0049]圖3示出了本發(fā)明網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法的使用流程圖。
[0050]當(dāng)程序中的調(diào)用函數(shù)很多時,查找出錯函數(shù)可以采用二分法查找。
[0051]首先預(yù)制跳轉(zhuǎn)打印函數(shù)及跳轉(zhuǎn)指令(步驟401);
[0052]然后確定要調(diào)試的一個或者多個函數(shù)(步驟402);
[0053]其次就是通過CLI或者WEB下發(fā)跳轉(zhuǎn)打印命令(步驟403);
[0054]執(zhí)行程序,查看打印的信息(步驟404);
[0055]找出打印出函數(shù)名的函數(shù)與未打印出函數(shù)名的函數(shù)(步驟405);[0056]然后判斷相近的打印出的函數(shù)名與未打印出的函數(shù)名之間是否還包含有其他函數(shù)(步驟406);
[0057]如果沒有其他函數(shù)了則該未打印出函數(shù)名的函數(shù)就是出錯的函數(shù)(步驟407)。
[0058]如果還有其他函數(shù),則繼續(xù)返回到確定要調(diào)試的一個或多個函數(shù)(步驟402),繼續(xù)順序執(zhí)行,直至相鄰的打印出的函數(shù)名與未打印出的函數(shù)名之間沒有其他函數(shù),則該未打印出函數(shù)名的函數(shù)就是出錯的函數(shù)。
[0059]公知的方法是,如果要調(diào)試函數(shù)A,比如僅僅是打印函數(shù)A的名字,那么需要在代碼里面寫好這句話,無論什么時候,只要函數(shù)A得到執(zhí)行,那么就會打印函數(shù)A的名字。如果要調(diào)試函數(shù)B,也需要上述過程。如果要調(diào)試的函數(shù)很多,那么就要做很多上述工作,操作非常不方便。
[0060]但是如果應(yīng)用本發(fā)明的調(diào)試方法,只需要預(yù)先制作一個跳轉(zhuǎn)打印函數(shù),以及跳轉(zhuǎn)指令的二進(jìn)制碼就可以了。無論你要調(diào)試哪個函數(shù),都可以使用這個方法,而且打印信息只生效一次,不會一直存在,這樣不僅使用方便,同時也不會帶來過多的打印輸出。
[0061]應(yīng)當(dāng)理解的是,本發(fā)明的上述【具體實(shí)施方式】僅僅用于示例性說明或解釋本發(fā)明的原理,而不構(gòu)成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。
【權(quán)利要求】
1.一種網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,其特征在于,該方法包括: 通過CLI或者WEB下發(fā)要調(diào)試的函數(shù)名稱; 獲取所述被調(diào)試函數(shù)的名稱和執(zhí)行地址; 根據(jù)所述被調(diào)試函數(shù)的名稱和執(zhí)行地址,用預(yù)制的跳轉(zhuǎn)指令修改被調(diào)試函數(shù)的棧,使得跳轉(zhuǎn)打印函數(shù)先于被調(diào)試函數(shù)執(zhí)行; 執(zhí)行程序,打印調(diào)試信息。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,其特征在于,在所述通過CLI或者WEB下發(fā)要調(diào)試的函數(shù)名稱之前還包括:預(yù)先制作跳轉(zhuǎn)指令的二進(jìn)制機(jī)器碼,所述二進(jìn)制碼包括跳轉(zhuǎn)到打印函數(shù)的地址。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,其特征在于,執(zhí)行跳轉(zhuǎn)打印函數(shù)時包括下列步驟: 保存被調(diào)試函數(shù)的入?yún)⒑头祷氐刂罚? 打印調(diào)試信息; 恢復(fù)被調(diào)試函數(shù)的棧信息; 修改跳轉(zhuǎn)打印函數(shù)的棧信息。
4.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,其特征在于,修改被調(diào)試函數(shù)的棧包括:保存被調(diào)試函數(shù)二進(jìn)制代碼的前幾個字節(jié),并修改為預(yù)先寫好的跳轉(zhuǎn)指令的二進(jìn)制碼,使得第一個指令跳轉(zhuǎn)到跳轉(zhuǎn)打印函數(shù)。
5.根據(jù)權(quán)利要求3所述的網(wǎng)絡(luò)系統(tǒng)的調(diào)試方法,其特征在于,所述的修改跳轉(zhuǎn)打印函數(shù)的信息是修改跳轉(zhuǎn)打印函數(shù)的后面幾字節(jié)的二進(jìn)制代碼,使得跳轉(zhuǎn)打印函數(shù)的棧得到正?;厥詹⒎祷氐奖徽{(diào)試函數(shù)。
【文檔編號】H04L12/26GK103516561SQ201310420124
【公開日】2014年1月15日 申請日期:2013年9月13日 優(yōu)先權(quán)日:2013年9月13日
【發(fā)明者】李鵬 申請人:漢柏科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
民权县| 台前县| 汉川市| 岐山县| 湄潭县| 福泉市| 资阳市| 恩平市| 漳平市| 静海县| 临武县| 齐河县| 微山县| 香河县| 原平市| 安乡县| 桂阳县| 霍林郭勒市| 山丹县| 乌鲁木齐县| 信阳市| 屯昌县| 房山区| 巨野县| 宁海县| 从化市| 图木舒克市| 张家川| 兴安县| 罗甸县| 南岸区| 呈贡县| 镇江市| 桐城市| 安西县| 万荣县| 乐清市| 丹阳市| 东乌珠穆沁旗| 乌拉特中旗| 彰化市|