境;調(diào)用已存儲的在線調(diào)試指令,執(zhí)行調(diào)試任務(wù),輸出在線調(diào)試信息;并恢復(fù)軟件當(dāng)前運(yùn)行環(huán)境,從被追蹤點(diǎn)處繼續(xù)執(zhí)行軟件后續(xù)程序。由于在本發(fā)明實(shí)施例中,通過設(shè)置的被追蹤點(diǎn)調(diào)用已存儲的在線調(diào)試指令,并在被追蹤點(diǎn)處進(jìn)行軟件當(dāng)前運(yùn)行環(huán)境的保存/恢復(fù),避免了將調(diào)試指令直接以硬編碼的形式寫入軟件程序,而是以程序調(diào)用的形式調(diào)用調(diào)試指令,方便了調(diào)試指令的修改與刪除,實(shí)現(xiàn)在調(diào)試過程中任意更改調(diào)試指令;同時(shí),也不需要重啟軟件程序;另外,上述技術(shù)方案在調(diào)用調(diào)試指令,執(zhí)行調(diào)試程序之前保存軟件當(dāng)前運(yùn)行環(huán)境,使得調(diào)試結(jié)束后返回被追蹤點(diǎn)時(shí),程序能夠繼續(xù)在原先的運(yùn)行環(huán)境下執(zhí)行,避免了對原軟件程序的影響。
[0135]本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計(jì)算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來實(shí)現(xiàn),相應(yīng)地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
[0136]需要說明的是,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種軟件在線調(diào)試方法,其特征在于,所述方法包括: 確定軟件中的被追蹤點(diǎn); 當(dāng)執(zhí)行到所述被追蹤點(diǎn)時(shí),保存所述被追蹤點(diǎn)處的軟件當(dāng)前運(yùn)行環(huán)境; 調(diào)用已存儲的在線調(diào)試指令,執(zhí)行調(diào)試任務(wù),輸出在線調(diào)試信息; 恢復(fù)所述軟件當(dāng)前運(yùn)行環(huán)境,從所述被追蹤點(diǎn)處繼續(xù)執(zhí)行所述軟件后續(xù)程序。
2.如權(quán)利要求1所述的方法,其特征在于,所述確定軟件中的被追蹤點(diǎn)具體包括: 通過命令行接收用戶輸入的設(shè)置指令,所述設(shè)置指令包括所述軟件中被追蹤點(diǎn)的地址; 將所述被追蹤點(diǎn)地址處的二進(jìn)制機(jī)器指令反匯編為匯編程序; 根據(jù)所述匯編程序確定所述被追蹤點(diǎn)的位置。
3.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)執(zhí)行到所述被追蹤點(diǎn)時(shí),保存所述被追蹤點(diǎn)處的軟件當(dāng)前運(yùn)行環(huán)境具體包括: 當(dāng)執(zhí)行到所述被追蹤點(diǎn)時(shí),根據(jù)在被追蹤點(diǎn)生成的跳轉(zhuǎn)指令,跳轉(zhuǎn)至已存儲在所述軟件中的保護(hù)/恢復(fù)環(huán)境指令; 執(zhí)行所述保護(hù)/恢復(fù)環(huán)境指令中的保護(hù)環(huán)境指令,保存所述被追蹤點(diǎn)處的軟件當(dāng)前運(yùn)行環(huán)境。
4.如權(quán)利要求3所述的方法,其特征在于,所述調(diào)用已存儲的在線調(diào)試指令,執(zhí)行調(diào)試任務(wù),輸出在線調(diào)試信息具體包括: 執(zhí)行所述保護(hù)/恢復(fù)環(huán)境指令; 當(dāng)執(zhí)行到所述保護(hù)/恢復(fù)環(huán)境指令中的跳轉(zhuǎn)點(diǎn)時(shí),通過所述跳轉(zhuǎn)點(diǎn),跳轉(zhuǎn)至所述在線調(diào)試指令; 執(zhí)行所述在線調(diào)試指令,輸出在線調(diào)試信息。
5.如權(quán)利要求4所述的方法,其特征在于,所述恢復(fù)所述軟件當(dāng)前運(yùn)行環(huán)境,從所述被追蹤點(diǎn)處繼續(xù)執(zhí)行所述軟件后續(xù)程序具體包括: 當(dāng)輸出在線調(diào)試信息后,從所述在線調(diào)試指令跳轉(zhuǎn)回所述跳轉(zhuǎn)點(diǎn); 執(zhí)行所述保護(hù)/恢復(fù)環(huán)境指令中的恢復(fù)環(huán)境指令,并跳轉(zhuǎn)回所述被追蹤點(diǎn),從所述被追蹤點(diǎn)處繼續(xù)執(zhí)行所述軟件后續(xù)程序。
6.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在執(zhí)行調(diào)試任務(wù)的過程中,通過命令行,接收用戶輸入的被追蹤點(diǎn)狀態(tài)查看指令; 根據(jù)所述查看指令,向所述用戶反饋所述軟件中被追蹤點(diǎn)的狀態(tài)信息,所述被追蹤點(diǎn)的狀態(tài)信息包括以下一種或多種: 被追蹤點(diǎn)的執(zhí)行時(shí)間、當(dāng)前CPU各寄存器的狀態(tài)、當(dāng)前任務(wù)堆棧信息。
7.如權(quán)利要求1所述的方法,其特征在于,所述確定軟件中的被追蹤點(diǎn)之后還包括: 通過命令行,接收用戶輸入的被追蹤點(diǎn)刪除指令,所述被追蹤點(diǎn)刪除指令包括待刪除的所述被追蹤點(diǎn)的位置; 將待刪除的所述被追蹤點(diǎn)的位置還原為設(shè)置所述被追蹤點(diǎn)之前的二進(jìn)制機(jī)器指令; 當(dāng)執(zhí)行到原所述被追蹤點(diǎn)的位置時(shí),執(zhí)行所述二進(jìn)制機(jī)器指令。
8.一種軟件在線調(diào)試系統(tǒng),其特征在于,所述系統(tǒng)包括: 被追蹤點(diǎn)確定模塊,用于確定軟件中的被追蹤點(diǎn); 程序執(zhí)行模塊,用于在執(zhí)行到所述被追蹤點(diǎn)時(shí),保存所述被追蹤點(diǎn)處的軟件當(dāng)前運(yùn)行環(huán)境;以及在調(diào)試結(jié)束后,恢復(fù)所述軟件當(dāng)前運(yùn)行環(huán)境,從所述被追蹤點(diǎn)處繼續(xù)執(zhí)行所述軟件后續(xù)程序; 調(diào)試模塊,用于在保存軟件當(dāng)前運(yùn)行環(huán)境后,調(diào)用已存儲的在線調(diào)試指令,執(zhí)行調(diào)試任務(wù),輸出在線調(diào)試信息。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述被追蹤點(diǎn)確定模塊,用于確定軟件中的被追蹤點(diǎn),具體包括: 通過命令行接收用戶輸入的設(shè)置指令,所述設(shè)置指令包括所述軟件中被追蹤點(diǎn)的地址; 將所述被追蹤點(diǎn)地址的二進(jìn)制機(jī)器指令反匯編為匯編程序; 根據(jù)所述匯編程序確定所述被追蹤點(diǎn)的位置。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述程序執(zhí)行模塊,用于在執(zhí)行到所述被追蹤點(diǎn)時(shí),保存所述被追蹤點(diǎn)處的軟件當(dāng)前運(yùn)行環(huán)境,具體包括: 當(dāng)執(zhí)行到所述被追蹤點(diǎn)時(shí),根據(jù)在被追蹤點(diǎn)生成的跳轉(zhuǎn)指令,跳轉(zhuǎn)至已存儲在所述軟件中的保護(hù)/恢復(fù)環(huán)境指令; 執(zhí)行所述保護(hù)/恢復(fù)環(huán)境指令中的保護(hù)環(huán)境指令,保存所述被追蹤點(diǎn)處的軟件當(dāng)前運(yùn)行環(huán)境。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述調(diào)試模塊,用于調(diào)用已存儲的在線調(diào)試指令,執(zhí)行調(diào)試任務(wù),輸出在線調(diào)試信息,具體包括: 執(zhí)行所述保護(hù)/恢復(fù)環(huán)境指令; 當(dāng)執(zhí)行到所述保護(hù)/恢復(fù)環(huán)境指令中的跳轉(zhuǎn)點(diǎn)時(shí),通過所述跳轉(zhuǎn)點(diǎn),跳轉(zhuǎn)至所述在線調(diào)試指令; 執(zhí)行所述在線調(diào)試指令,輸出在線調(diào)試信息。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述程序執(zhí)行模塊,用于恢復(fù)所述軟件當(dāng)前運(yùn)行環(huán)境,從所述被追蹤點(diǎn)處繼續(xù)執(zhí)行所述軟件后續(xù)程序,具體包括: 當(dāng)輸出在線調(diào)試信息后,從所述在線調(diào)試指令跳轉(zhuǎn)回所述跳轉(zhuǎn)點(diǎn); 執(zhí)行所述保護(hù)/恢復(fù)環(huán)境指令中的恢復(fù)環(huán)境指令,并跳轉(zhuǎn)回所述被追蹤點(diǎn),從所述被追蹤點(diǎn)處繼續(xù)執(zhí)行所述軟件后續(xù)程序。
13.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 狀態(tài)查看模塊,用于在調(diào)試任務(wù)執(zhí)行過程中,通過命令行,接收用戶輸入的被追蹤點(diǎn)狀態(tài)查看指令; 根據(jù)所述查看指令,向所述用戶反饋所述軟件中被追蹤點(diǎn)的狀態(tài)信息,所述被追蹤點(diǎn)的狀態(tài)信息包括以下一種或多種: 被追蹤點(diǎn)的執(zhí)行時(shí)間、當(dāng)前CPU各寄存器的狀態(tài)、當(dāng)前任務(wù)堆棧信息。
14.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 被追蹤點(diǎn)刪除模塊,用于通過命令行,接收用戶輸入的被追蹤點(diǎn)刪除指令,所述被追蹤點(diǎn)刪除指令包括待刪除的所述被追蹤點(diǎn)的位置; 將待刪除的所述被追蹤點(diǎn)的位置還原為設(shè)置所述被追蹤點(diǎn)之前的二進(jìn)制機(jī)器指令; 當(dāng)執(zhí)行到原所述被追蹤點(diǎn)的位置時(shí),執(zhí)行所述二進(jìn)制機(jī)器指令。
【專利摘要】本發(fā)明提供了一種軟件在線調(diào)試方法和系統(tǒng),其中,所述方法包括:確定軟件中的被追蹤點(diǎn);當(dāng)執(zhí)行到所述被追蹤點(diǎn)時(shí),保存所述被追蹤點(diǎn)處的軟件當(dāng)前運(yùn)行環(huán)境;調(diào)用已存儲的在線調(diào)試指令,執(zhí)行調(diào)試任務(wù),輸出在線調(diào)試信息;恢復(fù)所述軟件當(dāng)前運(yùn)行環(huán)境,從所述被追蹤點(diǎn)處繼續(xù)執(zhí)行所述軟件后續(xù)程序。本發(fā)明提供的軟件在線調(diào)試方法和系統(tǒng),以程序調(diào)用的形式調(diào)用調(diào)試指令,方便了調(diào)試指令的修改與刪除,避免了將調(diào)試指令直接以硬編碼的形式寫入軟件程序;同時(shí),也不需要重啟軟件程序;實(shí)現(xiàn)在調(diào)試過程中任意更改調(diào)試指令。
【IPC分類】G06F11-36
【公開號】CN104536892
【申請?zhí)枴緾N201510003876
【發(fā)明人】何保安, 余海群
【申請人】瑞斯康達(dá)科技發(fā)展股份有限公司
【公開日】2015年4月22日
【申請日】2015年1月5日