一種軟件在線調試方法和系統的制作方法
【技術領域】
[0001]本發明涉及程序調試領域,尤其涉及一種軟件在線調試方法和系統。
【背景技術】
[0002]目前,在軟件開發以及軟件開發后的使用過程中,不可避免地會出現各種軟件問題。現有的用于定位軟件問題的方法包括:運行日志、調試命令、單步追蹤。
[0003]上述方法中,運行日志和調試命令需要將產生日志和調試信息的調試指令通過硬編碼的方式預先寫入軟件程序的相應位置。通過硬編碼寫入的調試指令不易更改和刪除,也因為通過硬編碼寫入的調試不易刪除,占用了內存,使得在任意軟件位置對軟件錯誤進行定位變得不可行。此外,當技術人員通過硬編碼的方式將調試指令寫入軟件程序的相應位置后,還需要對寫入調試指令的軟件程序重新進行調度、編譯、連接和運行,在軟件程序重新運行后,原先軟件錯誤的運行環境可能發生丟失/改變,使軟件錯誤不易復現。
[0004]上述方法中,單步追蹤為每執行完一條語句以后,就會停下來,顯示運行情況,這種方法要求技術人員一直在現場以便對每條語句的運行結果進行分析,及時發現錯誤,并且這種方法更適合單任務的軟件程序的調試。而在網絡設備的實時軟件程序中往往同時有幾十個任務在運行、并且任務之間相互關聯,單步追蹤已不適應。
【發明內容】
[0005]本發明提供了一種軟件在線調試方法和系統,以解決如何實現在調試過程中任意更改調試指令的問題。
[0006]為解決上述技術問題,本發明提供了一種軟件在線調試方法,所述方法包括:
[0007]確定軟件中的被追蹤點;
[0008]當執行到所述被追蹤點時,保存所述被追蹤點處的軟件當前運行環境;
[0009]調用已存儲的在線調試指令,執行調試任務,輸出在線調試信息;
[0010]恢復所述軟件當前運行環境,從所述被追蹤點處繼續執行所述軟件后續程序。
[0011]可選地,所述確定軟件中的被追蹤點具體包括:
[0012]通過命令行接收用戶輸入的設置指令,所述設置指令包括所述軟件中被追蹤點的地址;
[0013]將所述被追蹤點地址處的二進制機器指令反匯編為匯編程序;
[0014]根據所述匯編程序確定所述被追蹤點的位置。
[0015]可選地,所述當執行到所述被追蹤點時,保存所述被追蹤點處的軟件當前運行環境具體包括:
[0016]當執行到所述被追蹤點時,根據在被追蹤點生成的跳轉指令,跳轉至已存儲在所述軟件中的保護/恢復環境指令;
[0017]執行所述保護/恢復環境指令中的保護環境指令,保存所述被追蹤點處的軟件當前運行環境。
[0018]可選地,所述調用已存儲的在線調試指令,執行調試任務,輸出在線調試信息具體包括:
[0019]執行所述保護/恢復環境指令;
[0020]當執行到所述保護/恢復環境指令中的跳轉點時,通過所述跳轉點,跳轉至所述在線調試指令;
[0021]執行所述在線調試指令,輸出在線調試信息。
[0022]可選地,所述恢復所述軟件當前運行環境,從所述被追蹤點處繼續執行所述軟件后續程序具體包括:
[0023]當輸出在線調試信息后,從所述在線調試指令跳轉回所述跳轉點;
[0024]執行所述保護/恢復環境指令中的恢復環境指令,并跳轉回所述被追蹤點,從所述被追蹤點處繼續執行所述軟件后續程序。
[0025]可選地,所述方法還包括:
[0026]在執行調試任務的過程中,通過命令行,接收用戶輸入的被追蹤點狀態查看指令;
[0027]根據所述查看指令,向所述用戶反饋所述軟件中被追蹤點的狀態信息,所述被追蹤點的狀態信息包括以下一種或多種:
[0028]被追蹤點的執行時間、當前CPU各寄存器的狀態、當前任務堆棧信息。
[0029]可選地,所述確定軟件中的被追蹤點之后還包括:
[0030]通過命令行,接收用戶輸入的被追蹤點刪除指令,所述被追蹤點刪除指令包括待刪除的所述被追蹤點的位置;
[0031]將待刪除的所述被追蹤點的位置還原為設置所述被追蹤點之前的二進制機器指令;
[0032]當執行到原所述被追蹤點的位置時,執行所述二進制機器指令。
[0033]為解決上述技術問題,本發明還提供了一種軟件在線調試系統,所述系統包括:
[0034]被追蹤點確定模塊,用于確定軟件中的被追蹤點;
[0035]程序執行模塊,用于在執行到所述被追蹤點時,保存所述被追蹤點處的軟件當前運行環境;以及在調試結束后,恢復所述軟件當前運行環境,從所述被追蹤點處繼續執行所述軟件后續程序;
[0036]調試模塊,用于在保存軟件當前運行環境后,調用已存儲的在線調試指令,執行調試任務,輸出在線調試信息。
[0037]可選地,所述被追蹤點確定模塊,用于確定軟件中的被追蹤點,具體包括:
[0038]通過命令行接收用戶輸入的設置指令,所述設置指令包括所述軟件中被追蹤點的地址;
[0039]將所述被追蹤點地址的二進制機器指令反匯編為匯編程序;
[0040]根據所述匯編程序確定所述被追蹤點的位置。
[0041]可選地,所述程序執行模塊,用于在執行到所述被追蹤點時,保存所述被追蹤點處的軟件當前運行環境,具體包括:
[0042]當執行到所述被追蹤點時,根據在被追蹤點生成的跳轉指令,跳轉至已存儲在所述軟件中的保護/恢復環境指令;
[0043]執行所述保護/恢復環境指令中的保護環境指令,保存所述被追蹤點處的軟件當前運行環境。
[0044]可選地,所述調試模塊,用于調用已存儲的在線調試指令,執行調試任務,輸出在線調試信息,具體包括:
[0045]執行所述保護/恢復環境指令;
[0046]當執行到所述保護/恢復環境指令中的跳轉點時,通過所述跳轉點,跳轉至所述在線調試指令;
[0047]執行所述在線調試指令,輸出在線調試信息。
[0048]可選地,所述程序執行模塊,用于恢復所述軟件當前運行環境,從所述被追蹤點處繼續執行所述軟件后續程序,具體包括:
[0049]當輸出在線調試信息后,從所述在線調試指令跳轉回所述跳轉點;
[0050]執行所述保護/恢復環境指令中的恢復環境指令,并跳轉回所述被追蹤點,從所述被追蹤點處繼續執行所述軟件后續程序。
[0051 ] 可選地,所述系統還包括:
[0052]狀態查看模塊,用于在調試任務執行過程中,通過命令行,接收用戶輸入的被追蹤點狀態查看指令;
[0053]根據所述查看指令,向所述用戶反饋所述軟件中被追蹤點的狀態信息,所述被追蹤點的狀態信息包括以下一種或多種:
[0054]被追蹤點的執行時間、當前CPU各寄存器的狀態、當前任務堆棧信息。
[0055]可選地,所述系統還包括:
[0056]被追蹤點刪除模塊,用于通過命令行,接收用戶輸入的被追蹤點刪除指令,所述被追蹤點刪除指令包括待刪除的所述被追蹤點的位置;
[0057]將待刪除的所述被追蹤點的位置還原為設置所述被追蹤點之前的二進制機器指令;
[0058]當執行到原所述被追蹤點的位置時,執行所述二進制機器指令。
[0059]通過應用本發明提供的一種軟件在線調試方法和系統,在軟件程序運行時,動態設置被追蹤點,通過設置的被追蹤點,保存被追蹤點處的軟件當前運行環境;調用已