新四季網

一種基於多線程嵌入式系統並行程序跟蹤與回放方法

2023-08-09 04:11:46

一種基於多線程嵌入式系統並行程序跟蹤與回放方法
【專利摘要】本發明涉及一種基於多線程嵌入式系統並行程序跟蹤與回放方法,屬於並行程序調試與檢測【技術領域】。本發明在並行程序執行階段,記錄多個線程執行路徑信息,並生成一個記事本文件;當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整;如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟硬體框架,確保並行程序按照記事本文件中保存的路徑重演。本發明記錄並保存了多個線程程序執行路徑信息。確保並行的多個線程程序按照記事本文件中保存的路徑信息進行重演。能以較小的軟體開銷實現嵌入式系統中並行程序執行路徑的跟蹤與回放。
【專利說明】一種基於多線程嵌入式系統並行程序跟蹤與回放方法

【技術領域】
[0001] 本發明涉及一種基於多線程嵌入式系統並行程序跟蹤與回放方法,屬於並行程序 調試與檢測【技術領域】。

【背景技術】
[0002] 調度、通信與同步控制等操作在嵌入式系統中並行程序經常發生,且存在隨機性。 這些使得並行程序運行結果具有不確定性與不可再現性。處於同一進程中的多個線程共享 相同資源,即使程序初始條件相同,由於嵌入式系統中斷、操作延時以及噪聲等內外環境因 素的幹擾,很大程度上影響並改變了系統中並行程序的執行和響應時間,直接引起了線程 調度、通信與同步操作可控性降低,導致了系統存在不確定性,甚至在系統出現競態條件。
[0003] 因此,在嵌入式系統開發過程中,為了消除系統具有的不確定性因素可能產生的 如競態條件等系統可靠性問題,同時掌握程序運行過程中的詳細的動態信息,需要充分考 慮如何實現有效地追蹤嵌入式系統中的並行程序的執行路徑並進行回放,以便分析多線程 執行過程中存在的問題,保障系統的安全穩定的運行。


【發明內容】

