国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種程序檢測方法及裝置與流程

      文檔序號:11582415閱讀:269來源:國知局
      一種程序檢測方法及裝置與流程

      本發(fā)明涉及無線通信領域,特別涉及一種程序檢測方法及裝置。



      背景技術:

      隨著無線通信技術的發(fā)展,無線傳感器網絡(wirelesssensornetworks,wsns)的應用越來越廣泛,具體的,無線傳感器網絡是由部署在監(jiān)測區(qū)域內大量網絡節(jié)點相互通信形成的多跳自組織網絡系統(tǒng)。

      其中,無線傳感器網絡中的網絡節(jié)點中運行的程序接收其他網絡節(jié)點下發(fā)的無線控制指令后,可以執(zhí)行相應的代碼內容以響應該無線控制指令,但是,在響應無線控制指令過程中,可能會出現(xiàn)控制流錯誤。其中,控制流錯誤包括:節(jié)點內部發(fā)生的控制流錯誤和所下發(fā)的無線控制指令因為數據異變而引發(fā)的控制流錯誤,具體的,節(jié)點內部發(fā)生控制流錯誤的原因為:在惡劣的環(huán)境中,高能粒子等可能會瞬間改變部件(門電路、sram單元、鎖存器等),這些硬件中的瞬態(tài)故障會反映到軟件中去,可能會引發(fā)數據位翻轉、寄存器狀態(tài)改變、存儲指令錯誤、程序跑飛等不可預知的錯誤,這些錯誤會帶來瞬態(tài)故障,進而瞬態(tài)故障導致程序中發(fā)生控制流錯誤;而對于所下發(fā)的無線控制指令因為數據異變而引發(fā)的控制流錯誤而言:網絡節(jié)點的硬件發(fā)生錯誤,可能會引發(fā)所下發(fā)的無線控制指令異變,使得軟件作出錯誤的動作。其中,所謂的該瞬態(tài)故障是一種由于外界環(huán)境導致的軟故障,并不意味著網絡節(jié)點出現(xiàn)了故障。

      當然,在無線傳感器網絡以外的其他無線通信網絡,如:無人機通信網絡、工業(yè)控制網絡中,網絡節(jié)點在響應無線控制指令過程中也可能出現(xiàn)控制流錯誤。

      那么,如何檢測網絡節(jié)點中的程序在響應無線控制指令過程中所發(fā)生的控制流錯誤,是一個亟待解決的問題。



      技術實現(xiàn)要素:

      本發(fā)明實施例的目的在于提供一種程序檢測方法及裝置,以有效檢測網絡節(jié)點中的程序在響應無線控制指令過程中所發(fā)生的控制流錯誤。

      為到達上述目的,本發(fā)明實施例公開了一種程序檢測方法,應用于無線通信網絡中的網絡節(jié)點;所述方法包括:

      網絡節(jié)點中運行的程序接收其他網絡節(jié)點下發(fā)的無線控制指令,其中,所述程序預先被設置有第一動態(tài)標簽,所述程序由n個基本塊構成,每一基本塊被設置有第一靜態(tài)標簽和第二靜態(tài)標簽,所述第一靜態(tài)標簽為用于標識當前基本塊的信息且屬于n+1位的二進制數據的第一數據值,所述第二靜態(tài)標簽為用于標識當前基本塊的后繼基本塊的信息且屬于n+1位的二進制數據的第二數據值,所述第一動態(tài)標簽為屬于n+1位的二進制數據的第三數據值且初始化時全置為1,當前基本塊的后繼基本塊為:程序執(zhí)行過程中當前基本塊相鄰的下一基本塊;

      在執(zhí)行第一基本塊的入口指令之前,將所述第一基本塊的第一靜態(tài)標簽和當前的第一動態(tài)標簽進行邏輯與運算,得到第一類運算結果,所述第一基本塊為所述程序中n個基本塊中的與響應所接收到的指令相關的任一基本塊;

      判斷所述第一類運算結果是否為0,如果是,確定所述程序出現(xiàn)屬于節(jié)點內部錯誤類型的控制流錯誤,否則,

      根據所述第一類運算結果更新當前的第一動態(tài)標簽;

      在執(zhí)行所述第一基本塊的出口指令之前的預定位置的指令之前,將當前的第二動態(tài)標簽和當前的第一動態(tài)標簽進行邏輯或運算,得到第二類運算結果,根據所述第二類運算結果更新當前的第二動態(tài)標簽,其中,所述第二動態(tài)標簽為預先為所述程序設置的,且所述第二動態(tài)標簽為屬于n+1位的二進制數據的第四數據值且初始化時全置為0;

      在執(zhí)行所述第一基本塊的出口指令之前,判斷所述第一基本塊是否為特殊基本塊,如果判斷出所述第一基本塊為特殊基本塊,則判斷當前的第二動態(tài)標簽是否等于所述第一基本塊的指令標簽,若否,確定所述程序出現(xiàn)屬于通信錯誤類型的控制流錯誤,若是,在執(zhí)行完出口指令后初始化當前的第二動態(tài)標簽,其中,所述特殊基本塊為用于執(zhí)行動作的基本塊,所述指令標簽用于預存其他網絡節(jié)點所下發(fā)的所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑,伴隨所述無線控制指令的到來而插入到基本塊中,且屬于n+1位的二進制數據的第五數據值;當執(zhí)行完畢所述第一基本塊的出口指令時,判斷所述第一基本塊是否為與所述無線控制指令相關的最后一個基本塊,如果是,初始化當前的第 一動態(tài)標簽,如果否,根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,并將所述無線控制指令所關聯(lián)的基本塊中的下一基本塊作為第一基本塊,繼續(xù)執(zhí)行所述在執(zhí)行第一基本塊的入口指令之前,將所述第一基本塊的第一靜態(tài)標簽和當前的第一動態(tài)標簽進行邏輯與運算,得到第一類運算結果的步驟。

      具體的,所述第一靜態(tài)標簽的n+1位中,最高位為0,第i位為1,其余位均為0,其中,i為當前基本塊在所有基本塊中的順序位;

      所述第二靜態(tài)標簽的n+1位中,最高位為1,第m位為1,其余位為0,m為當前基本塊的后繼基本塊在所有基本塊中的順序位;

      所述指令標簽的n+1位中,最高位為0,第j位為1,其余位為0,其中,j為所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑中的各個基本塊在所有基本塊中的順序位。

      具體的,所述根據所述第一類運算結果更新當前的第一動態(tài)標簽,包括:

      將所述第一類運算結果的值,確定為當前的第一動態(tài)標簽;

      相應的,所述根據所述第二類運算結果更新當前的第二動態(tài)標簽,包括:

      將所述第二類運算結果的值,確定為當前的第二動態(tài)標簽;相應的,所述根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,包括:

      將所述第一基本塊的第二靜態(tài)標簽確定為當前的第一動態(tài)標簽。

      具體的,在任一基本塊中插入用于設置標簽的指令的方式,包括:

      對于當前基本塊不是特殊基本塊的情況:

      在當前基本塊的入口指令之前插入test指令:if((g=g&li)==0)error;其中g為第一動態(tài)標簽,li為當前基本塊的第一靜態(tài)標簽;

      在當前基本塊的出口指令之前的預定位置的指令之前插入updates指令:s=s‖g;其中s為第二動態(tài)標簽;

      在當前基本塊的出口指令之后插入updateg指令:g=bi;其中bi為當前基本塊的第二靜態(tài)標簽;

      對于當前基本塊為特殊基本塊的情況:

      在當前基本塊的入口指令之前插入test指令:if((g=g&li)==0)error;其中g為第一動態(tài)標簽,li為當前基本塊的第一靜態(tài)標簽;

      在當前基本塊的出口指令之前的預定位置的指令之前插入updates指令:s=s‖g;其中s為第二動態(tài)標簽;

      在當前基本塊的出口指令之前插入test指令:if(s≠c)error,其中c為指令標簽;

      在當前基本塊的出口指令之后插入updates指令:s=0;

      在當前基本塊的出口指令之后插入updateg指令:g=bi;其中bi為當前基本塊的第二靜態(tài)標簽。

      為達到上述目的,本發(fā)明實施例還公開了一種程序檢測裝置,應用于無線通信網絡中的網絡節(jié)點;所述裝置包括:

      無線控制指令接收單元,用于網絡節(jié)點中運行的程序接收其他網絡節(jié)點下發(fā)的無線控制指令,其中,所述程序預先被設置有第一動態(tài)標簽,所述程序由n個基本塊構成,每一基本塊被設置有第一靜態(tài)標簽和第二靜態(tài)標簽,所述第一靜態(tài)標簽為用于標識當前基本塊的信息且屬于n+1位的二進制數據的第一數據值,所述第二靜態(tài)標簽為用于標識當前基本塊的后繼基本塊的信息且屬于n+1位的二進制數據的第二數據值,所述第一動態(tài)標簽為屬于n+1位的二進制數據的第三數據值且初始化時全置為1,當前基本塊的后繼基本塊為:程序執(zhí)行過程中當前基本塊相鄰的下一基本塊;

      第一類運算結果計算單元,用于在執(zhí)行第一基本塊的入口指令之前,將所述第一基本塊的第一靜態(tài)標簽和當前的第一動態(tài)標簽進行邏輯與運算,得到第一類運算結果,所述第一基本塊為所述程序中n個基本塊中的與響應所接收到的指令相關的任一基本塊;

      第一判斷單元,用于判斷所述第一類運算結果是否為0,如果是,執(zhí)行第一結果確定單元,否則,執(zhí)行第一動態(tài)標簽更新單元;

      所述第一結果確定單元,用于確定所述程序出現(xiàn)屬于節(jié)點內部錯誤類型的控制流錯誤;

      所述第一動態(tài)標簽更新單元,用于根據所述第一類運算結果更新當前的第一動態(tài)標簽;

      第二動態(tài)標簽確定單元,用于在執(zhí)行所述第一基本塊的出口指令之前的預定位置的指令之前,將當前的第二動態(tài)標簽和當前的第一動態(tài)標簽進行邏輯或運算,得到第二類運算結果,根據所述第二類運算結果更新當前的第二動態(tài)標簽,其中,所述第二動態(tài)標簽為預先為所述程序設置的,且所述第二動態(tài)標簽為屬于n+1位的二進制數據的第四數據值且初始化時全置為0;

      第二判斷單元,用于在執(zhí)行所述第一基本塊的出口指令之前,判斷所述第一基本塊是否為特殊基本塊,如果判斷出所述第一基本塊為特殊基本塊,則執(zhí)行第三判斷單元,如果判斷出所述第一基本塊不是特殊基本塊,則執(zhí)行第四判斷單元;

      所述第三判斷單元,用于判斷當前的第二動態(tài)標簽是否等于所述第一基本塊的指令標簽,若否,執(zhí)行第二結果確定單元,若是,執(zhí)行第二動態(tài)標簽初始化單元,其中,所述特殊基本塊為用于執(zhí)行動作的基本塊,所述指令標簽用于預存其他網絡節(jié)點所下發(fā)的所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑,伴隨所述無線控制指令的到來而插入到基本塊中,且屬于n+1位的二進制數據的第五數據值;

      所述第二結果確定單元,用于確定所述程序出現(xiàn)屬于通信錯誤類型的控制流錯誤,

      所述第二動態(tài)標簽初始化單元,在執(zhí)行完出口指令后初始化當前的第二動態(tài)標簽,并觸發(fā)第四判斷單元;

      第四判斷單元,用于當執(zhí)行完畢所述第一基本塊的出口指令時,判斷所述第一基本塊是否為與所述無線控制指令相關的最后一個基本塊,如果是,初始化當前的第一動態(tài)標簽,如果否,根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,并將所述無線控制指令所關聯(lián)的基本塊中的下一基本塊作為第一基本塊,觸發(fā)所述第一類運算結果計算單元。

      具體的,所述第一靜態(tài)標簽的n+1位中,最高位為0,第i位為1,其余位均為0,其中,i為當前基本塊在所有基本塊中的順序位;

      所述第二靜態(tài)標簽的n+1位中,最高位為1,第m位為1,其余位為0,m為當前基本塊的后繼基本塊在所有基本塊中的順序位;

      所述指令標簽的n+1位中,最高位為0,第j位為1,其余位為0,其中,j為所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑中的各個基本塊在所有基本塊中的順序位。

      具體的,所述第一動態(tài)標簽更新單元根據所述第一類運算結果更新當前的第一動態(tài)標簽,包括:

      將所述第一類運算結果的值,確定為當前的第一動態(tài)標簽;

      相應的,所述第二動態(tài)標簽更新單元根據所述第二類運算結果更新當前的第二動態(tài)標簽,包括:

      將所述第二類運算結果的值,確定為當前的第二動態(tài)標簽;

      相應的,所述第四判斷單元根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,包括:

      將所述第一基本塊的第二靜態(tài)標簽確定為當前的第一動態(tài)標簽。

      具體的,在任一基本塊中插入用于設置標簽的指令的方式,包括:

      對于當前基本塊不是特殊基本塊的情況:

      在當前基本塊的入口指令之前插入test指令:if((g=g&li)==0)error;其中g為第一動態(tài)標簽,li為當前基本塊的第一靜態(tài)標簽;

      在當前基本塊的出口指令之前的預定位置的指令之前插入updates指令:s=s‖g;其中s為第二動態(tài)標簽;

      在當前基本塊的出口指令之后插入updateg指令:g=bi;其中bi為當前基本塊的第二靜態(tài)標簽;

      對于當前基本塊為特殊基本塊的情況:

      在當前基本塊的入口指令之前插入test指令:if((g=g&li)==0)error;其中g為第一動態(tài)標簽,li為當前基本塊的第一靜態(tài)標簽;

      在當前基本塊的出口指令之前的預定位置的指令之前插入updates指令:s=s‖g;其中s為第二動態(tài)標簽;

      在當前基本塊的出口指令之前插入test指令:if(s≠c)error,其中c為指令標簽;

      在當前基本塊的出口指令之后插入updates指令:s=0;

      在當前基本塊的出口指令之后插入updateg指令:g=bi;其中bi為當前基本塊的第二靜態(tài)標簽。

      綜上可知,本發(fā)明實施例所述的一種程序檢測方法和裝置,通過對無線通信網絡中的網絡節(jié)點所運行的程序設置第一動態(tài)標簽和第二動態(tài)標簽,對所述程序中的各個基本塊分別設置第一靜態(tài)標簽和第二靜態(tài)標簽,同時對下發(fā)的無線控制指令設置指令標簽,進而,在響應無線控制指令的過程中,執(zhí)行任一基本塊時,基于兩種靜態(tài)標簽和第一動態(tài)標簽來判斷是否出現(xiàn)屬于節(jié)點內部錯誤類型的控制流錯誤,進一步的,在執(zhí)行特殊基本塊時,基于兩種靜態(tài)標簽、兩種動態(tài)標簽和一種指令標簽來判斷是否出現(xiàn)屬于通信錯誤類型的控制流錯誤,以在檢測節(jié)點內部所產生的控制流錯誤的同時檢測通信過程中的控制流錯誤??梢?,通過本方案可以有效檢測網絡節(jié)點中的程序在響應無線控制指令過程中所發(fā)生的控制流錯誤。

      當然,實施本發(fā)明的任一產品或方法必不一定需要同時達到以上所述的所有優(yōu)點。

      附圖說明

      為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。

      圖1為本發(fā)明實施例提供的隨機比特故障模型中數據異變示例圖;

      圖2為本發(fā)明實施例提供的一種程序檢測方法的總體設計圖;

      圖3中的(a)(b)(c)分別為本發(fā)明實施例提供的第一靜態(tài)標簽、第二靜態(tài)標簽和指令標簽的示意圖;

      圖4為本發(fā)明實施例提供的插入有用于設置標簽的指令的基本塊的示意圖;

      圖5為本發(fā)明實施例提供的插入有用于設置標簽的指令的能夠執(zhí)行動作的 基本塊的示意圖;

      圖6為本發(fā)明實施例提供的一種程序檢測方法的流程示意圖;

      圖7為本發(fā)明實施例提供的一個具體實施例中冒泡排序的程序代碼。

      圖8為圖7所示的冒泡排序程序的流程圖;

      圖9為在圖7所示的冒泡排序的某一基本塊插入指令的示例圖;

      圖10為本發(fā)明實施例提供的基本塊內部控制流錯誤的示意圖;

      圖11為本發(fā)明實施例提供的基本塊間控制流錯誤的示意圖;

      圖12為本發(fā)明實施例提供的一種程序檢測裝置的結構示意圖。

      具體實施方式

      下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

      為了有效檢測網絡節(jié)點中的程序在響應無線控制指令過程中所發(fā)生的控制流錯誤,本發(fā)明實施例提供了一種程序檢測方法及裝置。需要強調的是,本發(fā)明實施例所提及的網絡節(jié)點可以為無線傳感器網絡中的網絡節(jié)點,當然,還可以為無線傳感器網絡以外的其他無線通信網絡中的網絡節(jié)點,舉例而言:該無線無線網絡可以為:無人機通信網絡、工業(yè)控制網絡等等,在此不做窮舉。

      為了便于對發(fā)明實施例所提供的一種程序檢測方法的理解,首先介紹本發(fā)明實施例所提供的一種程序檢測方法所基于的原理性內容。具體介紹如下:

      首先,針對于控制流錯誤的實質內容的介紹:

      網絡節(jié)點中的程序在響應無線控制指令的過程中所發(fā)生的控制流錯誤主要包括:節(jié)點內部發(fā)生的控制流錯誤和下發(fā)的無線控制指令因為數據異變而引發(fā)的控制流錯誤,其中,對于下發(fā)的無線控制指令因為數據異變而引發(fā)的節(jié)點程序控制流錯誤,為了描述方便,下述簡稱通信過程中的控制流錯誤。

      其中,對于節(jié)點內部發(fā)生的瞬態(tài)故障所導致的控制流錯誤而言,現(xiàn)有技術 通常采用seu(singleeventupset)故障模型來檢測,由于同時發(fā)生兩次或多次瞬態(tài)故障的概率比較低,seu故障模型認為,在完成某一次動作的過程中,硬件中只會出現(xiàn)一次瞬態(tài)故障,使得一個數據位發(fā)生翻轉。而對于通信過程中的控制流錯誤而言,數據異變可以包括三種原因:(1)在發(fā)送之前,網絡節(jié)點寫入出錯;(2)在無線信道中,數據出現(xiàn)異變;(3)在接收到數據后,讀數據出現(xiàn)錯誤;其中,由于在數據傳輸過程中,數據是以二進制的方式進行收發(fā)的,那么,當數據發(fā)生異變的時候,相當于某些數據位發(fā)生了翻轉。

      綜上可知,不管是節(jié)點內部發(fā)生瞬態(tài)故障,還是通信過程中數據異變,最終導致的都是數據位發(fā)生翻轉。因此,本發(fā)明首先提出了一種隨機比特故障模型,該模型假定:在節(jié)點執(zhí)行一次動作時,節(jié)點內部或通信過程中只會發(fā)生一次瞬態(tài)故障,使數據的一位發(fā)生翻轉,比如控制指令d2,變成了d3,如圖1所示,控制指令d2為11000010,d2的第一位發(fā)生翻轉后,變成了11000011,也就是控制指令d3。顯然,這種錯誤的發(fā)生是隨機的。

      并且,節(jié)點內部和通信過程所發(fā)生的瞬態(tài)故障可以導致如下五種類控制流錯誤的發(fā)生,其中,第三種錯誤,一部分來自于本身節(jié)點的瞬態(tài)故障,更主要來自于下發(fā)的指令發(fā)生瞬態(tài)故障。具體的,五種控制流錯誤如下:

      (1)基本塊內部控制流錯誤;

      (2)從一個基本塊尾部非法跳到另一個基本塊開頭;

      (3)從一個基本塊尾部錯誤跳到另一個基本塊開頭;

      (4)一個基本塊的尾部到另一個基本塊的任意位置;

      (5)一個基本塊的任意位置到另一個基本塊的任意位置。

      其次,對于網絡節(jié)點中運行程序的預處理如下:

      預先對程序進行劃分,并給出如下定義:

      基本塊:一些連續(xù)指令的集合,在基本塊的內部,程序順序執(zhí)行,不會發(fā)生跳轉和調用等。其中,基本塊的第一條指令為入口,其它基本塊可以通過跳轉、調用等方式進入,其它指令不能跳入基本塊,而最后一條指令為程序的出口,可以跳轉到其它基本塊,其它指令不能跳出基本塊。

      程序流圖:在將程序劃分為基本塊之后,該程序就可以由基本塊集v和基本塊之間連接的“邊”集e組成的圖來表示,即程序流圖(pfg):p={v,e},其中,v={v1,v2,…vi,…,vn},e={e1,e2,…,ei,…,em},vi代表基本塊,邊ei代表從基本塊vi到基本塊vj的分支bri,j。

      后繼基本塊:在程序流圖p={v,e},當bri,j∈e,定義vj為vi后繼基本塊,并且,vi所有的后續(xù)基本塊的集合,稱為后繼基本塊集,符號為suc(vi)。

      再次,針對于各類標簽的具體細節(jié)的介紹:

      如圖2所示,本發(fā)明實施例通過為程序設置一種動態(tài)標簽和兩種靜態(tài)標簽來檢測由于節(jié)點內部導致的控制流錯誤,在檢測由于節(jié)點內部導致的控制流錯誤的基礎上,增加另一種動態(tài)標簽和指令標簽,以在檢測節(jié)點內部所產生的控制流錯誤的同時檢測通信過程中的控制流錯誤,并且,該指令標簽在下發(fā)指令的過程中,同時下發(fā)。

      其中,檢測由于節(jié)點內部導致的控制流錯誤所利用的兩種靜態(tài)標簽為:li和bi,li用于標識當前基本塊信息,bi用于記錄后續(xù)基本塊的信息,而一種動態(tài)標簽可以為g,隨著程序執(zhí)行動態(tài)更新,用于記錄程序的運行狀態(tài);進一步的,為了同時能夠檢測通信過程中的控制流錯誤,增加有動態(tài)標簽s和指令標簽cj,動態(tài)標簽s隨著程序執(zhí)行動態(tài)更新,用于記錄程序的運行狀態(tài),而指令標簽cj伴隨無線控制指令同時下發(fā)給節(jié)點,預存無線控制指令的執(zhí)行路徑。下面對各個標簽進行詳細介紹:

      首先假設在網絡節(jié)點中運行的程序,有n個基本塊,這n個基本模塊分別定義為v1,v2,…vi,…,vn,在這里i是基本塊的標號,0≤i≤n,j代表指令編號。

      靜態(tài)標簽li:用于標識當前基本塊vi信息。具體的,li共有n+1位,最高位為0,第i位為1,其余位都為0,如圖3(a)所示。

      靜態(tài)標簽bi:用于標識當前基本塊vi的后繼基本塊的信息。具體的,bi共有n+1位,最高位始終為1,如果suc(vi)={vm,vk…},如圖3(b)所示。

      指令標簽cj:用于預存下發(fā)指令在程序中執(zhí)行到最終輸出時所經歷的路徑,伴隨指令的到來同時輸入。具體的,cj共有n+1位。最高位始終為0,如果指令的執(zhí)行路徑包括{vm,vk…},如圖3(c)所示。

      動態(tài)標簽g:n+1位,在每個基本塊的末尾都會進行更新,并且,初始化為全置為1。

      動態(tài)標簽s:n+1位,在每個基本塊的中間更新,初始化時全置為0。

      需要說明的是,本發(fā)明所述各個標簽中的二進制0和1,僅僅是一種表征。即在電子工程中,對二進制0和1還有兩種定義形式,一種是把高電平定義為1、低電平定義為0,另一種定義是把高電平定義為0、低電平定義為1。

      最后,對各個標簽的插入方法的介紹:

      為了能夠檢測節(jié)點內部所發(fā)生的控制流錯誤,在程序中的各個基本塊中插入了一些指令,如圖4所示:

      其中,test指令:if((g=g&li)==0)error。通過這條指令,可以在基本塊入口處進行檢測,并對g信號進行更新。

      updates指令:s=s‖g。對s信號進行更新,使得s信號能夠帶有經過的基本塊信息。

      updateg指令:g=bi。對g信號進行更新,使得g帶有后繼節(jié)點的信息。

      更進一步的,為了在檢測節(jié)點內部所發(fā)生的控制流錯誤的同時檢測通信過程中的控制流錯誤,還需要在用于執(zhí)行動作的基本塊中額外插入一些指令,其中,本發(fā)明實施例將所述用于執(zhí)行動作的基本塊視作一種特殊基本塊。如圖5所示:

      其中,第一處的test、updates、updateg和圖4所示的基本塊是一致的。

      第二處的test指令:if(s≠c)error,用于判斷實際執(zhí)行路徑和預存的執(zhí)行路徑是否一致。

      第二處的updates指令:s=0在每次完成動作之后將s初始化。

      基于上述所介紹的原理性內容,下面介紹本發(fā)明實施例所提供的一種程序檢測方法。需要說明的是,本實施例中,通過一種動態(tài)標簽和兩種靜態(tài)標簽來檢測屬于節(jié)點內部錯誤類型的控制流錯誤;并且通過增加另一種動態(tài)標簽和指令標簽,在檢測屬于節(jié)點內部錯誤類型的控制流錯誤的同時,檢測屬于通信錯誤類型的控制流錯誤,以實現(xiàn)有效檢測網絡節(jié)點中的程序在響應無線控制指令過程中所發(fā)生的控制流錯誤的目的。

      需要提前說明的是,本發(fā)明實施中所述的第一動態(tài)標簽為上述的動態(tài)標簽g,第一靜態(tài)標簽為上述的靜態(tài)標簽li,第二靜態(tài)標簽為上述的靜態(tài)標簽bi,第二動態(tài)標簽為上述的動態(tài)標簽s,指令標簽為上述的指令標簽cj。

      如圖6所示,本發(fā)明實施例所提供的一種程序檢測方法可以包括如下步驟:

      s101,網絡節(jié)點中運行的程序接收其他網絡節(jié)點下發(fā)的無線控制指令;

      其中,所述程序預先被設置有第一動態(tài)標簽,所述程序由n個基本塊構成,每一基本塊被設置有第一靜態(tài)標簽和第二靜態(tài)標簽,所述第一靜態(tài)標簽為用于標識當前基本塊的信息且屬于n+1位的二進制數據的第一數據值,所述第二靜態(tài)標簽為用于標識當前基本塊的后繼基本塊的信息且屬于n+1位的二進制數據的第二數據值,所述第一動態(tài)標簽為屬于n+1位的二進制數據的第三數據值且初始化時全置為1,當前基本塊的后繼基本塊為:程序執(zhí)行過程中當前基本塊相鄰的下一基本塊。

      具體的,所述第一靜態(tài)標簽的n+1位中,最高位為0,第i位為1,其余位均為0,其中,i為當前基本塊在所有基本塊中的順序位。并且,關于第一靜態(tài)標簽的具體示意圖可以參見圖3(a)。

      具體的,所述第二靜態(tài)標簽的n+1位中,最高位為1,第m位為1,其余位為0,m為當前基本塊的后繼基本塊在所有基本塊中的順序位。并且,關于第二靜態(tài)標簽的具體示意圖可以參見圖3(b)。

      需要說明的是,所述程序預先被劃分為多個基本塊的方法可以利用現(xiàn)有技術實現(xiàn),在此不再贅述。

      s102,在執(zhí)行第一基本塊的入口指令之前,將所述第一基本塊的第一靜態(tài)標簽和當前的第一動態(tài)標簽進行邏輯與運算,得到第一類運算結果,所述第一基本塊為所述程序中n個基本塊中的與響應所接收到的指令相關的任一基本塊;

      s103,判斷所述第一類運算結果是否為0,如果是,執(zhí)行s104,否則,執(zhí)行s105;

      s104,確定所述程序出現(xiàn)屬于節(jié)點內部錯誤類型的控制流錯誤;

      s105,根據所述第一類運算結果更新當前的第一動態(tài)標簽;

      具體的,所述根據所述第一類運算結果更新當前的第一動態(tài)標簽,包括:將所述第一類運算結果的值,確定為當前的第一動態(tài)標簽。

      在實際應用中,在所述程序正確執(zhí)行的情況下,由于當前的第一動態(tài)標簽g 在上一個基本塊的尾部更新時記錄了所述上一基本塊的后繼基本塊的信息,因此在執(zhí)行第一基本塊的入口指令之前,執(zhí)行test指令,將所述第一基本塊的第一靜態(tài)標簽li與當前的第一動態(tài)標簽g進行邏輯與運算時,得到的第一類運算結果不會為0。如果得到的第一類運算結果為0,則說明所述程序出現(xiàn)了屬于節(jié)點內部錯誤類型的控制流錯誤。將所述第一基本塊的第一靜態(tài)標簽li與當前的第一動態(tài)標簽g進行邏輯與運算時,得到的第一類運算結果即為所述第一基本塊的第一靜態(tài)標簽li的值。根據所述第一類運算結果更新當前的第一動態(tài)標簽g,也就是將第一靜態(tài)標簽li的值賦給了第一動態(tài)標簽g。

      s106,在執(zhí)行所述第一基本塊的出口指令之前的預定位置的指令之前,將當前的第二動態(tài)標簽和當前的第一動態(tài)標簽進行邏輯或運算,得到第二類運算結果,根據所述第二類運算結果更新當前的第二動態(tài)標簽;

      具體的,所述第二動態(tài)標簽為預先為所述程序設置的,且所述第二動態(tài)標簽為屬于n+1位的二進制數據的第四數據值且初始化時全置為0。

      具體的,所述根據所述第二類運算結果更新當前的第二動態(tài)標簽,包括:將所述第二類運算結果的值,確定為當前的第二動態(tài)標簽。

      需要說明的是,所述第一基本塊的出口指令之前的預定位置的指令可以是所述第一基本塊的出口指令之前的任一指令。在執(zhí)行到所述第一基本塊的出口指令之前的任一指令之前,例如執(zhí)行到所述第一基本塊的中部時,執(zhí)行updates指令,將當前的第二動態(tài)標簽s和當前的第一動態(tài)標簽g進行邏輯或運算,得到第二類運算結果,并將所述第二類運算結果的值賦給當前的第二動態(tài)標簽s。

      s107,在執(zhí)行所述第一基本塊的出口指令之前,判斷所述第一基本塊是否為特殊基本塊,如果判斷出所述第一基本塊為特殊基本塊,執(zhí)行s108;如果判斷出所述第一基本塊不是特殊基本塊,直接執(zhí)行s111;

      具體的,所述特殊基本塊為用于執(zhí)行動作的基本塊;所述指令標簽用于預存其他網絡節(jié)點所下發(fā)的所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑,伴隨所述無線控制指令的到來而插入到基本塊中,且屬于n+1位的二進制數據的第五數據值,所述指令標簽n+1位中,最高位為0,第j位為1,其余位為0,其中,j為所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑中的各個基本塊在所有基本塊中的順序位。并且,關于指令標簽的具體示意圖可以參見圖 3(c)。

      s108,判斷當前的第二動態(tài)標簽是否等于所述第一基本塊的指令標簽;

      在實際應用中,判斷當前的第二動態(tài)標簽是否等于所述第一基本塊的指令標簽,例如執(zhí)行第二處的test指令,通過判斷當前的第二動態(tài)標簽s是否等于所述第一基本塊的指令標簽cj,來判斷所述無線控制指令的實際執(zhí)行路徑和預存的執(zhí)行路徑是否一致。

      s109,確定所述程序出現(xiàn)屬于通信錯誤類型的控制流錯誤;

      在實際應用中,在程序執(zhí)行到特殊基本塊時,如果程序是正確執(zhí)行的,并且下發(fā)的控制指令沒有發(fā)生異變時,當前的第二動態(tài)標簽s的值與預存的指令標簽cj的值是相等的。否則,如果程序并沒有經過該有的路徑執(zhí)行,或者下發(fā)的控制指令出現(xiàn)異變,那么當前的第二動態(tài)標簽s的值與預存的指令標簽cj的值是不相等,確定程序出現(xiàn)屬于通信錯誤類型的控制流錯誤。

      s110,在執(zhí)行完出口指令后初始化當前的第二動態(tài)標簽,并執(zhí)行s111;

      s111,當執(zhí)行完畢所述第一基本塊的出口指令時,判斷所述第一基本塊是否為與所述無線控制指令相關的最后一個基本塊,如果是,執(zhí)行s112,如果否,執(zhí)行s113;

      s112,初始化當前的第一動態(tài)標簽;

      s113,根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,并將所述無線控制指令所關聯(lián)的基本塊中的下一基本塊作為第一基本塊,返回s102。

      具體的,所述根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,包括:將所述第一基本塊的第二靜態(tài)標簽確定為當前的第一動態(tài)標簽。

      在實際應用中,根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,例如執(zhí)行updateg指令,將所述第一基本塊的第二靜態(tài)標簽bi的值賦給了當前的第一動態(tài)標簽g,對當前的第一動態(tài)標簽g進行更新,使得當前的第一動態(tài)標簽g帶有所述第一基本塊的后繼基本塊的信息。

      本發(fā)明實施例所述的程序檢測方法,通過對無線通信網絡中的網絡節(jié)點所 運行的程序設置第一動態(tài)標簽和第二動態(tài)標簽,對所述程序中的各個基本塊分別設置第一靜態(tài)標簽和第二靜態(tài)標簽,同時對下發(fā)的無線控制指令設置指令標簽,進而,在響應無線控制指令的過程中,執(zhí)行任一基本塊時,基于兩種靜態(tài)標簽和第一動態(tài)標簽來判斷是否出現(xiàn)屬于節(jié)點內部錯誤類型的控制流錯誤,進一步的,在執(zhí)行特殊基本塊時,基于兩種靜態(tài)標簽、兩種動態(tài)標簽和一種指令標簽來判斷是否出現(xiàn)屬于通信錯誤類型的控制流錯誤,以在檢測節(jié)點內部所產生的控制流錯誤的同時檢測通信過程中的控制流錯誤。可見,通過本方案可以有效檢測網絡節(jié)點中的程序在響應無線控制指令過程中所發(fā)生的控制流錯誤。

      下面以冒泡排序作為具體應用實例,對本發(fā)明實施例所提供的一種程序檢測方法進行介紹,該具體應用實例中能夠檢測由于節(jié)點內部導致的控制流錯誤以及下發(fā)的無線控制指令因為數據異變而引發(fā)的程序中的控制流錯誤。

      網絡節(jié)點中運行的程序響應無線控制指令過程中產生的控制流錯誤可以包括節(jié)點內部本身發(fā)生的控制流錯誤,以及下發(fā)的指令因為數據異變而引發(fā)的節(jié)點程序控制流錯誤。為了在程序中能夠體現(xiàn),可以在冒泡排序的基礎上,對程序進行了修改。為了簡化分析過程,可以只考慮有兩種指令的狀況,并用輸出打印數據來表示節(jié)點執(zhí)行動作。修改后的程序如圖7所示。

      根據修改后冒泡排序的代碼,結合給出的定義,冒泡排序的流程圖可以如圖8所示,在這個程序中,基本塊的個數n=7,其中,v1,v2,……v7等代表基本塊,v2的后繼基本塊為suc(v2)={v3,v4},圖中所示的特殊基本塊v6、v7是用于執(zhí)行動作的基本塊。

      各類標簽的具體數據信息舉例如下:

      l2=00000010:用于標識v2的信息;

      b2=10001100:用于標識v2的后繼基本塊的信息;

      c1=00111111:指令c1需要經過基本塊(v1,v2,v3,v4,v5,v6)。

      標簽插入方法舉例如下:

      針對基本塊v3,標簽插入方法如圖9所示。

      冒泡程序算法執(zhí)行流程如下:

      對于該冒泡程序,對于v1基本塊,g初始化為11111111,正確執(zhí)行完v1后,g=b1=10000010,如果正常跳轉到v2入口處,則g=g&l2=10000010&00000010=00000010≠0,沒有錯。否則,如果從基本塊v1出口處跳轉到基本塊v3處,那么在基本塊v3中開始執(zhí)行測試指令g=g&l3=10000010&00000100=0,檢測到錯誤。

      對于指令c=1,當其正確執(zhí)行時,s=00111111,那么開始時,c1預存的值就是00111111。類似c2的預存的值為01011111。那么如果由于指令數據異變,指令從c=1變成了c=2,那么由于s=01011111不等于預存的c1值,檢測出錯誤。另外如果在程序執(zhí)行的過程中,程序流程出現(xiàn)錯誤,例如從v2直接跳到了v6,s=00100011,也不等于預存的值,能夠檢測出控制流錯誤。

      進一步的,為了便于對本發(fā)明實施例所提供的方法的理解,下面結合具體的錯誤類型,介紹本發(fā)明實施例所提供方法對節(jié)點內部的控制流錯誤的檢測過程。

      本發(fā)明實施例所提供程序檢測方法對節(jié)點內部的控制流錯誤的檢測過程可以為:

      (1)基本塊內部能夠發(fā)生的控制流錯誤的檢測:

      基本塊內部能夠發(fā)生的控制流錯誤,如圖10所示,虛線代表錯誤的跳轉方式。

      錯誤類型1:從基本塊的上部跳到上部,或者從基本塊的下部跳到下部。

      錯誤類型2:從基本塊的上部跳到下部。

      錯誤類型3:從基本塊的下部跳到上部。

      基本塊內部的錯誤發(fā)生的概率很小,特別是針對程序規(guī)模較小的情況。那么顯然錯誤類型1發(fā)生的概率更加的小。

      當錯誤類型2發(fā)生時,本發(fā)明所提供方法無法檢測出來,但是此時程序很可能陷入死循環(huán),本身程序也就不會繼續(xù)執(zhí)行下去了,那么不會導致節(jié)點發(fā)生錯誤的輸出。

      當錯誤3發(fā)生,那么其中updates語句沒有執(zhí)行,也就是說s信號不能夠帶走這個模塊的位置信息,那么他所記錄的路徑就發(fā)生了錯誤,那么在輸出之前與預存的cj值作比較的時候,能夠檢測出來。

      (2)基本塊間控制流錯誤的檢測:

      基本塊間錯誤類型如圖11所示。實線代表可以正確的跳轉,虛線代表錯誤的跳轉方式。

      錯誤類型4:從一個基本塊vi的出口錯誤跳轉另一個基本塊的入口vj,vj屬于suc(vi)。這種錯誤是由于條件分支語句本身“條件”判斷出錯,是數據流錯誤引發(fā)的控制流錯誤。這種錯誤來源有兩個,一種是節(jié)點內部數據出錯,此時執(zhí)行完updates后,s記錄的路徑與指令標簽中的值不符,可以檢測出來。另一種是主要來源,是因為下發(fā)指令在通信過程中異變導致的,將在下面對通信過程中的控制流錯誤的檢測過程中具體講述。

      錯誤類型5:從一個基本塊的出口,非法跳轉到另一個基本塊的任意位置,vj屬于suc(vi)。這種錯誤需要分兩種類型來考慮,一種是跳轉到基本塊的上部,這時候,由于test指令沒有執(zhí)行,g的最高位為1,在執(zhí)行完updates,s的n+1位為1,最后與cj值做比較后,能夠檢測出錯誤。另一種是跳轉到基本塊的下部,這時候由于沒有執(zhí)行updates,s無法記錄下此時執(zhí)行路徑的信息。那么到了最后與cj值做比較后,能夠檢測出錯誤。

      錯誤類型6:從一個基本塊的任意位置,非法跳轉到另一個基本塊的入口,vj屬于suc(vi)。由于g信號沒有更新,所以在入口處,執(zhí)行test指令時,能夠檢測出錯誤。

      錯誤類型7:從一個基本塊的任意位置,非法跳轉到另一個基本塊的任意位置,vj屬于suc(vi)。這種錯誤分四種情況。第一種,從一個基本塊的上部跳到另一個基本塊的上部,那么此時由于在vj中,由于g信號沒有更新,updates執(zhí)行后值記錄了vi的信息,沒有記錄的vj信息。第二種從一個基本塊的上部跳到另一個基本塊的下部,vi、vj的信息都沒有辦法記錄。第三種從一個基本塊的下部跳到另一個基本塊的上部,與第一種情況一樣。第四種從一個基本塊的下部跳到另一個基本塊的下部,此時s信號不能記錄vj的信息。所以這四種情況都 可以檢測出來。

      錯誤類型8:從一個基本塊的出口,非法跳轉到另一個基本塊的入口,vj不屬于suc(vi)。這時候在執(zhí)行test指令時能夠檢測出錯誤。

      錯誤類型9:從一個基本塊的任意位置,非法跳轉到另一個基本塊的出口,vj不屬于suc(vi)。同類型8。

      錯誤類型10:從一個基本塊的出口,非法跳轉到另一個基本塊的任意位置,vj不屬于suc(vi)。

      錯誤類型11:從一個基本塊的任意位置,非法跳轉到另一個基本塊的任意位置,vj不屬于suc(vi)。同類型10。

      同樣的,為了便于對本發(fā)明實施例所提供的方法的理解,下面進一步介紹本發(fā)明實施例所提供方法對通信過程中的控制流錯誤的檢測過程。

      本發(fā)明實施例所提供程序檢測方法對通信過程中的控制流錯誤的檢測過程可以為:

      指令異變后,在故障傳入節(jié)點后,會導致上面所說的錯誤類型4。如果變成的指令在節(jié)點內部程序中不存在,此時節(jié)點不會執(zhí)行任何動作,沒有錯誤輸出。如果變成的指令在節(jié)點內部存在,節(jié)點內部程序不能按照指令標簽中預存的執(zhí)行流程去執(zhí)行程序,此時updates后,動態(tài)標簽s記錄的執(zhí)行路徑和指令標簽預存的路徑不相符,可以檢測出來。

      在上面的分析中沒有考慮到同時通信中有檢驗的狀況,下面我們考慮有檢驗的狀況,以crc舉例。

      在有crc檢驗時,有三種情況。

      1)指令發(fā)生數據異變的三種錯誤中,在發(fā)送之前網絡節(jié)點寫入出錯和在接收到數據后讀數據出錯這兩種情況并沒有辦法檢測出來;

      2)crc檢驗的并不能完全檢驗出錯誤,檢測概率一般為99.7%,而針對可靠性要求非常高的指令數據,增加檢驗是有必要的;

      3)在crc用軟件實現(xiàn)時,本身的程序也可能出現(xiàn)錯誤。

      所以在有crc檢驗時,針對可靠性要求非常高的指令數據,增加檢驗是有 必要的。而且本發(fā)明所述的指令標簽不僅僅是用于檢測下發(fā)指令的正確性,而且用于預存指令的執(zhí)行路徑,確保程序是按正確的路徑到達需要執(zhí)行動作的位置。上述分析可以知道,本發(fā)明實施例所提供方法在有校驗的時候也很有價值。

      相應于上述的方法實施例,本發(fā)明實施例還提供了一種程序檢測裝置。如圖12所示,該裝置可以包括:

      無線控制指令接收單元1201,用于網絡節(jié)點中運行的程序接收其他網絡節(jié)點下發(fā)的無線控制指令,其中,所述程序預先被設置有第一動態(tài)標簽,所述程序由n個基本塊構成,每一基本塊被設置有第一靜態(tài)標簽和第二靜態(tài)標簽,所述第一靜態(tài)標簽為用于標識當前基本塊的信息且屬于n+1位的二進制數據的第一數據值,所述第二靜態(tài)標簽為用于標識當前基本塊的后繼基本塊的信息且屬于n+1位的二進制數據的第二數據值,所述第一動態(tài)標簽為屬于n+1位的二進制數據的第三數據值且初始化時全置為1,當前基本塊的后繼基本塊為:程序執(zhí)行過程中當前基本塊相鄰的下一基本塊;

      第一類運算結果計算單元1202,用于在執(zhí)行第一基本塊的入口指令之前,將所述第一基本塊的第一靜態(tài)標簽和當前的第一動態(tài)標簽進行邏輯與運算,得到第一類運算結果,所述第一基本塊為所述程序中n個基本塊中的與響應所接收到的指令相關的任一基本塊;

      第一判斷單元1203,用于判斷所述第一類運算結果是否為0,如果是,執(zhí)行第一結果確定單元1204,否則,執(zhí)行第一動態(tài)標簽更新單元1205;

      所述第一結果確定單元1204,用于確定所述程序出現(xiàn)屬于節(jié)點內部錯誤類型的控制流錯誤;

      所述第一動態(tài)標簽更新單元1205,用于根據所述第一類運算結果更新當前的第一動態(tài)標簽;

      第二動態(tài)標簽確定單元1206,用于在執(zhí)行所述第一基本塊的出口指令之前的預定位置的指令之前,將當前的第二動態(tài)標簽和當前的第一動態(tài)標簽進行邏輯或運算,得到第二類運算結果,根據所述第二類運算結果更新當前的第二動態(tài)標簽,其中,所述第二動態(tài)標簽為預先為所述程序設置的,且所述第二動態(tài) 標簽為屬于n+1位的二進制數據的第四數據值且初始化時全置為0;

      第二判斷單元1207,用于在執(zhí)行所述第一基本塊的出口指令之前,判斷所述第一基本塊是否為特殊基本塊,如果判斷出所述第一基本塊為特殊基本塊,則執(zhí)行第三判斷單元1208,如果判斷出所述第一基本塊不是特殊基本塊,則執(zhí)行第四判斷單元1211;

      所述第三判斷單元1208,用于判斷當前的第二動態(tài)標簽是否等于所述第一基本塊的指令標簽,若否,執(zhí)行第二結果確定單元1209,若是,執(zhí)行第二動態(tài)標簽初始化單元1210,其中,所述特殊基本塊為用于執(zhí)行動作的基本塊,所述指令標簽用于預存其他網絡節(jié)點所下發(fā)的所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑,伴隨所述無線控制指令的到來而插入到基本塊中,且屬于n+1位的二進制數據的第五數據值;

      所述第二結果確定單元1209,用于確定所述程序出現(xiàn)屬于通信錯誤類型的控制流錯誤,

      所述第二動態(tài)標簽初始化單元1210,在執(zhí)行完出口指令后初始化當前的第二動態(tài)標簽,并觸發(fā)第四判斷單元1211;

      第四判斷單元1211,用于當執(zhí)行完畢所述第一基本塊的出口指令時,判斷所述第一基本塊是否為與所述無線控制指令相關的最后一個基本塊,如果是,初始化當前的第一動態(tài)標簽,如果否,根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,并將所述無線控制指令所關聯(lián)的基本塊中的下一基本塊作為第一基本塊,觸發(fā)所述第一類運算結果計算單元1202。

      具體的,所述第一靜態(tài)標簽的n+1位中,最高位為0,第i位為1,其余位均為0,其中,i為當前基本塊在所有基本塊中的順序位;

      所述第二靜態(tài)標簽的n+1位中,最高位為1,第m位為1,其余位為0,m為當前基本塊的后繼基本塊在所有基本塊中的順序位;

      所述指令標簽的n+1位中,最高位為0,第j位為1,其余位為0,其中,j為所述無線控制指令在程序中執(zhí)行到最終輸出時所經歷路徑中的各個基本塊在所有基本塊中的順序位。

      具體的,所述第一動態(tài)標簽更新單元1205根據所述第一類運算結果更新當 前的第一動態(tài)標簽,包括:

      將所述第一類運算結果的值,確定為當前的第一動態(tài)標簽;

      相應的,所述第二動態(tài)標簽更新單元1206根據所述第二類運算結果更新當前的第二動態(tài)標簽,包括:

      將所述第二類運算結果的值,確定為當前的第二動態(tài)標簽;相應的,所述第四判斷單元1211根據所述第一基本塊的第二靜態(tài)標簽更新當前的第一動態(tài)標簽,包括:

      將所述第一基本塊的第二靜態(tài)標簽確定為當前的第一動態(tài)標簽。

      具體的,在任一基本塊中插入用于設置標簽的指令的方式,包括:

      對于當前基本塊不是特殊基本塊的情況:

      在當前基本塊的入口指令之前插入test指令:if((g=g&li)==0)error;其中g為第一動態(tài)標簽,li為當前基本塊的第一靜態(tài)標簽;

      在當前基本塊的出口指令之前的預定位置的指令之前插入updates指令:s=s‖g;其中s為第二動態(tài)標簽;

      在當前基本塊的出口指令之后插入updateg指令:g=bi;其中bi為當前基本塊的第二靜態(tài)標簽;

      對于當前基本塊為特殊基本塊的情況:

      在當前基本塊的入口指令之前插入test指令:if((g=g&li)==0)error;其中g為第一動態(tài)標簽,li為當前基本塊的第一靜態(tài)標簽;

      在當前基本塊的出口指令之前的預定位置的指令之前插入updates指令:s=s‖g;其中s為第二動態(tài)標簽;

      在當前基本塊的出口指令之前插入test指令:if(s≠c)error,其中c為指令標簽;

      在當前基本塊的出口指令之后插入updates指令:s=0;

      在當前基本塊的出口指令之后插入updateg指令:g=bi;其中bi為當前基本塊的第二靜態(tài)標簽。

      對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡 單,相關之處參見方法實施例的部分說明即可。

      本發(fā)明實施例所述的程序檢測裝置,通過對無線通信網絡中的網絡節(jié)點所運行的程序設置第一動態(tài)標簽和第二動態(tài)標簽,對所述程序中的各個基本塊分別設置第一靜態(tài)標簽和第二靜態(tài)標簽,同時對下發(fā)的無線控制指令設置指令標簽,進而,在響應無線控制指令的過程中,執(zhí)行任一基本塊時,基于兩種靜態(tài)標簽和第一動態(tài)標簽來判斷是否出現(xiàn)屬于節(jié)點內部錯誤類型的控制流錯誤,進一步的,在執(zhí)行特殊基本塊時,基于兩種靜態(tài)標簽、兩種動態(tài)標簽和一種指令標簽來判斷是否出現(xiàn)屬于通信錯誤類型的控制流錯誤,以在檢測節(jié)點內部所產生的控制流錯誤的同時檢測通信過程中的控制流錯誤。可見,通過本方案可以有效檢測網絡節(jié)點中的程序在響應無線控制指令過程中所發(fā)生的控制流錯誤。

      需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。

      本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。

      本領域普通技術人員可以理解實現(xiàn)上述方法實施方式中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于計算機可讀取存儲介質中,這里所稱得的存儲介質,如:rom/ram、磁碟、光盤等。

      以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內。

      當前第1頁1 2 
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1