本發(fā)明涉及通信領域,尤其涉及反向調試方法、反向調試系統(tǒng)、主機及單板。
背景技術:反向調試是指在程序調試過程中,可以對程序執(zhí)行反向的單步(源碼/匯編級)、continue等調試命令,就好像程序能夠倒過來運行的一種調試方法。反向調試作為普通正向調試的補充,可以提高用戶的調試效率。比如某段代碼進入了異常,如果沒有反向調試,可能需要重新啟動程序,然后單步調試去找到原因,如果有了反向調試功能,進入異常后不需要重新啟動程序,反向就能夠找到出問題的代碼位置。目前已經有一些軟件支持反向調試,但目前還沒有一個能夠應用于數字信號處理(DigitalSignalProcessing,DSP)領域單板上反向調試的方法。
技術實現要素:本發(fā)明實施例提供反向調試方法、反向調試系統(tǒng)、主機及單板,可在程序運行在單板上時對單板上的程序進行反向調試,給調試人員帶來極大地便利。本發(fā)明第一方面提供一種反向調試方法,其可包括:當主機確定需調試的單板上的代碼段后,在所述代碼段運行前,記錄初始寄存器的值并啟動所述單板上的程序和/或數據跟蹤功能;所述主機指示所述單板正向運行所述代碼段,并獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡;所述主機指示所述單板停止運行所述代碼段,根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令,并指示所述單板運行所述反向調試指令以對所述代碼段進行反向調試。結合第一方面,在第一種可行的實施方式中,所述啟動所述單板上的程序和/或數據跟蹤功能包括:啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,啟動所述單板上用于數據跟蹤的數據搜集硬件模塊。結合第一方面,在第二種可行的實施方式中,所述啟動所述單板上的程序和/或數據跟蹤功能包括:啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,將所述代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。結合第一方面的第一種可行的實施方式,在第三種可行的實施方式中,所述獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡,包括:獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,獲取所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。結合第一方面的第二種可行的實施方式,在第四種可行的實施方式中,所述獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡,包括:獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,獲取所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。本發(fā)明第二方面提供一種主機,其可包括調試控制模塊和指令翻譯模塊,還包括程序跟蹤模塊和數據跟蹤模塊中至少一種:調試控制模塊,用于接收根據用戶輸入的指令確定需調試的單板上的代碼段,并記錄初始寄存器的值,啟動所述程序跟蹤模塊、數據跟蹤模塊和指令翻譯模塊,以及指示所述單板正向運行所述代碼段,以及用于指示所述單板停止運行所述代碼段;程序跟蹤模塊,用于啟動所述單板上的程序跟蹤功能,并獲取所述單板搜集的所述運行的代碼段的程序軌跡;數據跟蹤模塊,用于啟動所述單板上的數據跟蹤功能,并獲取所述單板搜集的所述運行的代碼段的數據軌跡;指令翻譯模塊,用于根據所述調試控制模塊記錄的初始寄存器的值和所述調試控制模塊獲取的用戶輸入的調試指示信息和所述程序跟蹤模塊獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或所述數據跟蹤模塊獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令;所述調試控制模塊還用于指示所述單板運行所述指令翻譯模塊生成的反向調試指令,以對所述代碼段進行反向調試。結合第二方面,在第一種可行的實施方式中,所述程序跟蹤模塊具體用于啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,所述數據跟蹤模塊具體用于啟動所述單板上用于數據跟蹤的數據搜集硬件模塊。結合第二方面的第一種可行的實施方式,在第二種可行的實施方式中,所述程序跟蹤模塊具體用于啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,所述數據跟蹤模塊具體用于將所述單板上的代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。結合第二方面的第一種可行的實施方式,在第三種可行的實施方式中,所述程序跟蹤模塊具體用于獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,所述數據跟蹤模塊具體用于獲取所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。結合第二方面的第二種可行的實施方式,在第四種可行的實施方式中,所述程序跟蹤模塊具體用于獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,所述數據跟蹤模塊具體用于獲取所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。本發(fā)明第三方面提供一種反向調試方法,其可包括:當需調試的代碼運行前,當所述單板上的程序和/或數據跟蹤功能啟動之后,在所述代碼段正向運行時,搜集所述運行的代碼段的程序軌跡和/或數據軌跡;將所述搜集的所述運行的代碼段的程序軌跡和/或數據軌跡發(fā)送給所述主機,以便所述主機根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令;運行所述主機發(fā)送的反向調試指令以對所述代碼段進行反向調試。結合第三方面,在第一種可行的實施方式中,在所述代碼段正向運行之前,還包括:根據所述主機的指令啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,根據所述主機的指令啟動所述單板上用于數據跟蹤的數據搜集硬件模塊。結合第三方面,在第二種可行的實施方式中,在所述代碼段正向運行之前,還包括:根據所述主機的指令啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,根據所述主機的指令將所述代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。結合第三方面的第一種可行的實施方式,在第三種可行的實施方式中,所述搜集所述運行的代碼段的程序軌跡和/或數據軌跡包括:所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。結合第三方面的第二種可行的實施方式,在第四種可行的實施方式中,所述搜集所述運行的代碼段的程序軌跡和/或數據軌跡包括:所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,運行所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。本發(fā)明第四方面提供一種單板,其可包括:程序搜集模塊,用于搜集運行的代碼段的程序軌跡;數據搜集模塊,用于搜集運行的代碼段的數據軌跡;調試模塊,用于運行所述主機發(fā)送的反向調試指令以對所述代碼段進行反向調試,所述反向調試指令為所述主機根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成的代碼停止位置到目標位置的反向調試指令。結合第四方面,在第一種可行的實施方式中,所述程序搜集模塊為用于程序跟蹤的程序搜集硬件模塊;所述數據搜集模塊為用于數據跟蹤的數據搜集硬件模塊或用于運行break指令的軟件模塊,所述break指令用于替換所述代碼段的load/store指令,并用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。結合第四方面的第一種可行的實施方式,在第二種可行的實施方式中,所述單板還包括:程序跟蹤啟動模塊,用于根據所述主機的指令啟動所述程序搜集硬件模塊;數據跟蹤啟動模塊,用于根據所述主機的指令啟動所述數據搜集硬件模塊或用于運行break指令的軟件模塊。本發(fā)明第五方面提供一種反向調試系統(tǒng),其可包括:主機和單板,其中所述主機為本發(fā)明各實施例中任一實施例所述的主機;所述單板為本發(fā)明各實施例中任一實施例所述的單板。由上可見,在本發(fā)明的一些可行的實施方式中,當主機確定需調試的單板上的代碼段后,在所述代碼段運行前,記錄初始寄存器的值并啟動所述單板上的程序和/或數據跟蹤功能;所述主機指示所述單板正向運行所述代碼段,并獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡;所述主機指示所述單板停止運行所述代碼段,根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令,并指示所述單板運行所述反向調試指令以對所述代碼段進行反向調試。由此,本發(fā)明實施例實現了在程序運行在單板上時通過主機指示單板對單板上的程序進行反向調試,給調試人員帶來極大地便利。附圖說明圖1為本發(fā)明的反向調試方法的一實施例的流程示意圖;圖2為本發(fā)明的反向調試方法的另一實施例的流程示意圖;圖3為本發(fā)明的主機的一實施例的結構組成示意圖;圖4為本發(fā)明的主機的另一實施例的結構組成示意圖;圖5為本發(fā)明的單板的一實施例的結構組成示意圖;圖6為本發(fā)明的單板的一實施例的結構組成示意圖;圖7為本發(fā)明包括主機和單板兩側的流程的反向調試方法的一實施例的流程示意圖;圖8為本發(fā)明包括主機和單板兩側的流程的反向調試方法的另一實施例的流程示意圖。具體實施方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明作進一步地詳細描述。圖1為本發(fā)明的反向調試方法的一實施例的流程示意圖。如圖1所示,其可包括:步驟S110,當主機確定需調試的單板上的代碼段后,在所述代碼段運行前,記錄初始寄存器的值并啟動所述單板上的程序和/或數據跟蹤功能。具體實現中,在步驟S110,主機可通過用戶輸入的指令確定需調試的單板上的代碼段。在一些可行的實施方式中,在步驟S110,可在接收到用戶輸入的反向調試啟動命令(比如,initreversedebug命令)時,啟動所述單板上的程序和/或數據跟蹤功能。在一些可行的實施方式中,單板上有專用于程序跟蹤的程序搜集硬件模塊,因此,在步驟S110,所述啟動所述單板上的程序功能可包括:啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;具體實現中,單板上有專用于數據跟蹤的數據搜集硬件模塊,因此,在步驟S110,所述啟動所述單板上的數據跟蹤功能可包括:啟動所述單板上用于數據跟蹤的數據搜集硬件模塊。在一些可行的實施方式中,單板上沒有專用于數據跟蹤的數據搜集硬件模塊,此時,在步驟S110所述啟動所述單板上的數據跟蹤功能可包括:將所述代碼段的1oad/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。這樣,當后續(xù)運行break時,便可通過軟件的方式進行數據跟蹤并完成被替換的load/store指令的功能。步驟S111,所述主機指示所述單板正向運行所述代碼段,并獲取所述單板搜集的所述運行的代碼段的程序軌跡(PCTRACE)和/或數據軌跡(DATATRACE)。基于步驟S110的處理方式的不同,在步驟S111也可有相應的獲取數據軌跡和/或程序軌跡的方式。具體的,當單板上有專用于程序跟蹤的程序搜集硬件模塊時,在步驟S111,所述獲取所述單板搜集的所述運行的代碼段的程序軌跡可包括:獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;當單板上有專用于數據跟蹤的數據搜集硬件模塊時,在步驟S111,所述獲取所述單板搜集的所述運行的代碼段的數據軌跡可包括:獲取所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。當單板上沒有專用于數據跟蹤的數據搜集硬件模塊時,在步驟S111,所述獲取所述單板搜集的所述運行的代碼段的數據軌跡可包括:獲取所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。步驟S112,所述主機指示所述單板停止運行所述代碼段,根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令,并指示所述單板運行所述反向調試指令以對所述代碼段進行反向調試。具體實現中,在步驟S112,所述反向調試指示信息包括源碼單步反向調試、匯編碼單步反向調試,continue等調試命名中任一種。具體實現中,在步驟S112,所述反向調試指令根據程序軌跡和數據軌跡了解被修改的程序內容,如果修改了內存,則生成將停止位置的內存值恢復到目標位置的內存值的反向調試指令,如果修改了寄存器則將停止位置的寄存器值恢復到目標位置的寄存器值的反向調試指令。具體實現中,根據初始寄存器的值以及程序軌跡便可知道停止位置的寄存器的值以及目標位置的寄存器的值。由上可見,在本發(fā)明的一些可行的實施方式中,當主機確定需調試的單板上的代碼段后,在所述代碼段運行前,記錄初始寄存器的值并啟動所述單板上的程序和/或數據跟蹤功能;所述主機指示所述單板正向運行所述代碼段,并獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡;所述主機指示所述單板停止運行所述代碼段,根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令,并指示所述單板運行所述反向調試指令以對所述代碼段進行反向調試。由此,本發(fā)明實施例實現了在程序運行在單板上時通過主機指示單板對單板上的程序進行反向調試,給調試人員帶來極大地便利。圖2為本發(fā)明的反向調試方法的另一實施例的流程示意圖。如圖2所示,其可包括:步驟S210,當所述單板上的程序和/或數據跟蹤功能啟動之后,在所述代碼段正向運行時,搜集所述運行的代碼段的程序軌跡和/或數據軌跡;在一些可行的實施方式中,單板上有專用于程序跟蹤的程序搜集硬件模塊和專用于程序跟蹤的程序搜集硬件模塊,則在步驟S210之前,單板可根據所述主機的指令啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,根據所述主機的指令啟動所述單板上用于數據跟蹤的數據搜集硬件模塊。這樣,在步驟S210,可通過所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,通過所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。在一些可行的實施方式中,單板上有專用于程序跟蹤的程序搜集硬件模塊和但沒有專用于程序跟蹤的程序搜集硬件模塊,則在步驟S210之前,單板可根據所述主機的指令啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,根據所述主機的指令將所述代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。這樣,在步驟S210,可通過所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,通過所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。步驟S211,將所述搜集的所述運行的代碼段的程序軌跡和/或數據軌跡發(fā)送給所述主機,以便所述主機根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令;步驟S212,運行所述主機發(fā)送的反向調試指令以對所述代碼段進行反向調試。具體實現中,在步驟S211,所述反向調試指示信息包括源碼單步反向調試、匯編碼單步反向調試,continue等調試命名中任一種。具體實現中,在步驟S211,所述反向調試指令根據程序軌跡和數據軌跡了解被修改的程序內容,如果修改了內存,則生成將停止位置的內存值恢復到目標位置的內存值的反向調試指令,如果修改了寄存器則將停止位置的寄存器值恢復到目標位置的寄存器值的反向調試指令。具體實現中,根據初始寄存器的值以及程序軌跡便可知道停止位置的寄存器的值以及目標位置的寄存器的值。由上可見,在本發(fā)明的一些可行的實施方式中,當需調試的代碼運行前,采集初始寄存器的值并發(fā)送給所述主機;當所述單板上的程序和/或數據跟蹤功能啟動之后,在所述代碼段正向運行時,搜集所述運行的代碼段的程序軌跡和/或數據軌跡;將所述搜集的所述運行的代碼段的程序軌跡和/或數據軌跡發(fā)送給所述主機,以便所述主機根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令;運行所述主機發(fā)送的反向調試指令以對所述代碼段進行反向調試。由此,本發(fā)明實施例實現了在程序運行在單板上時通過主機指示單板對單板上的程序進行反向調試,給調試人員帶來極大地便利。相應的,本發(fā)明實施例還提供了可用于實施本發(fā)明方法實施例的主機及單板的裝置實施例,下面結合附圖對本發(fā)明實施例的主機及單板的結構組成進行舉例說明。圖3為本發(fā)明的主機(用于調試人員遠程操作單板的設備)的一實施例的結構組成示意圖。如圖3所示,其可包括:調試控制模塊31和指令翻譯模塊35、還可包括程序跟蹤模塊32和數據跟蹤模塊33中至少一種,其中:調試控制模塊31,用于接收根據用戶輸入的指令確定需調試的單板上的代碼段,并記錄初始寄存器的值,啟動所述程序跟蹤模塊、數據跟蹤模塊和指令翻譯模塊,以及指示所述單板正向運行所述代碼段,以及用于指示所述單板停止運行所述代碼段;程序跟蹤模塊32,用于啟動所述單板上的程序跟蹤功能,并獲取所述單板搜集的所述運行的代碼段的程序軌跡;數據跟蹤模塊33,用于啟動所述單板上的數據跟蹤功能,并獲取所述單板搜集的所述運行的代碼段的數據軌跡;指令翻譯模塊34,用于根據所述調試控制模塊31記錄的初始寄存器的值和所述調試控制模塊31獲取的用戶輸入的調試指示信息和所述程序跟蹤模塊32獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或所述數據跟蹤模塊33獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令;所述調試控制模塊31還用于指示所述單板運行所述指令翻譯模塊34生成的反向調試指令,以對所述代碼段進行反向調試。具體實現中,單板上有專用于程序跟蹤的程序搜集硬件模塊,此時,所述程序跟蹤模塊32具體可用于啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;并獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡。在一些可行的實施方式中,單板上有專用于程序跟蹤的數據搜集硬件模塊,此時,所述數據跟蹤模塊具體可用于啟動所述單板上用于數據跟蹤的數據搜集硬件模塊,并獲取所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。在一些可行的實施方式中,單板上沒有專用于程序跟蹤的數據搜集硬件模塊,所述數據跟蹤模塊具體用于將所述單板上的代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能,并獲取所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。具體實現中,所述反向調試指示信息包括源碼單步反向調試、匯編碼單步反向調試,continue等調試命名中任一種。具體實現中,指令翻譯模塊34根據程序軌跡和數據軌跡了解被修改的程序內容,如果修改了內存,則生成將停止位置的內存值恢復到目標位置的內存值的反向調試指令,如果修改了寄存器則將停止位置的寄存器值恢復到目標位置的寄存器值的反向調試指令。具體實現中,根據初始寄存器的值以及程序軌跡便可知道停止位置的寄存器的值以及目標位置的寄存器的值。由上可見,在本發(fā)明的一些可行的實施方式中,當主機確定需調試的單板上的代碼段后,在所述代碼段運行前,記錄初始寄存器的值并啟動所述單板上的程序和/或數據跟蹤功能;所述主機指示所述單板正向運行所述代碼段,并獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡;所述主機指示所述單板停止運行所述代碼段,根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令,并指示所述單板運行所述反向調試指令以對所述代碼段進行反向調試。由此,本發(fā)明實施例實現了在程序運行在單板上時通過主機指示單板對單板上的程序進行反向調試,給調試人員帶來極大地便利。圖4為本發(fā)明的主機(用于調試人員遠程操作單板的設備)的另一實施例的結構組成示意圖。如圖4所示,其可包括:存儲器41和處理器42,其中處理器42調用存儲器41中存儲的程序,以執(zhí)行如下操作:當確定需調試的單板上的代碼段后,在所述代碼段運行前,記錄初始寄存器的值并啟動所述單板上的程序和/或數據跟蹤功能;指示所述單板正向運行所述代碼段,并獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡;指示所述單板停止運行所述代碼段,根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令,并指示所述單板運行所述反向調試指令以對所述代碼段進行反向調試。在一些可行的實施方式中,所述處理器42執(zhí)行啟動所述單板上的程序和/或數據跟蹤功能時,具體執(zhí)行如下操作:啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,啟動所述單板上用于數據跟蹤的數據搜集硬件模塊。在一些可行的實施方式中,所述處理器42執(zhí)行啟動所述單板上的程序和/或數據跟蹤功能時,具體執(zhí)行如下操作:啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,將所述代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。在一些可行的實施方式中,所述處理器42執(zhí)行獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡時,具體執(zhí)行如下操作:獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,獲取所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。在一些可行的實施方式中,所述處理器42執(zhí)行獲取所述單板搜集的所述運行的代碼段的程序軌跡和/或數據軌跡時,具體執(zhí)行如下操作:獲取所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,獲取所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。圖5為本發(fā)明的單板(用于運行代碼段)的一實施例的結構組成示意圖。如圖5所示,其可包括:程序搜集模塊52、數據搜集模塊53和調試模塊54,其中:程序搜集模塊52,用于搜集運行的代碼段的程序軌跡;數據搜集模塊53,用于搜集運行的代碼段的數據軌跡;調試模塊54,用于運行所述主機發(fā)送的反向調試指令以對所述代碼段進行反向調試,所述反向調試指令為所述主機根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成的代碼停止位置到目標位置的反向調試指令。在一些可行的實施方式中,所述程序搜集模塊52可為用于程序跟蹤的程序搜集硬件模塊;在一些可行的實施方式中,所述數據搜集模塊53可為用于數據跟蹤的數據搜集硬件模塊或用于運行break指令的軟件模塊,所述break指令用于替換所述代碼段的load/store指令,并用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。在一些可行的實施方式中,本發(fā)明實施例的單板還可包括程序跟蹤啟動模塊(未圖示),用于根據主機的指令啟動所述程序搜集硬件模塊;在一些可行的實施方式中,本發(fā)明實施例的單板還可包括數據跟蹤啟動模塊(未圖示),用于根據所述主機的指令啟動所述數據搜集硬件模塊或用于運行break指令的軟件模塊。具體實現中,所述反向調試指示信息包括源碼單步反向調試、匯編碼單步反向調試,continue等調試命名中任一種。具體實現中,主機可根據程序軌跡和數據軌跡了解被修改的程序內容,如果修改了內存,則生成將停止位置的內存值恢復到目標位置的內存值的反向調試指令,如果修改了寄存器則將停止位置的寄存器值恢復到目標位置的寄存器值的反向調試指令。具體實現中,根據初始寄存器的值以及程序軌跡便可知道停止位置的寄存器的值以及目標位置的寄存器的值。由上可見,在本發(fā)明的一些可行的實施方式中,當需調試的代碼運行前,采集初始寄存器的值并發(fā)送給所述主機;當所述單板上的程序和/或數據跟蹤功能啟動之后,在所述代碼段正向運行時,搜集所述運行的代碼段的程序軌跡和/或數據軌跡;將所述搜集的所述運行的代碼段的程序軌跡和/或數據軌跡發(fā)送給所述主機,以便所述主機根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令;運行所述主機發(fā)送的反向調試指令以對所述代碼段進行反向調試。由此,本發(fā)明實施例實現了在程序運行在單板上時通過主機指示單板對單板上的程序進行反向調試,給調試人員帶來極大地便利。圖6為本發(fā)明的單板(用于運行代碼段)的一實施例的結構組成示意圖。如圖6所示,其可包括:存儲器61和處理器62,所述處理器62調用存儲器61中存儲的程序,并執(zhí)行如下操作:當需調試的代碼運行前,當所述單板上的程序和/或數據跟蹤功能啟動之后,在所述代碼段正向運行時,搜集所述運行的代碼段的程序軌跡和/或數據軌跡;將所述搜集的所述運行的代碼段的程序軌跡和/或數據軌跡發(fā)送給所述主機,以便所述主機根據用戶輸入的反向調試指示信息和所述初始寄存器值和獲取的所述單板搜集的所述運行的代碼段的程序軌跡和/或獲取的所述單板搜集的所述運行的代碼段的數據軌跡生成代碼停止位置到目標位置的反向調試指令;運行所述主機發(fā)送的反向調試指令以對所述代碼段進行反向調試。在一些可行的實施方式中,在所述代碼段正向運行之前,所述處理器62還執(zhí)行如下操作:根據所述主機的指令啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,根據所述主機的指令啟動所述單板上用于數據跟蹤的數據搜集硬件模塊。在一些可行的實施方式中,在所述代碼段正向運行之前,所述處理器62還執(zhí)行如下操作:根據所述主機的指令啟動所述單板上用于程序跟蹤的程序搜集硬件模塊;和/或,根據所述主機的指令將所述代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。在一些可行的實施方式中,所述處理器62執(zhí)行搜集所述運行的代碼段的程序軌跡和/或數據軌跡時,具體執(zhí)行如下操作:所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,所述單板的數據搜集硬件模塊搜集的所述運行的代碼段的數據軌跡。在一些可行的實施方式中,所述處理器62執(zhí)行搜集所述運行的代碼段的程序軌跡和/或數據軌跡時,具體執(zhí)行如下操作:所述單板的程序搜集硬件模塊搜集的所述運行的代碼段的程序軌跡;和/或,運行所述單板的代碼段的break指令搜集的所述運行的代碼段的數據軌跡。具體實現中,本發(fā)明實施例的主機和單板共同構成反向調試系統(tǒng)。下面結合圖7和圖8對本發(fā)明的單板反向調試方法進一步進行詳細說明。圖7為本發(fā)明包括主機和單板兩側的流程的反向調試方法的一實施例的流程示意圖。如圖7所示,其可包括:步驟S701,主機的調試控制模塊接收用戶輸入指令確定需調試的單板上的代碼段,并接收用戶輸入的反向調試啟動命名(比如,initreversedebug命令)確定啟動反向調試。步驟S702,主機的調試控制模塊啟動所述主機的程序跟蹤模塊。步驟S703,主機的調試控制模塊啟動所述主機的數據跟蹤模塊。步驟S704,主機的調試控制模塊啟動所述主機的指令翻譯模塊。步驟S705,主機向單板發(fā)送獲取初始寄存器的值的請求。步驟S706,主機從單板獲取初始寄存器的值。步驟S707,主機的程序跟蹤模塊啟動單板上的程序搜集硬件模塊。步驟S708,主機的數據跟蹤模塊啟動單板上的數據搜集硬件模塊。步驟S709,主機的調試控制模塊接收用戶輸入的正向運行所述需調試的代碼段的指令;步驟S710,主機的調試控制模塊指示所述單板正向運行所述需調試的代碼段。步驟S711,單板上的程序搜集硬件模塊搜集所述正向運行的需調試的代碼段的程序軌跡,并將搜集結果發(fā)送給主機的程序跟蹤模塊。步驟S712,單板上的數據搜集硬件模塊搜集所述正向運行的需調試的代碼段的數據軌跡,并將搜集結果發(fā)送給主機的數據跟蹤模塊。步驟S713,主機的調試控制模塊接收用戶輸入的停止命令。步驟S714,主機的調試控制模塊指示所述單板停止運行所述需調試的代碼段。步驟S715,主機的調試控制模塊接收用戶輸入的反向調試指示信息。步驟S716,所述主機的調試控制模塊根據所述反向調試指示信息生成反向等價指令并發(fā)給所述主機的指令翻譯模塊。步驟S717,所述主機的調試控制模塊將獲取的初始寄存器的值發(fā)送給所述主機的指令翻譯模塊。步驟S718,所述主機的調試控制模塊將獲取的正向運行的需調試的代碼段的程序軌跡發(fā)送給所述主機的指令翻譯模塊。步驟S719,所述主機的調試控制模塊將獲取的正向運行的需調試的代碼段的數據軌跡發(fā)送給所述主機的指令翻譯模塊。步驟S720,所述指令翻譯模塊生成代碼停止位置到目標位置(需要返回的位置)的反向調試指令。步驟S721,所述主機的指令翻譯模塊將生成的反向調試指令發(fā)送給所述主機的調制控制模塊。步驟S722,所述主機的調制控制模塊將所述反向調試指令發(fā)送給單板。步驟S723,所述單板運行所述反向調試指令。步驟S724,所述單板將反向調試運行結果反饋給主機的調制控制模塊。步驟S725,所述主機的調制控制模塊將反向調試運行結果反饋給用戶。在本實施例中,單板通過硬件模塊搜集程序軌跡及數據軌跡。圖8為本發(fā)明包括主機和單板兩側的流程的反向調試方法的另一實施例的流程示意圖。如圖8所示,其可包括:步驟S801,主機的調試控制模塊接收用戶輸入指令確定需調試的單板上的代碼段,并接收用戶輸入的反向調試啟動命名(比如,initreversedebug命令)確定啟動反向調試。步驟S802,主機的調試控制模塊啟動所述主機的程序跟蹤模塊。步驟S803,主機的調試控制模塊啟動所述主機的數據跟蹤模塊。步驟S804,主機的調試控制模塊啟動所述主機的指令翻譯模塊。步驟S805,主機向單板發(fā)送獲取初始寄存器的值的請求。步驟S806,主機從單板獲取初始寄存器的值。步驟S807,主機的程序跟蹤模塊啟動單板上的程序搜集硬件模塊。步驟S808,主機的數據跟蹤模塊將所述單板上的代碼段的load/store指令替換為break指令,并指示所述break指令用于數據跟蹤和執(zhí)行被替換的load/store指令的功能。步驟S809,主機的調試控制模塊接收用戶輸入的正向執(zhí)行所述需調試的代碼段的指令;步驟S810,主機的調試控制模塊指示所述單板正向運行所述需調試的代碼段。步驟S811,單板上的程序搜集硬件模塊搜集所述正向運行的需調試的代碼段的程序軌跡,并將搜集結果發(fā)送給主機的程序跟蹤模塊。步驟S812,單板上運行break指令,以搜集所述正向運行的需調試的代碼段的數據軌跡,并將搜集結果發(fā)送給主機的數據跟蹤模塊。步驟S813,主機的調試控制模塊接收用戶輸入的停止命令。步驟S814,主機的調試控制模塊指示所述單板停止運行所述需調試的代碼段。步驟S815,主機的調試控制模塊接收用戶輸入的反向調試指示信息。步驟S816,所述主機的調試控制模塊根據所述反向調試指示信息生成反向等價指令并發(fā)給所述主機的指令翻譯模塊。步驟S817,所述主機的調試控制模塊將獲取的初始寄存器的值發(fā)送給所述主機的指令翻譯模塊。步驟S818,所述主機的調試控制模塊將獲取的正向運行的需調試的代碼段的程序軌跡發(fā)送給所述主機的指令翻譯模塊。步驟S819,所述主機的調試控制模塊將獲取的正向運行的需調試的代碼段的數據軌跡發(fā)送給所述主機的指令翻譯模塊。步驟S820,所述指令翻譯模塊生成代碼停止位置到目標位置(需要返回的位置)的反向調試指令。步驟S821,所述主機的指令翻譯模塊將生成的反向調試指令發(fā)送給所述主機的調制控制模塊。步驟S822,所述主機的調制控制模塊將所述反向調試指令發(fā)送給單板。步驟S823,所述單板運行所述反向調試指令。步驟S824,所述單板將反向調試運行結果反饋給主機的調制控制模塊。步驟S825,所述主機的調制控制模塊將反向調試運行結果反饋給用戶。在本實施例中,單板通過硬件模塊搜集程序軌跡及數據軌跡。以上所列舉的僅為本發(fā)明較佳實施例而已,當然不能以此來限定本發(fā)明之權利范圍,因此依本發(fā)明權利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。