[0004] 本發明提供了一種基於多線程嵌入式系統並行程序跟蹤與回放方法,以用於解決 嵌入式系統中多線程並行程序運行中表現出的不確定性和結果的不可再現等問題。
[0005] 本發明的技術方案是:一種基於多線程嵌入式系統並行程序跟蹤與回放方法,首 先在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個線程 執行路徑信息,並生成一個記事本文件; 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中 的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟 硬體框架,確保並行程序按照記事本文件中保存的路徑重演。
[0006] 所述基於多線程嵌入式系統並行程序跟蹤與回放方法的具體步驟如下: A、在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個 線程執行路徑信息,並生成一個記事本文件的具體步驟如下: A1、首先宿主機中的嵌入式開發工具將程序原始碼發送到緩衝區A中; A2、宿主機中的線程追蹤控制模塊掃描此嵌入式程序原始碼,並定位程序原始碼中所 有的橫切關注點,此橫切關注點包括除main函數之外的函數與方法,在所有橫切關注點的 開始處插入面向方面的切入點Pointcut標誌; A3、宿主機中的嵌入式開發工具使用Aspect機制新建一個包含Before通知橫切關注 點的Aspect函數,然後將Aspect函數與程序原始碼編織成可執行面向方面程序,通過JTAG 工具燒錄到目標機存儲器中; A4、嵌入式作業系統啟動面向方面程序,同時線程追蹤檢測模塊監控程序的運行; 當出現線程調用函數或方法時,則獲取當前訪問線程、當前函數或方法、調用對象信 息,並將這些信息組合成一個線程記錄TM ;同理,當程序再次出現線程調用其他函數或方 法時,可得到程序中其餘的線程記錄TM ; 當沒有出現線程調用函數或方法時,則線程追蹤檢測模塊繼續監控程序的運行; A5、線程記錄TM通過目標機中的通信模塊經過USB串口線發送到宿主機中的緩衝區B 中保存; A6、程序一次執行完成後,宿主機中的線程追蹤控制模塊將緩衝區B中的所有線程記 錄TM按時間的先後順序加入到線程隊列TQ中; A7、宿主機將線程隊列TQ輸出到記事本文件out. txt中; B、 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼 中的關注點與記錄信息來檢查記事本文件out. txt中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段; 如果路徑信息記錄不完整,則重複執行步驟A4、A5、A6、A7 ; C、 進入並行程序回放階段,並行程序回放階段中並行程序按照記事本文件out. txt中 保存的路徑重演的具體步驟如下: C1、線程回放控制模塊將緩衝區B中線程隊列TQ所包含的線程記錄TM信息按FIFO原 則依次通過USB串口線發送到目標機中的通信模塊; C2、目標機中的線程回放組件關閉線程追蹤檢測模塊監控功能,防止在回放過程中再 次對程序執行過程進行追蹤檢測; C3、目標機中的線程回放組件讀取並根據線程記錄TM中所包含的線程、函數和訪問對 象的信息啟動指定的線程,調用指定的函數去訪問指定的對象,實現了該線程的執行信息 的回放; C4、目標機中的線程回放模塊讀取下一個線程記錄TM,重複步驟C3,直到線程隊列TQ 所包含的最後一個線程記錄TM,實現整個多線程並行程序一次執行的回放。
[0007] 所述步驟A4中所述的線程記錄TM是指在嵌入式系統中,處於運行態的線程一次 執行過程所記錄的相關執行信息,用一個三元組TM = 表示; 其中,t表示在任意時刻正在運行的線程,m表示線程t調用的函數或方法,〇表示線程 t所訪問的對象類型,包括空Null、數據D、信號量S和消息M。
[0008] 所述步驟A6中所述的線程隊列TQ是指在嵌入式系統中,並行程序執行過程中所 有線程記錄TM所形成的一組序列,用TQ =〈TM1,TM2,……TMn>表示; 其中,ΤΜη表示系統中並行程序中一個線程記錄,η表示線程運行的時間點。
[0009] 所述TQ中ΤΜη之間具有時間上的先後關係。
[0010] 本發明的有益效果是:針對嵌入式系統中多線程並行程序,採用面向方面的技術 進行掃描,通過嵌入式系統軟硬體框架,記錄並保存了多個線程程序執行路徑信息。確保並 行的多個線程程序按照記事本文件中保存的路徑信息進行重演。能以較小的軟體開銷實現 嵌入式系統中並行程序執行路徑的跟蹤與回放,對嵌入式系統中的多線程數據競爭檢測研 究,具有重要的參考價值。

【專利附圖】

【附圖說明】 toon] 圖1為本發明中的流程圖; 圖2為本發明中在並行程序執行階段,記錄多個線程執行路徑信息的嵌入式系統中程 序運行路徑追蹤軟硬體框架結構圖; 圖3為本發明中在並行程序回放階段,確保並行程序按照記事本文件中保存的路徑重 演的嵌入式系統中程序路徑回放軟硬體框架結構圖; 圖4為本發明中實施例6產生的線程隊列TQ回放過程的樣式圖。

