TW201616356A - 偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品 - Google Patents

偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品 Download PDF

Info

Publication number
TW201616356A
TW201616356A TW103135943A TW103135943A TW201616356A TW 201616356 A TW201616356 A TW 201616356A TW 103135943 A TW103135943 A TW 103135943A TW 103135943 A TW103135943 A TW 103135943A TW 201616356 A TW201616356 A TW 201616356A
Authority
TW
Taiwan
Prior art keywords
branch instruction
debug
program
under test
record set
Prior art date
Application number
TW103135943A
Other languages
English (en)
Other versions
TWI566090B (zh
Inventor
Ying-Qin Zheng
Original Assignee
Insyde Software Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Insyde Software Corp filed Critical Insyde Software Corp
Priority to TW103135943A priority Critical patent/TWI566090B/zh
Priority to US14/885,585 priority patent/US9645911B2/en
Publication of TW201616356A publication Critical patent/TW201616356A/zh
Application granted granted Critical
Publication of TWI566090B publication Critical patent/TWI566090B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一種偵錯韌體/軟體以產生追蹤資料之方法,其包括下列步驟:在受測系統中於開機階段執行偵錯模組,以記錄受測之模組之載入位址及分支指令執行記錄集於暫存區中;由分析器於作業系統階段在暫存區中存取載入位址與分支指令執行記錄集並存取程式偵錯符號表,其中在編譯源程式碼時產生程式偵錯符號表;以及由分析器根據載入位址及分支指令執行記錄集從程式偵錯符號表中找出原始碼檔、函式名稱及所在行號以產生包括程式執行路徑及程式碼覆蓋率之分析報表。

Description

偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品
本發明係有關於電腦之技術領域,特別有關於一種偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品。
現代軟體以模組化的方式被寫入系統中,每個模組具有特定的功能,並且具有特定的介面與其他模組交互作用。在這種方式中,每個模組可以被寫入並分別進行測試,可使得多個開發者並行工作於較大的軟體系統。模組化的軟體也有利地允許現有的模組併入多個更大的系統中。模組化軟體的一個困難是,每個模組可能具有不同的作者或者由具有不同程式約定之不同物件所提供。因此,測試軟體模組之間的交互作用以確保軟體系統的行為如所預期,是不可或缺的工作。
用以測試軟體模組之間的交互作用之偵錯(debug)系統提供用以產生一系統追踪(system trace)之能力,其記錄由軟體系統或模組執行的所有改變程式執行路徑所產生的相關資訊。例如西元2011年8月9日公告之美國專利第US 7,996,686 B2號專利案及西元2013年10月15日公告之美國專利第US 8,561,033 B2號等揭露利用偵錯系統以追蹤及記錄軟體系統或模組所做的所有改變程式執 行路徑所產生的相關資訊。
上述專利案及目前的技術對於軟體系統或模組進行偵錯之追蹤係在作業系統階段進行,亦即對只能在作業系統階段所執行之軟體或模組進行偵錯之追蹤,上述專利案及目前的技術對於如BIOS(Basic Input Output System,基本輸入輸出系統)或Android等嵌入式系統之模組並無法進行偵錯之追蹤,因此需提出一種新的偵錯方案以對嵌入式系統之模組進行偵錯之追蹤。
有鑒於上述問題,本發明之目的提供一種偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品,可對如BIOS或Android等嵌入式系統之模組進行偵錯之追蹤,以實現一種對嵌入式系統之模組進行偵錯之追蹤的新方案,即無需改動嵌入式系統之模組本身的程式碼,可以從遠端即時的控制分支追蹤功能的開啟與關閉,以及設定儲存空間的大小,程式設計師可以只針對有興趣的模組,在以有限的儲存空間,追蹤並記錄嵌入式系統的開機流程,而能即時做資料分析。
本發明之第一態樣係提供一種偵錯韌體/軟體以產生追蹤資料之方法,該方法包括下列步驟:在一主控系統中執行一偵錯工具程式,在一受測系統中於開機階段執行一偵錯引擎以配置在一第一記憶體中之一暫存區的空間大小,並記錄一載入位址及一分支指令執行記錄集於該暫存區中,其中該載入位址係一嵌入式系統之一模組被載入該第一記憶體中之位址,該分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄; 由該主控系統發出一偵錯指令至該受測系統,以收集該受測系統中之該暫存區中之該載入位址及該分支指令執行記錄集,並儲存於一第二記憶體中;由該主控系統之一分析器於該第二記憶體中存取該載入位址、該分支指令執行記錄集及一程式偵錯符號表,其中在編譯一源程式碼時產生一程式偵錯符號表;以及由該分析器將根據載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號以產生一分析報表,該分析報表包括一程式執行路徑及一程式碼覆蓋率。
本發明之第二態樣係提供一種偵錯韌體/軟體以產生追蹤資料之系統,其包括:一受測系統,包括:一第一記憶體;一快閃記憶體,存放有一嵌入式系統;一第一中央處理單元,於開機階段執行一偵錯引擎以配置在該第一記憶體中之一暫存區的空間大小,記錄一載入位址及一分支指令執行記錄集於該暫存區中,接收一偵錯指令以傳送出在該暫存區中之該載入位址及該分支指令執行記錄集,其中該載入位址係該嵌入式系統之一模組被載入該第一記憶體中之位址,該分支指令執行記錄集包括有記錄執行一分支指令之前後位址之複數個分支指令執行記錄;以及一主控系統,包括:一第二記憶體,存放有一程式偵錯符號表及該嵌入式系統之一源程式碼,其中在編譯該源程式碼時產生該程式偵錯符號表;以 及一第二中央處理器單元,執行一偵錯工具程式以發出該偵錯指令至該受測系統,以收集該受測系統之該暫存區中之該載入位址及該分支指令執行記錄集,執行一分析器,以在該第二記憶體中存取該載入位址、該分支指令執行記錄集及該程式偵錯符號表,並根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號以產生一分析報表,該分析報表包括一程式執行路徑及一程式碼覆蓋率。
本發明之第三態樣係提供一種偵錯韌體/軟體以產生追蹤資料之方法,該方法包括下列步驟:在一受測系統中於開機階段執行一偵錯模組,以配置在一記憶體中之一暫存區的空間大小;由該受測系統執行一嵌入式系統之一模組,記錄該模組之一載入位址及一分支指令執行記錄集於該暫存區中,其中該載入位址係該模組被載入該記憶體中之位址,該分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄;由該受測系統之一分析器於作業系統階段在暫存區中存取該載入位址與該分支指令執行記錄集及在該記憶體中存取一程式偵錯符號表,其中在編譯一源程式碼時產生該程式偵錯符號表;以及由該分析器根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號以產生一分析報表,該分析報表包括一程式執行路徑及一程式碼覆蓋率。
本發明之第四態樣係提供一種偵錯韌體/軟體以產生追蹤資料之系統,其包括: 一記憶體,存放有一程式偵錯符號表及該嵌入式系統之一源程式碼,其中在編譯該源程式碼時產生該程式偵錯符號表;一快閃記憶體,存放有一嵌入式系統;以及一中央處理單元,於開機階段執行一偵錯模組以配置在該記憶體中之一暫存區的空間大小,執行一嵌入式系統之一模組,記錄一載入位址及一分支指令執行記錄集於該暫存區中,於作業系統階段測系統執行一分析器,以在該暫存區中存取該載入位址與該分支指令執行記錄集及在該記憶體中存取該程式偵錯符號表,並根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號以產生包括一程式執行路徑及一程式碼覆蓋率之一分析報表;其中該載入位址係該模組被載入該記憶體中之位址,該分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄。
本發明之第五態樣係提供一種內儲一程式之記錄媒體,當一偵錯韌體/軟體以產生追蹤資料之系統於該記錄媒體載入該程式並執行後,可完成本發明之第一態樣或第三態樣之方法。
本發明之第六態樣係提供一種內儲一程式之電腦程式產品,當一偵錯韌體/軟體以產生追蹤資料之系統於電腦程式產品載入該程式並執行後,可完成本發明之第一態樣或第三態樣之方法。
10‧‧‧受測系統
12‧‧‧記憶體
14‧‧‧快閃記憶體
16‧‧‧CPU
18‧‧‧傳輸介面
20‧‧‧主控系統
22‧‧‧記憶體
24‧‧‧CPU
26‧‧‧使用者介面
28‧‧‧傳輸介面
70‧‧‧受測系統
72‧‧‧記憶體
74‧‧‧快閃記憶體
76‧‧‧CPU
78‧‧‧使用者介面
圖1為本發明之第一實施例之偵錯韌體/軟體以產生追蹤資料之 系統之方塊圖;圖2為本發明之第一實施例之偵錯韌體/軟體以產生追蹤資料之軟體實施之示意圖;圖3為本發明之第一實施例之受測系統執行偵錯步驟之流程圖;圖4為本發明之第一實施例之主控系統傳送指令步驟之流程圖;圖5為本發明之第一實施例之主控系統執行收集步驟之流程圖;圖6為本發明之第一實施例之主控系統執行分析步驟之流程圖;圖7為本發明之第二實施例之偵錯韌體/軟體以產生追蹤資料之受測系統之方塊圖;以及圖8為本發明之第二實施例之偵錯韌體/軟體以產生追蹤資料之軟體實施之示意圖。
為使熟習本發明所屬技術領域之一般技藝者能更進一步了解本發明,下文特列舉本發明之數個較佳實施例,並配合所附圖式,詳細說明本發明的構成內容及所欲達成之功效。
本發明對如BIOS或Android等嵌入式系統之模組進行偵錯之追蹤,為了方便說明起見,以下實施例皆以BIOS說明本發明之技術,但並非用以侷限本發明之權利範圍。
圖1為本發明之第一實施例之偵錯韌體/軟體以產生追蹤資料之系統之方塊圖。在圖1中,偵錯韌體/軟體以產生追蹤資料之系統包括一受測系統10及一主控系統20。
受測系統10包括一記憶體12、一快閃記憶體(Flash)14、一CPU(Center Processing Unit,中央處理單元)16及一傳輸介面18。主控系統20包括一記憶體22、一CPU 24、一使用者介面 26及一傳輸介面28。
在受測系統10中,快閃記憶體14存放有BIOS;在開機階段,在不需改動BIOS之模組本身的程式碼的情況下,CPU 16執行一偵錯引擎以配置在記憶體12中之一暫存區(未圖示)的空間大小,以有限的儲存空間追蹤並記錄BIOS的開機流程,進行主控系統20與受測系統10之連結,並記錄一載入位址及一分支指令執行記錄集於暫存區中,其中該載入位址係BIOS之模組被載入記憶體12中之位址,分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄。
CPU 16經由傳輸介面18接收由主控系統20所傳送之一偵錯指令,CPU 16根據該偵錯指令將暫存區中之模組的載入位址及分支指令執行記錄集傳送至主控系統20。
分支追蹤儲存(Branch Trace Store,BTS)是目前廣泛被英特爾公司(Intel)CPU所提供的硬體輔助偵錯功能,簡單的說就是CPU將模組實際執行到的分支指令(jump/jxx/call/int/ect.)之相關資訊保存下來。一般CPU都會保存每個分支指令的源位址和目標位址。
在主控系統20中,記憶體22存放有一程式偵錯符號表(Debug Symbol)及BIOS之一源程式碼,其中在編譯該源程式碼時產生該程式偵錯符號表。其中,程式資料庫(Program Database,PDB)是由微軟公司(Microsoft)發展出之用以儲存有關程式(或如DLL、EXE等程式模組)之偵錯資訊之專用檔案格式。
CPU 24執行一偵錯工具程式,使用者在使用者介面26上所顯示之一偵錯選擇畫面選擇要進行偵錯之模組,以產生相應要 進行偵錯之模組之偵錯指令,CPU 24經由傳輸介面28發出該偵錯指令至受測系統10。如此可從遠端即時的控制分支追蹤功能的開啟與關閉,程式設計師可以在偵錯選擇畫面上選擇有興趣的模組做記錄,並能即時做資料分析。
CPU 24執行一分析器,CPU 24經由傳輸介面28於受測系統10之暫存區中收集載入位址及分支指令執行記錄集及存取在記憶體22中之一程式偵錯符號表,根據載入位址及分支指令執行記錄集從偵錯程式符號表中找一原始碼檔、一函式名稱及所在行號產生一分析報表,該分析報表包括一程式執行路徑及一程式碼覆蓋率,使用者可觀看及分析在使用者介面26上所顯示之分析報表。
圖2為本發明之第一實施例之偵錯韌體/軟體以產生追蹤資料之軟體實施之示意圖。在說明圖2之流程步驟時參考圖1之組件。
在圖2中,在受測系統區中,於開機階段,CPU 16執行一偵錯引擎,軟體執行到該程序時,受測系統10實施如圖3為本發明之第一實施例之受測系統執行偵錯步驟之流程圖所示。
在圖3中,在受測系統區中,由受測系統10之CPU 16在開機階段執行偵錯引擎,以配置在記憶體12中之暫存區的空間大小,以有限的儲存空間追蹤並記錄BIOS的開機流程,進行主控系統20與受測系統10之連結,並記錄一載入位址及一分支指令執行記錄集於暫存區中,其中該載入位址係BIOS之受測模組被載入記憶體12中之位址,分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄(步驟S30)。
由受測系統10之CPU 16執行開機程序,CPU 16經由 傳輸介面18發出已準備好連結之信號給主控系統20,以等待與主控系統20連結(步驟S32)。主控系統20之CPU 24經由傳輸介面28收到受測系統10之已準備好連結之信號,受測系統10與主控系統20進行連結(步驟S34)。
與主控系統20連結完成之受測系統10等待主控系統20發出偵錯指令(步驟S36)。受測系統10之CPU 16經由傳輸介面18收到主控系統20所發出之偵錯指令時,CPU 16執行相應偵錯指令之程序,例如CPU 16執行受測之模組、記錄受測模組之載入位址及分支指令執行記錄集於暫存區中等(步驟S38)。步驟S38執行結束後再回到步驟S36,實施由受測系統10等待主控系統20發出偵錯指令之步驟。
再參考圖2,在主控系統區,由主控系統20之CPU 24執行一偵錯工具程式以產生偵錯指令,並經由傳輸介面28發送偵錯指令至受測系統10,CPU 24經由傳輸介面28收集儲存在受測系統10之暫存區中之模組之載入位址及分支指令執行記錄集,並將載入位址及分支指令執行記錄集儲存於記憶體22中,軟體執行到該程序時,主控系統20實施如圖4為本發明之第一實施例之主控系統傳送指令步驟之流程圖所示。
在圖4中,在主控系統區中,主控系統20之CPU 24執行偵錯工具程式,以在使用者介面26上顯示一偵錯選擇畫面,以供使用者選擇要進行偵錯之模組(步驟S40)。由主控系統20等待受測系統10是否準備好要進行連結(步驟S42)。主控系統20之CPU 24經由傳輸介面28收到受測系統10之已準備好連結之信號,主控系統20與受測系統10進行連結(步驟S44)。
使用者在使用者介面26上選擇要進行偵錯之模組(步驟S46)。使用者對於有興趣之受測模組之偵錯可在使用者介面26上之偵錯選擇畫面選擇要進行偵錯之模組,而由CPU 24所執行之偵錯工具程式產生相應於要進行偵錯之模組之偵錯指令,並由CPU 24經由傳輸介面28傳送該偵錯指令至受測系統10(步驟S48)。步驟S48執行結束後再回到步驟S46,實施由使用者在偵錯選擇畫面上選擇要進行偵錯之模組之步驟。
再次參考圖2,在主控系統區中,由主控系統20之一分析器於記憶體22中存取載入位址、分支指令執行記錄集及程式偵錯符號表,其中在編譯源程式碼時產生程式偵錯符號表,軟體執行到該程序時,主控系統20實施如圖5為本發明之第一實施例之主控系統執行收集步驟之流程圖所示。
在圖5中,在主控系統區中,使用者在主控系統20之使用者介面26發出一收集請求,以進行主控系統20收集在受測系統10中受測模組之載入位址及分支指令執行記錄集之程序(步驟S50)。
受測系統10是否有載入新的模組(步驟S52),當受測系統10有載入新的模組時,由受測系統10之CPU 16所執行之偵錯引擎將新的模組之載入位址及分支指令執行記錄集附加並儲存於暫存區中。
若受測系統10沒有載入新的模組,則持續步驟S52;若受測系統10有載入新的模組,則主控系統20傳送偵錯指令至受測系統10,由主控系統20收集在受測系統10之暫存區中附加有新的模組之載入位址及分支指令執行記錄集之偵錯資料(步驟S54)。主控系統20將該偵錯資料儲存於主控系統20之記憶體22中(步驟S56)。
再次參考圖2,在主控系統區中,由主控系統20之分析器根據偵錯資料中之載入位址及分支指令執行記錄集從程式偵錯符號表中找出原始碼檔、函式名稱及所在行號以產生分析報表,分析報表包括程式執行路徑及程式碼覆蓋率,軟體執行到該程序時,主控系統20實施如圖6為本發明之第一實施例之主控系統執行分析步驟之流程圖所示。
在圖6中,在主控系統區中,使用者在主控系統20之使用者介面26發出一分析請求,以使主控系統20進行收集及分析在受測系統10中受測模組之載入位址及分支指令執行記錄集之程序(步驟S60)。
主控系統20根據分析請求傳送相應有興趣之受測模組之偵錯指令至受測系統10,由主控系統20收集在受測系統10之暫存區中附加有受測模組之載入位址及分支指令執行記錄集之偵錯資料(步驟S62)。
主控系統20在收集偵錯資料後,由主控系統20之CPU 24執行分析器,根據載入位址及分支指令執行記錄集從該程式偵錯符號表中找出原始碼檔、函式名稱及所在行號以產生包括程式執行路徑及程式碼覆蓋率之分析報表(步驟S64)。在主控系統20之使用者介面26顯示該分析報表,以供使用者觀看與分析(步驟S66)。
在第一實施例中,由主控系統20遠端即時的控制受測系統10之分支追蹤功能。在另一實施例,儲存在受測系統之記憶體中之載入位址及分支指令執行記錄集可暫存在一外部儲存裝置(如隨身碟),之後將外部儲存裝置插置於主控系統,主控系統以離線方式收集及分析載入位址及分支指令執行記錄集,進而實施離線偵 錯韌體/軟體以產生受測系統之追蹤資料。
圖7為本發明之第二實施例之偵錯韌體/軟體以產生追蹤資料之受測系統之方塊圖。在圖7中,偵錯韌體/軟體以產生追蹤資料之受測系統70包括一記憶體72、一快閃記憶體74、一CPU 76及一使用者介面78。
快閃記憶體74存放有BIOS;記憶體72存放有一程式偵錯符號表及BIOS之一源程式碼,其中在編譯源程式碼時產生程式偵錯符號表。
受測系統70在開機階段時,CPU 76執行一偵錯模組,以配置在記憶體72中之一暫存區(未圖示)的空間大小,以有限的儲存空間追蹤並記錄BIOS的開機流程,並記錄有興趣之受測模組之一載入位址及一分支指令執行記錄集於暫存區中,其中該載入位址係BIOS之受測模組被載入記憶體72中之位址,分支指令執行記錄集包括記錄執行分支指令之前後位址之複數個分支指令執行記錄。
受測系統70在作業系統階段時,CPU 76執行一分析器,使CPU 76存取暫存區中之載入位址與分支指令執行記錄集及在記憶體72中存取程式偵錯符號表,並根據載入位址及分支指令執行記錄集從程式偵錯符號表中找出原始碼檔、函式名稱及所在行號以產生分析報表,分析報表包括程式執行路徑及程式碼覆蓋率。使用者觀看及分析在使用者介面78上顯示的分析報表。
圖8為本發明之第二實施例之偵錯韌體/軟體以產生追蹤資料之軟體實施之示意圖。在說明圖8之流程步驟時參考圖7之組件。
在圖8中,在開機階段,CPU 76執行一偵錯模組,以 配置在記憶體72中之暫存區的空間大小,以有限的儲存空間追蹤並記錄BIOS的開機流程,並記錄使用者有興趣之受測模組之載入位址及分支指令執行記錄集於暫存區中。
CPU 76執行受測之模組,而將受測模組被載入記憶體72中之載入位址及包括有記錄執行分支指令之前後位址之複數個分支指令執行記錄之分支指令執行記錄集記錄於暫存區中。
在作業系統階段,由受測系統70之分析器在暫存區中存取載入位址與分支指令執行記錄集及在記憶體72中存取程式偵錯符號表,其中在編譯源程式碼時產生程式偵錯符號表。
由分析器根據載入位址及分支指令執行記錄集從程式偵錯符號表中找出原始碼檔、函式名稱及所在行號以產生分析報表,分析報表包括程式執行路徑及程式碼覆蓋率。使用者可觀看及分析在受測系統70之使用者介面78上所顯示之分析報表。
本發明之偵錯韌體/軟體以產生追蹤資料之方法可以一程式型態來撰寫完成,並可將該程式儲存於一記錄媒體,當偵錯韌體/軟體以產生追蹤資料之系統於該記錄媒體載入該程式並執行後,便可完成如上述說明及圖式中所示之方法步驟。
本發明之上述之方法可以內儲一程式之一電腦程式產品來完成,當偵錯韌體/軟體以產生追蹤資料之系統例如從網路下載該程式並執行後,便可完成如上述說明及圖式中所示之方法步驟。
本發明提供一種偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品,其特點在於可對如BIOS或Android等嵌入式系統之模組進行偵錯之追蹤,以實現一種對嵌入 式系統之模組進行偵錯之追蹤的新方案,即無需改動嵌入式系統之模組本身的程式碼,可以從遠端即時的控制分支追蹤功能的開啟與關閉,以及設定儲存空間的大小,程式設計師可以只針對有興趣的模組,以有限的儲存空間,追蹤並記錄嵌入式系統的開機流程,並能即時做資料分析。
雖然本發明已參照較佳具體例及舉例性附圖敘述如上,惟其應不被視為係限制性者。熟悉本技藝者對其形態及具體例之內容做各種修改、省略及變化,均不離開本發明之申請專利範圍之所主張範圍。
10‧‧‧受測系統
12‧‧‧記憶體
14‧‧‧快閃記憶體
16‧‧‧CPU
18‧‧‧傳輸介面
20‧‧‧主控系統
22‧‧‧記憶體
24‧‧‧CPU
26‧‧‧使用者介面
28‧‧‧傳輸介面

Claims (14)

  1. 一種偵錯韌體/軟體以產生追蹤資料之方法,該方法包括下列步驟:在一主控系統中執行一偵錯工具程式,在一受測系統中於開機階段執行一偵錯引擎以配置在一第一記憶體中之一暫存區的空間大小,並記錄一載入位址及一分支指令執行記錄集於該暫存區中,其中該載入位址係一嵌入式系統之一模組被載入該第一記憶體中之位址,該分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄;由該主控系統發出一偵錯指令至該受測系統,以收集該受測系統之該暫存區中之該載入位址及該分支指令執行記錄集,並儲存於一第二記憶體中;由該主控系統之一分析器於該第二記憶體中存取該載入位址、該分支指令執行記錄集及一程式偵錯符號表,其中在編譯該嵌入式系統之一源程式碼時產生該程式偵錯符號表;以及由該分析器根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號以產生一分析報表,該分析報表包括一程式執行路徑及一程式碼覆蓋率。
  2. 如申請專利範圍第1項之方法,其中,在該受測系統中於開機階段執行該偵錯引擎之步驟中進一步包括下列步驟:由該受測系統執行該偵錯引擎以配置該暫存區,並記錄該載入位址及該分支指令執行記錄集於該暫存區中;由該受測系統執行開機程序並等待與該主控系統連結;由該受測系統與該主控系統連結; 由該受測系統等待該主控系統發出之該偵錯指令;以及由該受測系統執行該偵錯指令。
  3. 如申請專利範圍第1項之方法,其中,在該主控系統中執行該偵錯工具程式之步驟中進一步包括下列步驟:由該主控系統中執行該偵錯工具程式,以在一使用者介面上顯示一偵錯選擇畫面;由該主控系統等待該受測系統是否準備好連結;由該主控系統連結該受測系統;在該偵錯選擇畫面上選擇要進行偵錯之模組;以及由該主控系統傳送相應於要進行偵錯之模組之該偵錯指令至該受測系統,其中該偵錯指令係由該主控系統執行該偵錯工具程式所產生。
  4. 如申請專利範圍第1項之方法,其中,在由該分析器於該第二記憶體中存取該載入位址、該分支指令執行記錄集及該程式偵錯符號表之步驟中,包括下列步驟:發出一收集請求給該主控系統,由該主控系統收集在該受測系統之該暫存區中之該載入位址及該分支指令執行記錄集;在該受測系統中是否有載入新的模組;由該主控系統傳送該偵錯指令至該受測系統,以收集在該暫存區中所儲存的資料至一偵錯檔案;以及由該主控系統將所收集之新的模組之該載入位址及該分支指令執行記錄集附加至該偵錯檔案。
  5. 如申請專利範圍第1項之方法,其中,在由該分析器根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出該原 始碼檔、該函式名稱及所在行號以產生該分析報表步驟中,包括下列步驟:發出一分析請求至該主控系統;由該主控系統根據該分析請求傳送該偵錯指令至該受測系統,以收集在該暫存區中之該載入位址及該分支指令執行記錄集;由該主控系統編譯該源程式碼以產生該程式偵錯符號表,並根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出該原始碼檔、該函式名稱及所在行號以產生該分析報表;以及在該主控系統之一使用者介面上顯示該分析報表。
  6. 一種偵錯韌體/軟體以產生追蹤資料之系統,其包括:一受測系統,包括:一第一記憶體;一快閃記憶體,存放有一嵌入式系統;一第一中央處理單元,於開機階段執行一偵錯引擎以配置在該第一記憶體中之一暫存區的空間大小,記錄一載入位址及一分支指令執行記錄集於該暫存區中,接收一偵錯指令以傳送出在該暫存區中之該載入位址及該分支指令執行記錄集,其中該載入位址係該嵌入式系統之一模組被載入該第一記憶體中之位址,該分支指令執行記錄集包括有記錄執行一分支指令之前後位址之複數個分支指令執行記錄;以及一主控系統,包括:一第二記憶體,存放有一程式偵錯符號表及該嵌入式系統之一源程式碼,其中在編譯該源程式碼時產生該程式偵錯符號表;以及一第二中央處理器單元,執行一偵錯工具程式以發出該偵錯指 令至該受測系統,以收集該受測系統之該暫存區中之該載入位址及該分支指令執行記錄集,執行一分析器,以在該第二記憶體中存取該載入位址、該分支指令執行記錄集及該程式偵錯符號表,並根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號以產生一分析報表,該分析報表包括一程式執行路徑及一程式碼覆蓋率。
  7. 如申請專利範圍第6項之系統,其中,該受測系統進一步包括一第一傳輸介面,該第一中央處理單元經由該第一傳輸介面接收該主控系統所傳送之該偵錯指令,並傳送該模組之該載入位址及該分支指令執行記錄集至該主控系統。
  8. 如申請專利範圍第6項之系統,其中,該主控系統進一步包括:一第二傳輸介面,該第二中央處理單元經由該第二傳輸介面傳送該偵錯指令至該受測系統,並接收該受測系統傳送之該載入位址及該分支指令執行記錄集;以及一使用者介面,顯示選擇要進行偵錯之模組之一偵錯選擇畫面,以產生相應進行偵錯之模組之該偵錯指令,顯示該分析報表。
  9. 一種偵錯韌體/軟體以產生追蹤資料之方法,該方法包括下列步驟:在一受測系統中於開機階段執行一偵錯模組,以配置在一記憶體中之一暫存區的空間大小;由該受測系統執行一嵌入式系統之一模組,記錄該模組之一載入位址及一分支指令執行記錄集於該暫存區中,其中該載入位址係該模組被載入該記憶體中之位址,該分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄; 由該受測系統之一分析器於作業系統階段在該暫存區中存取該載入位址與該分支指令執行記錄集及在該記憶體中存取一程式偵錯符號表位址、及該嵌入式系統之一源程式碼,其中在編譯該一源程式碼時產生該程式偵錯符號表;以及由該分析器根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號以產生一分析報表,該分析報表包括一程式執行路徑及一程式碼覆蓋率。
  10. 如申請專利範圍第9項之方法,進一步包括下列步驟:在該受測系統之一使用者介面上顯示該分析報表。
  11. 一種偵錯韌體/軟體以產生追蹤資料之系統,其包括:一記憶體,存放有一程式偵錯符號表及該嵌入式系統之一源程式碼,其中在編譯該源程式碼時產生該程式偵錯符號表;一快閃記憶體,存放有一嵌入式系統;以及一中央處理單元,於開機階段執行一偵錯模組以配置在該記憶體中之一暫存區的空間大小,執行一嵌入式系統之一模組,記錄一載入位址及一分支指令執行記錄集於該暫存區中,於作業系統階段受測系統執行一分析器,以在該暫存區中存取該載入位址與該分支指令執行記錄集及在該記憶體中存取該程式偵錯符號表,並根據該載入位址及該分支指令執行記錄集從該程式偵錯符號表中找出一原始碼檔、一函式名稱及所在行號產生包括一程式執行路徑及一程式碼覆蓋率之一分析報表;其中該載入位址係該模組被載入該記憶體中之位址,該分支指令執行記錄集包括記錄執行一分支指令之前後位址之複數個分支指令執行記錄。
  12. 如申請專利範圍第11項之系統,進一步包括:一使用者介面,顯示選擇要進行偵錯之模組之一偵錯選擇畫面,由該中央處理單元根據選擇進行偵錯之模組在該使用者介面上顯示該分析報表。
  13. 一種內儲一程式之記錄媒體,當一偵錯韌體/軟體以產生追蹤資料之系統載入該程式並執行後,可完成如申請專利範圍第1至5及9至10項中任一項之方法。
  14. 一種內儲一程式之電腦程式產品,當一偵錯韌體/軟體以產生追蹤資料之系統載入該程式並執行後,可完成申請專利範圍第1至5及9至10項中任一項之方法。
TW103135943A 2014-10-17 2014-10-17 Debugging firmware / software to produce tracking systems and methods, recording media and computer program products TWI566090B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW103135943A TWI566090B (zh) 2014-10-17 2014-10-17 Debugging firmware / software to produce tracking systems and methods, recording media and computer program products
US14/885,585 US9645911B2 (en) 2014-10-17 2015-10-16 System and method for debugging firmware/software by generating trace data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW103135943A TWI566090B (zh) 2014-10-17 2014-10-17 Debugging firmware / software to produce tracking systems and methods, recording media and computer program products

Publications (2)

Publication Number Publication Date
TW201616356A true TW201616356A (zh) 2016-05-01
TWI566090B TWI566090B (zh) 2017-01-11

Family

ID=55749182

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103135943A TWI566090B (zh) 2014-10-17 2014-10-17 Debugging firmware / software to produce tracking systems and methods, recording media and computer program products

Country Status (2)

Country Link
US (1) US9645911B2 (zh)
TW (1) TWI566090B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112820341A (zh) * 2021-03-03 2021-05-18 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查系统
TWI764581B (zh) * 2021-02-22 2022-05-11 群聯電子股份有限公司 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703667B2 (en) * 2015-02-22 2017-07-11 International Business Machines Corporation Hardware-based edge profiling
US9823996B2 (en) * 2015-03-12 2017-11-21 Landis+Gyr Innovations, Inc. Debugging code for controlling intelligent devices using log data from executed object code
US9798649B1 (en) 2016-05-04 2017-10-24 Landis+Gyr Innovations, Inc. Debugging code controlling resource-constrained intelligent devices contemporaneously with executing object code
US10628167B2 (en) 2018-02-21 2020-04-21 International Business Machines Corporation Runtime detection of code modification
CN111443935B (zh) * 2020-04-15 2024-09-13 中国电子信息产业集团有限公司第六研究所 一种工业边缘网关的算法任务处理方法、装置及存储介质
CN114168489B (zh) * 2022-02-08 2022-12-30 统信软件技术有限公司 一种函数信息获取方法、计算设备及存储介质
US20240303233A1 (en) * 2023-03-08 2024-09-12 Sap Se Generating process insights for software system
CN116541270B (zh) * 2023-03-27 2024-01-02 深圳国家金融科技测评中心有限公司 一种操作系统的适配验证测试方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085000A (ja) * 2001-09-10 2003-03-20 Mitsubishi Electric Corp トレース情報生成装置およびその方法
US20030074650A1 (en) * 2001-10-17 2003-04-17 Tankut Akgul Debugger operating system for embedded systems
JP4533682B2 (ja) * 2004-06-29 2010-09-01 株式会社東芝 トレース解析装置およびトレース解析方法
US8010843B2 (en) * 2005-12-14 2011-08-30 American Megatrends, Inc. System and method for debugging a target computer using SMBus
US8533678B2 (en) * 2007-07-13 2013-09-10 Digi International Inc. Embedded device program debug control
US8261047B2 (en) * 2008-03-17 2012-09-04 Freescale Semiconductor, Inc. Qualification of conditional debug instructions based on address
US7996686B2 (en) 2008-07-07 2011-08-09 International Business Machines Corporation Branch trace methodology
CN101482846A (zh) * 2008-12-25 2009-07-15 上海交通大学 基于可执行代码逆向分析的漏洞挖掘方法
US8561033B2 (en) 2010-07-30 2013-10-15 International Business Machines Corporation Selective branch-triggered trace generation apparatus and method
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI764581B (zh) * 2021-02-22 2022-05-11 群聯電子股份有限公司 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統
US11960381B2 (en) 2021-02-22 2024-04-16 Phison Electronics Corp. Memory check method, memory check device, and memory check system
CN112820341A (zh) * 2021-03-03 2021-05-18 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查系统
CN112820341B (zh) * 2021-03-03 2024-05-07 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查系统

Also Published As

Publication number Publication date
US20160110281A1 (en) 2016-04-21
TWI566090B (zh) 2017-01-11
US9645911B2 (en) 2017-05-09

Similar Documents

Publication Publication Date Title
TWI566090B (zh) Debugging firmware / software to produce tracking systems and methods, recording media and computer program products
US7627821B2 (en) Recording/playback tools for UI-based applications
US8516444B2 (en) Debugging a high performance computing program
US9507688B2 (en) Execution history tracing method
US8645912B2 (en) System and method for use in replaying software application events
CN103049371A (zh) Android应用程序测试方法和测试装置
US20130263090A1 (en) System and method for automated testing
CN105074671A (zh) 用于在内核模块和设备驱动程序中检测并发编程错误的方法和系统
US9355003B2 (en) Capturing trace information using annotated trace output
JP6363152B2 (ja) データフロー分析のための装置、方法、コンピュータプログラム及び記憶媒体
CA3036812A1 (en) Test case generator built into data-integration workflow editor
CN113157508B (zh) 嵌入式系统的测试方法、系统、装置、设备及存储介质
US9792402B1 (en) Method and system for debugging a system on chip under test
CN104346274A (zh) 程序调试器及一种程序的调试方法
EP2706459A1 (en) Apparatus and method for validating a compiler for a reconfigurable processor
JP2015069437A (ja) トレース方法、処理プログラム、および情報処理装置
US8533683B2 (en) Stack walking enhancements using sensorpoints
Dong et al. Flaky test detection in Android via event order exploration
CA2811617C (en) Commit sensitive tests
US20160124838A1 (en) Method and apparatus for automatic cross-system program debugging
RU2678717C9 (ru) Комплекс автоматизации и визуализации тестирования встроенного программного обеспечения электронных устройств
US20140258785A1 (en) Identifying a storage location for a storage address requested during debugging
US9405664B2 (en) Automating software testing
Ma et al. An automated testing platform for mobile applications
US10417116B2 (en) System, method, and apparatus for crowd-sourced gathering of application execution events for automatic application testing and replay