国产精品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>

      一種多核實時系統(tǒng)應(yīng)用數(shù)據(jù)競爭錯誤的調(diào)試方法

      文檔序號:9506122閱讀:543來源:國知局
      一種多核實時系統(tǒng)應(yīng)用數(shù)據(jù)競爭錯誤的調(diào)試方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及針對多核操作系統(tǒng)應(yīng)用程序的并發(fā)錯誤數(shù)據(jù)競爭通過統(tǒng)計調(diào)試的方 法進(jìn)行定位,屬于多核應(yīng)用程序調(diào)試技術(shù)領(lǐng)域,方便開發(fā)人員快速定位并發(fā)錯誤。
      【背景技術(shù)】
      [0002] 多核操作系統(tǒng)應(yīng)用程序因為非確定性的線程交替,容易產(chǎn)生數(shù)據(jù)競爭,死鎖,原子 性侵犯等并發(fā)相關(guān)的錯誤,并且由于調(diào)度不確定性在調(diào)試過程中導(dǎo)致問題極其難以定位。 對于開發(fā)者來說,即使知道產(chǎn)生錯誤的輸入,重現(xiàn)錯誤執(zhí)行也是很困難的。數(shù)據(jù)競爭是至少 兩個線程沒有按順序限制訪問同一內(nèi)存位置,其中至少一個訪問是寫操作。數(shù)據(jù)競爭本身 不一定是錯誤,但是它導(dǎo)致嚴(yán)重的難以發(fā)現(xiàn),崩潰,并發(fā)相關(guān)的軟件缺陷。
      [0003] -方面,針對不同處理器已有硬件設(shè)備通過仿真來輔助開發(fā)人員在開發(fā)階段順利 調(diào)試,但是其價格昂貴,同時對開發(fā)者技術(shù)水平也有很高要求。另一方面,也有通過靜態(tài)或 者動態(tài)算法來檢測代碼中的并發(fā)錯誤來輔助開發(fā)人員排除故障,但是靜態(tài)方法利用程序的 依賴關(guān)系和類型約束等信息來分析程序的可能故障點,為更深層次的自動化檢測提供必要 條件;而動態(tài)二進(jìn)制插粧技術(shù)來檢測代碼中的并發(fā)錯誤的方法不需要修改或重新編譯應(yīng) 用程序的源代碼,并且支持動態(tài)生成代碼來檢測程序,但是會有較高的開銷,拖慢程序的執(zhí) 行,這部分的開銷對于程序執(zhí)行而言是不可忽略的。
      [0004] 目前針對多核操作系統(tǒng)應(yīng)用程序,不適用已有的自動化插粧工具,而且針對特定 操作系統(tǒng)開發(fā)維護(hù)一套自動化插粧工具耗費時力人力較高,且動態(tài)插粧技術(shù)存在開銷大的 問題。

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

      [0005] 本發(fā)明為了克服現(xiàn)有技術(shù)的不足,提供一種多核實時系統(tǒng)應(yīng)用數(shù)據(jù)競爭錯誤的調(diào) 試方法,通過統(tǒng)計調(diào)試的方法對收集的信息進(jìn)行處理對插粧位置進(jìn)行可疑度排序,快速通 過排序結(jié)果定位應(yīng)用程序中的實際發(fā)生故障的位置,且降低了動態(tài)二進(jìn)制插粧方法對程序 執(zhí)行的開銷。
      [0006] 本發(fā)明提供的一種多核實時系統(tǒng)應(yīng)用數(shù)據(jù)競爭錯誤的調(diào)試方法,實現(xiàn)步驟如下:
      [0007] 步驟1,在特定多核操作系統(tǒng)基礎(chǔ)上編寫應(yīng)用程序測試集,發(fā)生并發(fā)錯誤數(shù)據(jù)競爭 的 benchmark ;
      [0008] 步驟2,設(shè)計插粧謂詞,對測試集中的程序進(jìn)行手工插粧;
      [0009] 所述的插粧謂詞,用于記錄訪問全局變量的值改變次數(shù);
      [0010] 步驟3,運行插粧后的測試集,在程序運行過程中收集插粧的謂詞記錄信息,并記 錄程序的每次執(zhí)行結(jié)果;
      [0011] 所述的謂詞記錄信息,包括謂詞值、插粧行號和插粧所在函數(shù);
      [0012] 步驟4,將插粧后的測試集至少執(zhí)行X次,收集謂詞記錄信息和程序執(zhí)行結(jié)果,作 為統(tǒng)計調(diào)試算法的輸入,執(zhí)行統(tǒng)計調(diào)試算法,輸出對程序插粧位置可能發(fā)生并發(fā)錯誤數(shù)據(jù) 競爭的可疑度排序;X為正整數(shù);
      [0013] 步驟5,根據(jù)可疑度排序結(jié)果快速定位測試集程序中可能發(fā)生并發(fā)錯誤數(shù)據(jù)競爭 的位置。
      [0014] 所述步驟2中,對測試集中的程序進(jìn)行手工插粧,實現(xiàn)過程包括:
      [0015] (1)對多核操作系統(tǒng)應(yīng)用程序的每一個任務(wù)中全局變量的訪問位置都進(jìn)行插粧;
      [0016] (2)利用編寫的插粧謂詞函數(shù)在測試集程序中手動插粧;
      [0017] 所述的插粧函數(shù)包括三個接口函數(shù):函數(shù)initSiteO在初次訪問時初始化謂詞 記錄信息結(jié)構(gòu)體;函數(shù)cmpSiteO用于更新數(shù)據(jù)結(jié)構(gòu)體中謂詞值,在訪問全局變量之前,比 較該全局變量的本次值與記錄值是否一致,若不一致,將謂詞值加1,否則保持謂詞值不變; 函數(shù)UpSiteO在訪問全局變量之后更新全局變量的記錄值。
      [0018] 所述步驟4中的統(tǒng)計調(diào)試算法的實現(xiàn)過程為:
      [0019] 步驟4. 1,輸入謂詞記錄信息和程序執(zhí)行結(jié)果;
      [0020] 步驟4. 2,統(tǒng)計成功測試總數(shù)Tp,失敗測試總數(shù)Tf,測試用例總數(shù)Tp+T f,覆蓋插粧位 置s的成功測試數(shù)Tp (s),覆蓋插粧位置s的失敗測試數(shù)Tf (s),覆蓋插粧位置s的測試總數(shù) Tp (s)+Tf (s),未覆蓋插粧位置s的成功執(zhí)行次數(shù),未覆蓋插粧位置s的失敗執(zhí)行次數(shù),未覆 蓋插粧位置s的執(zhí)行次數(shù)。
      [0021] 執(zhí)行步驟4. 3或步驟4. 4來獲得插粧位置的可疑度排序;
      [0022] 步驟4. 3,利用概率統(tǒng)計的方法計算每個謂詞位置存在可疑度的概率;
      [0023] 步驟4. 4,利用基于謂詞覆蓋統(tǒng)計的原理,分析插粧周圍代碼的出錯概率。
      [0024] 所述的步驟4. 3根據(jù)不同的統(tǒng)計模型計算公式來得到插粧位置的可疑度:
      [0028] 對各插粧位置的可疑度進(jìn)行排序。
      [0029] 所述的步驟4. 4中對每個謂詞P,根據(jù)設(shè)如下公式計算謂詞P的懷疑度:
      [0031] 其中,F(xiàn)t(P)和St(P)分別表示P在失敗和成功執(zhí)行中取值為真的次數(shù),F(xiàn) ci(P)和 Sci(P)分別表示P在失敗和成功執(zhí)行中出現(xiàn)的次數(shù)。
      [0032] 本發(fā)明具有如下優(yōu)點和積極效果:
      [0033] (1)調(diào)試人員在調(diào)試定位并發(fā)錯誤的過程中可以方便快速的對共享數(shù)據(jù)進(jìn)行插 粧,只需傳入共享數(shù)據(jù)的地址,大小,行號,所在函數(shù)等容易獲得的信息,調(diào)用插粧API接口 可以自動維護(hù)記錄插粧信息。降低開發(fā)自動化插粧工具的成本和時間。
      [0034] (2)根據(jù)插粧覆蓋記錄的信息和程序執(zhí)行結(jié)果成功或失敗作為統(tǒng)計調(diào)試算法的輸 入,計算得到各個插粧位置的可疑度排序結(jié)果來定位錯誤,降低了對調(diào)試人員技術(shù)水平的 要求,同時也節(jié)約了通過循環(huán)執(zhí)行斷點調(diào)試方法所耗費的時間。
      【附圖說明】
      [0035] 圖1是本發(fā)明謂詞插粧API接口示意圖;
      [0036] 圖2是本發(fā)明進(jìn)行謂詞插粧的流程示意圖;
      [0037] 圖3是本發(fā)明中統(tǒng)計調(diào)試算法程序的工作流程示意圖。
      【具體實施方式】
      [0038] 下面將結(jié)合附圖和實施示例對本發(fā)明作進(jìn)一步的詳細(xì)說明。通過足夠詳細(xì)的描述 這些示例,使得本領(lǐng)域技術(shù)人員能夠理解和實踐本發(fā)明。在不脫離本發(fā)明的主旨和范圍的 情況下,可以對實施做出邏輯的、實現(xiàn)的和其他的改變。因此,以下詳細(xì)說明不應(yīng)該被理解 為限制意義,本發(fā)明的范圍僅僅由權(quán)利要求來限定。
      [0039] 多核操作系統(tǒng)應(yīng)用程序的調(diào)試工作,調(diào)試人員通常通過程序的循環(huán)多次執(zhí)行,設(shè) 定斷點的方法進(jìn)行,但此方法對調(diào)試人員的技術(shù)水平提出了較高要求,且在實際工作中調(diào) 試過程會耗費較多時間。故而可以通過在開發(fā)程序過程中按照謂詞插粧的要求在代碼中插 粧,當(dāng)程序出現(xiàn)問題時,多次執(zhí)行程序完成插粧覆蓋信息的記錄并且記錄程序執(zhí)行成功或 者失敗,將這些結(jié)果作為統(tǒng)計調(diào)試算法的輸入,統(tǒng)計調(diào)試算法輸出對插粧位置的可疑度排 序結(jié)果,調(diào)試人員根據(jù)排序結(jié)果來快速定位代碼中可能存在故障的位置,減少調(diào)試人員的 工作。
      [0040] 本發(fā)明提供的多核實時系統(tǒng)應(yīng)用數(shù)據(jù)競爭錯誤的調(diào)試方法,針對某特定多核操作 系統(tǒng),基本步驟包括:編寫應(yīng)用程序測試集;設(shè)計插粧謂詞;手工在測試集上插粧謂詞;運 行插粧后的測試集收集執(zhí)行結(jié)果,執(zhí)行結(jié)果作為統(tǒng)計調(diào)試算法的輸入,統(tǒng)計調(diào)試算法輸出 可疑度排序結(jié)果;根據(jù)排序結(jié)果定位測試集中發(fā)生并發(fā)錯誤的位置。下面詳細(xì)說明步驟 1~步驟5。
      [0041] 步驟1,在特定多核操作系統(tǒng)基礎(chǔ)上編寫應(yīng)用程序測試集,發(fā)生并發(fā)錯誤數(shù)據(jù)競爭 的 benchmark。
      [0042] Benchmark表示基準(zhǔn)測試程序。
      [0043] 步驟2,設(shè)計插粧謂詞,對測試集中的程序進(jìn)行手工插粧。
      [0044] 根據(jù)發(fā)生并發(fā)錯誤數(shù)據(jù)競爭的特征,設(shè)計記錄在被同一任務(wù)連續(xù)兩次訪問過程中 訪問的全局變量的值改變次數(shù)的謂詞。每次運行程序,收集謂詞記錄信息,包括:謂詞值,插 粧行號,以及插粧所在函數(shù)。
      [0045] 本步驟中,對測試集中的程序進(jìn)行手工插粧,收集測試程序訪問全局變量的信息, 實現(xiàn)過程包括步驟2. 1~2. 3。
      [0046] 步驟2. 1,對多核操作系統(tǒng)應(yīng)用程序的每一個任務(wù)中全局變量的訪問位置都進(jìn)行 插粧;
      [0047] 步驟2. 2,利用編寫的插粧函數(shù)在測試集程序中手動插粧;
      [0048] 如圖1所示,為所設(shè)計的謂詞記錄信息結(jié)構(gòu)體和插粧函數(shù)示意圖。插粧函數(shù)包括 三個接口函數(shù):initSite Ο、cmpSite O和upSite O。函數(shù)initSite O在初次訪問時初始 化謂詞記錄信息結(jié)構(gòu)體。函數(shù)cmpSiteO用于更新數(shù)據(jù)結(jié)構(gòu)體中謂詞值,在訪問全局變量 之前,比較該全局變量本次值與記錄值是否一致,若不一致,將謂詞值加1,否則保持謂詞值 不變。函數(shù)upSite ()在訪問全局變量之后更新全局變量的記錄值。
      [0049] 謂詞記錄信息結(jié)構(gòu)體如下:
      [0050] int line ;//line 表示插粧行號
      [0051] int predicate !//predicate 表不謂詞值
      [0052] char func[20] ;//func 表示插粧所在函數(shù)
      [0053] const void*address ;//address 表不全局變量起始地址
      [0054] 其中,predicate表示謂詞值,如果本次全局變量的值與記錄值不一致,predicate 增加1,否則predicate保持不變。
      [0055] 初始化謂詞記錄信息結(jié)構(gòu)體時,謂詞值是0。
      [0056] 圖 1 所不,函數(shù) initSite ()包括四個參數(shù):line、address、size 和 function,其 中size表示全局變量地址空間大小,function就是插
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1