【具體實施方式】
[0012] 實施例1 :如圖1-3所示,一種基於多線程嵌入式系統並行程序跟蹤與回放方法, 首先在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個線 程執行路徑信息,並生成一個記事本文件; 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中 的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟 硬體框架,確保並行程序按照記事本文件中保存的路徑重演。
[0013] 實施例2 :如圖1-3所示,一種基於多線程嵌入式系統並行程序跟蹤與回放方法, 首先在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個線 程執行路徑信息,並生成一個記事本文件; 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中 的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟 硬體框架,確保並行程序按照記事本文件中保存的路徑重演。
[0014] 所述基於多線程嵌入式系統並行程序跟蹤與回放方法的具體步驟如下: A、在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個 線程執行路徑信息,並生成一個記事本文件的具體步驟如下: A1、首先宿主機中的嵌入式開發工具將程序原始碼發送到緩衝區A中; A2、宿主機中的線程追蹤控制模塊掃描此嵌入式程序原始碼,並定位程序原始碼中所 有的橫切關注點,此橫切關注點包括除main函數之外的函數與方法,在所有橫切關注點的 開始處插入面向方面的切入點Pointcut標誌; A3、宿主機中的嵌入式開發工具使用Aspect機制新建一個包含Before通知橫切關注 點的Aspect函數,然後將Aspect函數與程序原始碼編織成可執行面向方面程序,通過JTAG 工具燒錄到目標機存儲器中; A4、嵌入式作業系統啟動面向方面程序,同時線程追蹤檢測模塊監控程序的運行; 當出現線程調用函數或方法時,則獲取當前訪問線程、當前函數或方法、調用對象信 息,並將這些信息組合成一個線程記錄TM ;同理,當程序再次出現線程調用其他函數或方 法時,可得到程序中其餘的線程記錄TM ; 當沒有出現線程調用函數或方法時,則線程追蹤檢測模塊繼續監控程序的運行; A5、線程記錄TM通過目標機中的通信模塊經過USB串口線發送到宿主機中的緩衝區B 中保存; A6、程序一次執行完成後,宿主機中的線程追蹤控制模塊將緩衝區B中的所有線程記 錄TM按時間的先後順序加入到線程隊列TQ中; A7、宿主機將線程隊列TQ輸出到記事本文件out. txt中; B、 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼 中的關注點與記錄信息來檢查記事本文件out. txt中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段; 如果路徑信息記錄不完整,則重複執行步驟A4、A5、A6、A7 ; C、 進入並行程序回放階段,並行程序回放階段中並行程序按照記事本文件out. txt中 保存的路徑重演的具體步驟如下: C1、線程回放控制模塊將緩衝區B中線程隊列TQ所包含的線程記錄TM信息按FIFO原 則依次通過USB串口線發送到目標機中的通信模塊; C2、目標機中的線程回放組件關閉線程追蹤檢測模塊監控功能,防止在回放過程中再 次對程序執行過程進行追蹤檢測; C3、目標機中的線程回放組件讀取並根據線程記錄TM中所包含的線程、函數和訪問對 象的信息啟動指定的線程,調用指定的函數去訪問指定的對象,實現了該線程的執行信息 的回放; C4、目標機中的線程回放模塊讀取下一個線程記錄TM,重複步驟C3,直到線程隊列TQ 所包含的最後一個線程記錄TM,實現整個多線程並行程序一次執行的回放。
[0015] 實施例3 :如圖1-3所示,一種基於多線程嵌入式系統並行程序跟蹤與回放方法, 首先在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個線 程執行路徑信息,並生成一個記事本文件; 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中 的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟 硬體框架,確保並行程序按照記事本文件中保存的路徑重演。
[0016] 所述基於多線程嵌入式系統並行程序跟蹤與回放方法的具體步驟如下: A、在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個 線程執行路徑信息,並生成一個記事本文件的具體步驟如下: A1、首先宿主機中的嵌入式開發工具將程序原始碼發送到緩衝區A中; A2、宿主機中的線程追蹤控制模塊掃描此嵌入式程序原始碼,並定位程序原始碼中所 有的橫切關注點,此橫切關注點包括除maiη函數之外的函數與方法,在所有橫切關注點的 開始處插入面向方面的切入點Pointcut標誌; A3、宿主機中的嵌入式開發工具使用Aspect機制新建一個包含Before通知橫切關注 點的Aspect函數,然後將Aspect函數與程序原始碼編織成可執行面向方面程序,通過JTAG 工具燒錄到目標機存儲器中; A4、嵌入式作業系統啟動面向方面程序,同時線程追蹤檢測模塊監控程序的運行; 當出現線程調用函數或方法時,則獲取當前訪問線程、當前函數或方法、調用對象信 息,並將這些信息組合成一個線程記錄TM ;同理,當程序再次出現線程調用其他函數或方 法時,可得到程序中其餘的線程記錄TM ; 當沒有出現線程調用函數或方法時,則線程追蹤檢測模塊繼續監控程序的運行; A5、線程記錄TM通過目標機中的通信模塊經過USB串口線發送到宿主機中的緩衝區B 中保存; A6、程序一次執行完成後,宿主機中的線程追蹤控制模塊將緩衝區B中的所有線程記 錄TM按時間的先後順序加入到線程隊列TQ中; A7、宿主機將線程隊列TQ輸出到記事本文件out. txt中; B、 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼 中的關注點與記錄信息來檢查記事本文件out. txt中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段; 如果路徑信息記錄不完整,則重複執行步驟A4、A5、A6、A7 ; C、 進入並行程序回放階段,並行程序回放階段中並行程序按照記事本文件out. txt中 保存的路徑重演的具體步驟如下: C1、線程回放控制模塊將緩衝區B中線程隊列TQ所包含的線程記錄TM信息按FIFO原 則依次通過USB串口線發送到目標機中的通信模塊; C2、目標機中的線程回放組件關閉線程追蹤檢測模塊監控功能,防止在回放過程中再 次對程序執行過程進行追蹤檢測; C3、目標機中的線程回放組件讀取並根據線程記錄TM中所包含的線程、函數和訪問對 象的信息啟動指定的線程,調用指定的函數去訪問指定的對象,實現了該線程的執行信息 的回放; C4、目標機中的線程回放模塊讀取下一個線程記錄TM,重複步驟C3,直到線程隊列TQ 所包含的最後一個線程記錄TM,實現整個多線程並行程序一次執行的回放。
[0017] 所述步驟A4中所述的線程記錄TM是指在嵌入式系統中,處於運行態的線程一次 執行過程所記錄的相關執行信息,用一個三元組TM = 表示; 其中,t表示在任意時刻正在運行的線程,m表示線程t調用的函數或方法,〇表示線程 t所訪問的對象類型,包括空Null、數據D、信號量S和消息M。
[0018] 實施例4 :如圖1-3所示,一種基於多線程嵌入式系統並行程序跟蹤與回放方法, 首先在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個線 程執行路徑信息,並生成一個記事本文件; 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中 的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟 硬體框架,確保並行程序按照記事本文件中保存的路徑重演。
[0019] 所述基於多線程嵌入式系統並行程序跟蹤與回放方法的具體步驟如下: A、在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個 線程執行路徑信息,並生成一個記事本文件的具體步驟如下: A1、首先宿主機中的嵌入式開發工具將程序原始碼發送到緩衝區A中; A2、宿主機中的線程追蹤控制模塊掃描此嵌入式程序原始碼,並定位程序原始碼中所 有的橫切關注點,此橫切關注點包括除main函數之外的函數與方法,在所有橫切關注點的 開始處插入面向方面的切入點Pointcut標誌; A3、宿主機中的嵌入式開發工具使用Aspect機制新建一個包含Before通知橫切關注 點的Aspect函數,然後將Aspect函數與程序原始碼編織成可執行面向方面程序,通過JTAG 工具燒錄到目標機存儲器中; A4、嵌入式作業系統啟動面向方面程序,同時線程追蹤檢測模塊監控程序的運行; 當出現線程調用函數或方法時,則獲取當前訪問線程、當前函數或方法、調用對象信 息,並將這些信息組合成一個線程記錄TM ;同理,當程序再次出現線程調用其他函數或方 法時,可得到程序中其餘的線程記錄TM ; 當沒有出現線程調用函數或方法時,則線程追蹤檢測模塊繼續監控程序的運行; A5、線程記錄TM通過目標機中的通信模塊經過USB串口線發送到宿主機中的緩衝區B 中保存; A6、程序一次執行完成後,宿主機中的線程追蹤控制模塊將緩衝區B中的所有線程記 錄TM按時間的先後順序加入到線程隊列TQ中; A7、宿主機將線程隊列TQ輸出到記事本文件out. txt中; B、 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼 中的關注點與記錄信息來檢查記事本文件out. txt中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段; 如果路徑信息記錄不完整,則重複執行步驟A4、A5、A6、A7 ; C、 進入並行程序回放階段,並行程序回放階段中並行程序按照記事本文件out. txt中 保存的路徑重演的具體步驟如下: C1、線程回放控制模塊將緩衝區B中線程隊列TQ所包含的線程記錄TM信息按FIFO原 則依次通過USB串口線發送到目標機中的通信模塊; C2、目標機中的線程回放組件關閉線程追蹤檢測模塊監控功能,防止在回放過程中再 次對程序執行過程進行追蹤檢測; C3、目標機中的線程回放組件讀取並根據線程記錄TM中所包含的線程、函數和訪問對 象的信息啟動指定的線程,調用指定的函數去訪問指定的對象,實現了該線程的執行信息 的回放; C4、目標機中的線程回放模塊讀取下一個線程記錄TM,重複步驟C3,直到線程隊列TQ 所包含的最後一個線程記錄TM,實現整個多線程並行程序一次執行的回放。
[0020] 所述步驟A4中所述的線程記錄TM是指在嵌入式系統中,處於運行態的線程一次 執行過程所記錄的相關執行信息,用一個三元組TM = 表示; 其中,t表示在任意時刻正在運行的線程,m表示線程t調用的函數或方法,〇表示線程 t所訪問的對象類型,包括空Null、數據D、信號量S和消息M。
[0021] 所述步驟A6中所述的線程隊列TQ是指在嵌入式系統中,並行程序執行過程中所 有線程記錄TM所形成的一組序列,用TQ =〈TM1,TM2,……TMn>表示; 其中,ΤΜη表示系統中並行程序中一個線程記錄,η表示線程運行的時間點。
[0022] 實施例5 :如圖1-3所示,一種基於多線程嵌入式系統並行程序跟蹤與回放方法, 首先在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個線 程執行路徑信息,並生成一個記事本文件; 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中 的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟 硬體框架,確保並行程序按照記事本文件中保存的路徑重演。
[0023] 所述基於多線程嵌入式系統並行程序跟蹤與回放方法的具體步驟如下: A、 在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個 線程執行路徑信息,並生成一個記事本文件的具體步驟如下: A1、首先宿主機中的嵌入式開發工具將程序原始碼發送到緩衝區A中; A2、宿主機中的線程追蹤控制模塊掃描此嵌入式程序原始碼,並定位程序原始碼中所 有的橫切關注點,此橫切關注點包括除maiη函數之外的函數與方法,在所有橫切關注點的 開始處插入面向方面的切入點Pointcut標誌; A3、宿主機中的嵌入式開發工具使用Aspect機制新建一個包含Before通知橫切關注 點的Aspect函數,然後將Aspect函數與程序原始碼編織成可執行面向方面程序,通過JTAG 工具燒錄到目標機存儲器中; A4、嵌入式作業系統啟動面向方面程序,同時線程追蹤檢測模塊監控程序的運行; 當出現線程調用函數或方法時,則獲取當前訪問線程、當前函數或方法、調用對象信 息,並將這些信息組合成一個線程記錄TM ;同理,當程序再次出現線程調用其他函數或方 法時,可得到程序中其餘的線程記錄TM ; 當沒有出現線程調用函數或方法時,則線程追蹤檢測模塊繼續監控程序的運行; A5、線程記錄TM通過目標機中的通信模塊經過USB串口線發送到宿主機中的緩衝區B 中保存; A6、程序一次執行完成後,宿主機中的線程追蹤控制模塊將緩衝區B中的所有線程記 錄TM按時間的先後順序加入到線程隊列TQ中; A7、宿主機將線程隊列TQ輸出到記事本文件out. txt中; B、 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼 中的關注點與記錄信息來檢查記事本文件out. txt中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段; 如果路徑信息記錄不完整,則重複執行步驟A4、A5、A6、A7 ; C、 進入並行程序回放階段,並行程序回放階段中並行程序按照記事本文件out. txt中 保存的路徑重演的具體步驟如下: C1、線程回放控制模塊將緩衝區B中線程隊列TQ所包含的線程記錄TM信息按FIFO原 則依次通過USB串口線發送到目標機中的通信模塊; C2、目標機中的線程回放組件關閉線程追蹤檢測模塊監控功能,防止在回放過程中再 次對程序執行過程進行追蹤檢測; C3、目標機中的線程回放組件讀取並根據線程記錄TM中所包含的線程、函數和訪問對 象的信息啟動指定的線程,調用指定的函數去訪問指定的對象,實現了該線程的執行信息 的回放; C4、目標機中的線程回放模塊讀取下一個線程記錄TM,重複步驟C3,直到線程隊列TQ 所包含的最後一個線程記錄TM,實現整個多線程並行程序一次執行的回放。
[0024] 所述步驟A4中所述的線程記錄TM是指在嵌入式系統中,處於運行態的線程一次 執行過程所記錄的相關執行信息,用一個三元組TM = 表示; 其中,t表示在任意時刻正在運行的線程,m表示線程t調用的函數或方法,〇表示線程 t所訪問的對象類型,包括空Null、數據D、信號量S和消息Μ。
[0025] 所述步驟A6中所述的線程隊列TQ是指在嵌入式系統中,並行程序執行過程中所 有線程記錄TM所形成的一組序列,用TQ =〈TM1,TM2,……TMn>表示; 其中,ΤΜη表示系統中並行程序中一個線程記錄,η表示線程運行的時間點。
[0026] 所述TQ中ΤΜη之間具有時間上的先後關係。
[0027] 實施例6 :如圖1-4所示,一種基於多線程嵌入式系統並行程序跟蹤與回放方法, S1 :在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個 線程執行路徑信息,並生成一個記事本文件; 宿主機作業系統為Windows ΧΡ系統,嵌入式開發工具為ADC,目標機是使用天嵌公司 生產的T Q 2 4 4 0開發板,並安裝嵌入式linux作業系統,用USB串口線和仿真器將宿主 機與目標機連接起來進行通信; 一個簡單的多線程並行程序(生產者與消費者問題)A. mc,該程序包括2個線程(生產線 程 Producer、消費者線程 Consumer)、4 個函數(lock、unlock、get、put )、1 個數據 10和1個互斥信號量S,生產者線程先獲取信號量S,向緩衝區中生產一個數據10,釋放信 號量S,然後消費者線程獲取信號量S,從緩衝區中取走數據10,釋放信號量S ; SI. 1 :宿主機中的工具ADC編輯上述的多線程並行程序A.mc,將其發送到T Q 2 4 4 0開發板中緩衝區A中; S1. 2:線程追蹤控制模塊掃描這個並行程序,定位其中所包含的4個橫向關注點: lock、unlock、get 、put ,並在源程序A. me中這些關注點的開始處插入Pointcut標 志,分別為 Pointcut lock 、Pointcut unlock 、Pointcut put 和 Pointcut get ; SI. 3 :嵌入式開發工具ADC根據掃描到的4個橫向關注點,利用面向方面機制新建一個 Aspect函數,其中包括一個Before通知,Before通知內容為:記錄運行線程、記錄線程調用 函數或方法、記錄訪問對象,然後,ADC將Aspect函數與源程序A. me編織成可執行面向方 面程序A. bin,通過JTAG工具燒錄到T Q 2 4 4 0開發板的flash存儲器中; S1.4 :開發板中的嵌入式linux作業系統啟動運行向方面程序A.bin,線程追蹤檢測 模塊監控A. bin的運行;當生產線程Producer調用lock 函數訪問互斥信號量S時,線程 追蹤檢測模塊記錄線程Producer、lock〇和S執行信息,將這些執行信息組成一個線程記 錄TM1 =〈Producer, lock, S> ;同理,當生產線程Producer調用put 函數向緩衝區中生 產數據10、生產線程Producer調用unlockO函數訪問互斥信號量S、消費者線程Consumer 調用lock〇函數訪問互斥信號量S、消費者線程Consumer調用get〇函數從緩衝區中取走 數據10、消費者線程Consumer調用unlockO函數訪問互斥信號量S時,可得其餘線程記錄 TM2、TM3、TM4、TM5、TM6; S1. 5 :開發板中線程追蹤控制模塊將得到的6個線程記錄TM1、TM2、TM3、TM4、TM5、TM6 通過的通信模塊經過USB通信線路發送到宿主機中的指定的緩衝區B中保存; S1. 6 :當程序A. bin-次執行完成後,線程追蹤控制模塊將緩衝區B中保存的線程記錄 TM1、TM2、TM3、TM4、TM5、TM6按時間的先後順序組建成一個線程隊列TQ = 中; SI. 7 :宿主機將緩衝區B中線程隊列TQ輸出到一個記事本文件out. txt ; 52 :當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序源代 碼中的關注點與記錄信息來檢查記事本文件out. txt中的路徑信息記錄是否完整; 當程序A. bin -次執行完成後,調試人員對比程序原始碼A. me中的所有關注點 (lock、unlock、get 、put )與記錄信息 TQ =〈TM1,TM2, TM3, TM4, TM5, TM6> 來檢查 記事本文件out. txt中的路徑信息記錄是否完整; 如果路徑信息記錄完整,啟動線程回放控制模塊,進行並行程序A. bin執行路徑信息 的回放; 如果路徑信息記錄不完整,則再次運行並行程序A. bin,並重複上述線程隊列TQ的產 生過程,即重複執行步驟S1. 4、S1. 5、S1. 6、S1. 7 ; 53 :進入並行程序回放階段,並行程序回放階段中並行程序按照記事本文件out. txt 中保存的路徑重演的具體步驟如下: S3. 1 :宿主機中線程回放控制模塊將緩衝區B中線程隊列TQ所包含的6個線程記 錄(TM1,TM2, TM3, TM4, TM5, TM6)信息按先進先出原則依次通過USB串口線發送到T Q 2 4 4 0開發板中的通信模塊; S3. 2 :開發板中的線程回放組件關閉線程追蹤檢測模塊監控功能,防止在本次回放控 制過程中再次對程序A. bin有關執行過程進行路徑追蹤,產生無用的線程記錄。
[0028] S3. 3 : T Q 2 4 4 0開發板中的線程回放組件首先讀取第一個線程記錄TM1中所 包含的線程Producer、函數lock和訪問對象S的信息,並根據這些信息啟動程序A. bin, 運行線程Producer,調用函數lock〇去訪問互斥信號量S,從而實現了線程Producer的一 次執行信息的回放; S3. 4 :線程回放模塊讀依次取線程記錄TM2, TM3, TM4, TM5, TM6,重複上述線程執行信 息的回放過程;最終實現整個多線程並行程序A. bin -次執行過程中的所有線程執行路徑 回放,如圖4所示。
[0029] 表1程序A. bin -次執行完成後產生線程隊列TQ的描述

