[發明專利]一種仿真工具的C語言單步調試實現方法無效
| 申請號: | 200910243482.2 | 申請日: | 2009-12-23 |
| 公開(公告)號: | CN102110046A | 公開(公告)日: | 2011-06-29 |
| 發明(設計)人: | 韓磊 | 申請(專利權)人: | 北京中電華大電子設計有限責任公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100102 北京市朝陽*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 仿真 工具 語言 調試 實現 方法 | ||
技術領域
本技術主要應用于智能卡軟件開發仿真調試工具領域。
背景技術
匯編和C是目前智能卡軟件開發使用的兩種主要編程語言,由于C語言的可讀性強、可移植性好而得到廣泛應用。但C語言相對匯編語言要復雜的多,給仿真調試工具的開發增加了不少困難,與匯編語言相比較,C語言的一個單步調試命令(包括單步進入Step?In、單步跨越Step?Over),對應于匯編語言會執行若干條指令,而且其中還可能有跳轉分支,不同的順序執行指令和跳轉分支指令相結合,使得C語言的調試非常復雜。
發明內容
本發明首先由仿真器實現基本調試命令,然后由編譯器對程序代碼解釋生成代碼行/程序地址對應表以及跳轉表,最后由IDE實現具體調試邏輯。
仿真器實現調試命令如下:
Step?In:單步,進入函數;
Step?Over:單步,跳過函數;
Run?to:執行到具體一個程序代碼地址。
另外,硬件有兩種狀態running和stop,在調試過程中需要返回給IDE。
編譯器生成的代碼行/程序地址對應表內容包括:
FileName:代碼所在文件;
LineIndex:代碼所在行;
LineAddressRange:代碼地址范圍,包括起始地址StartAddress和結束地址EndAddress。
IDE根據這些信息來實現調試邏輯,并將當前調試行顯示給用戶。
跳轉表內容包括:
InsName:跳轉指令名稱;
AsmFile:*.C文件編譯生成的中間匯編文件名;
AsmLine:對應中間匯編文件的行號;
InsAddr:跳轉指令所在地址。
本發明用來解決C語言程序單步調試的問題。方案主要由兩方面構成:1)通過將匯編單步命令Step?In/Step?Over和運行指定地址Run?to命令相結合,來處理C語言代碼行地址問題;2)通過仿真器狀態控制,來確定何時完成一次單步調試。使用該方案的好處是,除了可以支持C語言調試外,也能較好的兼容匯編語言調試。
附圖說明
圖1:C語言程序單步調試邏輯流程圖
圖2:仿真器控制邏輯流程圖
具體實施方式
1、C語言程序單步調試行地址處理方法
對于匯編語言來說,由于每一行代碼就對應著一條匯編語句,所以很容易處理,直接發送Step?In/Step?Over命令即可。
然而,對于C語言,每一行代碼可能對應多條匯編語句,并且這多條匯編語句可能不連續,甚至存在多個跳轉語句,如何跳出該行C代碼只有執行時才能確定。因此,不能簡單的將調試命令一對一的翻譯,而需要另行建立一套邏輯方法來處理。
詳細流程步驟如下:
1)獲取當前程序指針PC和當前調試代碼行地址范圍AddrRange,轉入步驟2);
2)比較當前程序指針PC和當前調試代碼行地址范圍AddrRange,若PC在AddrRange范圍內轉入步驟3),否則轉入步驟4);
3)直接發送Step?In/Step?Over單步命令,轉入步驟9);
4)查找跳轉地址表,找出距離當前程序PC最近的跳轉地址JmpAddr,轉入步驟5);
5)比較跳轉地址JmpAddr和代碼行地址范圍AddrRange,若JmpAddr在AddrRange范圍內轉入步驟6),否則轉入步驟7);
6)Run?to地址設置為JmpAddr,轉入步驟8);
7)Run?to地址設置為AddrRange的結束地址,轉入步驟8);
8)發送Run?to命令,轉入步驟9);
9)結束本次調試。
2、對仿真器狀態的控制方法
使用兩個線程實現對仿真器狀態的控制:
●主線程,負責給仿真器發送調試命令,啟動監視線程;
●監視線程,監測到仿真器是否處于停止狀態。如果仿真器停止,則判斷是否需要重復當前調試過程。如果不需要則向主窗口發送仿真器停止的消息,否則重復當前調試過程。
判斷是否重復當前調試過程的依據是:當前光標所在代碼行與調試程序地址所在代碼行是否相同。如果相同,則需要重復調試過程;如果不同,則發送停止消息。
詳細流程步驟如下:
1)進入主線程,并且調試窗口為靜止狀態,轉入步驟2);
2)啟動監視線程,監視線程啟動成功轉入步驟3),否則轉入步驟8);
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京中電華大電子設計有限責任公司,未經北京中電華大電子設計有限責任公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910243482.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:連桿式開關模裝置
- 下一篇:廢舊塑料電動分離設備