【權利要求】
1. 一種基於多線程嵌入式系統並行程序跟蹤與回放方法,其特徵在於:首先在並行程 序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個線程執行路徑信 息,並生成一個記事本文件; 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼中 的關注點與記錄信息來檢查記事本文件中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段,利用嵌入式系統中程序路徑回放軟 硬體框架,確保並行程序按照記事本文件中保存的路徑重演。
2. 根據權利要求1所述的基於多線程嵌入式系統並行程序跟蹤與回放方法,其特徵在 於:所述基於多線程嵌入式系統並行程序跟蹤與回放方法的具體步驟如下: A、 在並行程序執行階段,利用嵌入式系統中程序運行路徑追蹤軟硬體框架,記錄多個 線程執行路徑信息,並生成一個記事本文件的具體步驟如下: A1、首先宿主機中的嵌入式開發工具將程序原始碼發送到緩衝區A中; A2、宿主機中的線程追蹤控制模塊掃描此嵌入式程序原始碼,並定位程序原始碼中所 有的橫切關注點,此橫切關注點包括除maiη函數之外的函數與方法,在所有橫切關注點的 開始處插入面向方面的切入點Pointcut標誌; A3、宿主機中的嵌入式開發工具使用Aspect機制新建一個包含Before通知橫切關注 點的Aspect函數,然後將Aspect函數與程序原始碼編織成可執行面向方面程序,通過 工具燒錄到目標機存儲器中; A4、嵌入式作業系統啟動面向方面程序,同時線程追蹤檢測模塊監控程序的運行; 當出現線程調用函數或方法時,則獲取當前訪問線程、當前函數或方法、調用對象信 息,並將這些信息組合成一個線程記錄TM ;同理,當程序再次出現線程調用其他函數或方 法時,可得到程序中其餘的線程記錄TM ; 當沒有出現線程調用函數或方法時,則線程追蹤檢測模塊繼續監控程序的運行; A5、線程記錄TM通過目標機中的通信模塊經過USB串口線發送到宿主機中的緩衝區B 中保存; A6、程序一次執行完成後,宿主機中的線程追蹤控制模塊將緩衝區B中的所有線程記 錄TM按時間的先後順序加入到線程隊列TQ中; A7、宿主機將線程隊列TQ輸出到記事本文件out. txt中; B、 當程序中所有的線程執行路徑信息記錄完成後,程序調試人員通過查看程序原始碼 中的關注點與記錄信息來檢查記事本文件out. txt中的路徑信息記錄是否完整; 如果路徑信息記錄完整,進入並行程序回放階段; 如果路徑信息記錄不完整,則重複執行步驟A4、A5、A6、A7 ; C、 進入並行程序回放階段,並行程序回放階段中並行程序按照記事本文件out. txt中 保存的路徑重演的具體步驟如下: C1、線程回放控制模塊將緩衝區B中線程隊列TQ所包含的線程記錄TM信息按FIFO原 則依次通過USB串口線發送到目標機中的通信模塊; C2、目標機中的線程回放組件關閉線程追蹤檢測模塊監控功能,防止在回放過程中再 次對程序執行過程進行追蹤檢測; C3、目標機中的線程回放組件讀取並根據線程記錄TM中所包含的線程、函數和訪問對 象的信息啟動指定的線程,調用指定的函數去訪問指定的對象,實現了該線程的執行信息 的回放; C4、目標機中的線程回放模塊讀取下一個線程記錄TM,重複步驟C3,直到線程隊列TQ 所包含的最後一個線程記錄TM,實現整個多線程並行程序一次執行的回放。
3. 根據權利要求1所述的基於多線程嵌入式系統並行程序跟蹤與回放方法,其特徵在 於:所述步驟A4中所述的線程記錄TM是指在嵌入式系統中,處於運行態的線程一次執行過 程所記錄的相關執行信息,用一個三元組TM = 表示; 其中,t表示在任意時刻正在運行的線程,m表示線程t調用的函數或方法,〇表示線程 t所訪問的對象類型,包括空Null、數據D、信號量S和消息M。
4. 根據權利要求1所述的基於多線程嵌入式系統並行程序跟蹤與回放方法,其特徵在 於:所述步驟A6中所述的線程隊列TQ是指在嵌入式系統中,並行程序執行過程中所有線程 記錄TM所形成的一組序列,用TQ =〈TM1,TM2,……TMn>表示; 其中,ΤΜη表示系統中並行程序中一個線程記錄,η表示線程運行的時間點。
5. 根據權利要求4所述的基於多線程嵌入式系統並行程序跟蹤與回放方法,其特徵在 於:所述TQ中ΤΜη之間具有時間上的先後關係。
【文檔編號】G06F11/36GK104216764SQ201410369935
【公開日】2014年12月17日 申請日期:2014年7月31日 優先權日:2014年7月31日
【發明者】張晶, 潘有順, 陳沫良, 張果, 崔毅, 嚴涵, 沈江炎, 容會 申請人:昆明理工大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