欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于ICTraceBuffer的調(diào)試方法與流程

文檔序號:11133840閱讀:653來源:國知局
一種基于IC TraceBuffer的調(diào)試方法與制造工藝

本發(fā)明屬于軟件調(diào)試的技術(shù)領(lǐng)域,特別涉及一種基于IC TraceBuffer的調(diào)試系統(tǒng)及方法。



背景技術(shù):

IC TraceBuffer就是IC內(nèi)部一塊很小的Memory,主要是用來存放IC執(zhí)行過的痕跡,即被執(zhí)行過的指令,但是由于Memory很小,所以保存的指令數(shù)據(jù)有效,通常保存最新執(zhí)行的幾條指令,早期的執(zhí)行指令不斷被覆蓋的調(diào)試方法及系統(tǒng)。

目前各種各樣的應(yīng)用程序應(yīng)有盡有,這些應(yīng)用程序基本上都是使用開發(fā)語言和一個調(diào)試器來進(jìn)行開發(fā)、調(diào)試,但是調(diào)試器一般都是集成到集成開發(fā)環(huán)境(IDE)中,因此大部分開發(fā)者都是使用IDE來進(jìn)行開發(fā)應(yīng)用程序,但是不管是高階開發(fā)語言,如C、C++、Java等,還是低階開發(fā)語言,如匯編語言PIC、6502匯編等,對于開發(fā)者來說,編寫完代碼執(zhí)行過程上遇到問題,那么必須依靠調(diào)試器來進(jìn)行調(diào)試、跟蹤并找出問題,進(jìn)而解決問題,最后才能發(fā)布,大部分的應(yīng)用程序在遇到bugs的時候基本上都可以通過調(diào)試器即可比較容易地找出問題,但是針對使用匯編編寫的嵌入式大代碼量程序,在遇到問題的時候查找就不那么容易,特別是針對這樣場景下的應(yīng)用程序:程序在運(yùn)行的過程中莫名其妙就復(fù)位或者跑飛了,這種情況下依賴調(diào)試器查找起來也非常棘手,即使有Call Stack,調(diào)試器也無法知道復(fù)位之前執(zhí)行了哪些指令,因為最有可能出現(xiàn)問題的地方是復(fù)位之前執(zhí)行的那幾條指令導(dǎo)致或者跟它們相關(guān)。



技術(shù)實現(xiàn)要素:

基于此,因此本發(fā)明的首要目地是提供一種基于IC TraceBuffer的調(diào)試方法,該方法能夠在傳統(tǒng)調(diào)試器難以找出問題的情況下盡可能快的找出bugs,提高調(diào)試效率,縮短調(diào)試時間。

為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案為:

一種基于IC TraceBuffer的調(diào)試方法,其特征在于該方法通過解析TraceBuffer數(shù)據(jù)模塊解析TraceBuffer中內(nèi)容為對應(yīng)的匯編指令,并使用顯示模塊將圖形界面顯示出來并依賴調(diào)試信息進(jìn)而找到出錯程序附近的行。

進(jìn)一步,所述解析TraceBuffer數(shù)據(jù)模塊首先連接設(shè)備,然后獲取IC TraceBuffer內(nèi)容,并對獲取的TraceBuffer數(shù)據(jù)進(jìn)行分析,得到對應(yīng)的指令,如:movwf 0x100,最后結(jié)合調(diào)試信息,得到源代碼中真正的指令,如:movfw TimerID。

進(jìn)一步,所述方法通過顯示模塊把解析TraceBuffer數(shù)據(jù)模塊中獲取到的指令信息用圖形界面顯示出來,方便用戶查看,并且允許用戶在顯示指令的界面上雙擊對應(yīng)的指令信息行能快速定位到該指令對應(yīng)的源代碼行中。

進(jìn)一步,該方法具體的實現(xiàn)步驟是:

101、當(dāng)調(diào)試器中斷下來,解析TraceBuffer數(shù)據(jù)模塊連接硬件設(shè)備;

所述調(diào)試器中斷下來,是指調(diào)試器執(zhí)行Step Out、Step Into、Step Over指令停下來。

102、獲取IC TraceBuffer數(shù)據(jù),針對數(shù)據(jù)進(jìn)行分析,獲取每一條指令對應(yīng)的信息,

所述信息包含:地址、指令機(jī)器碼、指令周期、指令類型(Read or Write or ReadWrite)。

103、解析TraceBuffer數(shù)據(jù)模塊結(jié)合所述信息把指令Machine Code轉(zhuǎn)換為指令OPCode,如把:0x12 0x23轉(zhuǎn)換為movwf 0x03;

104、解析TraceBuffer數(shù)據(jù)模塊結(jié)合調(diào)試的信息再把指令OPCode轉(zhuǎn)換為真正的源碼,如:movwf TimerID;

105、顯示模塊負(fù)責(zé)把解析TraceBuffer數(shù)據(jù)模塊解析獲取的指令用圖形界面的方式給顯示出來。

解析TraceBuffer數(shù)據(jù)模塊將數(shù)據(jù)進(jìn)行分析并轉(zhuǎn)換指令,能夠保證結(jié)合調(diào)試信息及時、準(zhǔn)確地找到對應(yīng)的指令,再把解析后的指令信息顯示在圖形界面上,通過圖形界面用戶可以看到當(dāng)前IC的執(zhí)行痕跡,雙擊用戶圖形界面中List控件中的任何一行該模塊會結(jié)合調(diào)試信息和指令信息定位到源碼對應(yīng)的行號上,協(xié)助用戶定位問題。

本發(fā)明所實現(xiàn)的調(diào)試方法,通過解析TraceBuffer數(shù)據(jù)模塊結(jié)合顯示模塊,能夠在傳統(tǒng)調(diào)試器難以找出問題的情況下盡可能快的找出bugs,提高調(diào)試效率,縮短調(diào)試時間。

附圖說明

圖1是本發(fā)明所實施的調(diào)試控制流程圖。

圖2是本發(fā)明所實施的顯示控制流程圖。

圖3是本發(fā)明所實施的顯示界面的示意圖。

具體實施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

圖1所示,為本發(fā)明所實施的基于IC TraceBuffer的調(diào)試方法控制流程圖,圖中所示,解析TraceBuffer數(shù)據(jù)模塊當(dāng)調(diào)試器中斷下來(即執(zhí)行Step Out、Step Into、Step Over停下來后),通過連接上硬件設(shè)備,獲取IC TraceBuffer數(shù)據(jù),針對數(shù)據(jù)進(jìn)行分析,獲取每一條指令對應(yīng)的信息,這些信息包含:地址、指令機(jī)器碼、指令周期、指令類型(Read or Write or ReadWrite),然后結(jié)合指令信息把指令Machine Code轉(zhuǎn)換為指令OPCode,如把:0x12 0x23轉(zhuǎn)換為movwf 0x03,最后結(jié)合調(diào)試信息在把movwf 0x03轉(zhuǎn)換為真正的源碼,如:movwf TimerID。

具體步驟為:

S101、調(diào)試器中斷后,解析TraceBuffer數(shù)據(jù)模塊連接硬件設(shè)備。

S102、連接成功后,獲取TraceBuffer數(shù)據(jù)集。數(shù)據(jù)集包含:地址、指令機(jī)器碼、指令周期、指令類型(Read or Write or ReadWrite)。

S103、從TraceBuffer數(shù)據(jù)集中提取指令數(shù)據(jù)。

S104、提取成功后,分析指令數(shù)據(jù),獲取該條指令對應(yīng)的Address、Cycle、Inse、Type、Code Bytes、Instruction等數(shù)據(jù)。

在該步驟中,獲取完該條指令對應(yīng)的數(shù)據(jù)后,結(jié)合指令信息把指令Machine Code轉(zhuǎn)換為指令OPCode。

S105、結(jié)合調(diào)試信息,將上述數(shù)據(jù)轉(zhuǎn)換為源碼中對應(yīng)的指令。

S106、保存S105步驟獲得的指令信息到指令數(shù)據(jù)容器中。

S107、重復(fù)S103-S106步驟,直至所有的數(shù)據(jù)都轉(zhuǎn)換保存完畢。

如圖2所示,顯示指令模塊負(fù)責(zé)把(1)模塊中解析獲取的指令用圖形界面的方式給顯示出來,方便用戶查看指令,通過圖形界面用戶可以看到當(dāng)前IC指令的執(zhí)行痕跡,雙擊用戶圖形界面中List控件中的任何一行該模塊會結(jié)合調(diào)試信息和指令信息定位到源碼對應(yīng)的行號上,協(xié)助用戶定位問題。其具體的步驟為:

S201、初始化TraceBuffer指令視圖;

S202、獲取指令保存解析后的指令數(shù)據(jù)容器;

S203、從上述容器中依次提取指令數(shù)據(jù);

S204、讀取成功后按照顯示格式將指令數(shù)據(jù)進(jìn)行格式化;

S205、將格式化的指令內(nèi)容插入到圖形控件中;然后重復(fù)S203-S205步驟,直至提前容器中的所有數(shù)據(jù);

S206、顯示TraceBuffer指令視圖。

再參見圖3所示,#為顯示每條指令的流水號,Address為顯示每條指令的起始地址,Cycles為顯示執(zhí)行每條指令的周期,Code Bytes為顯示每條指令對應(yīng)的機(jī)器碼,Instruction為顯示每條指令,Type為顯示每條指令類型,如Read、Write、ReadWrite。

當(dāng)用戶嵌入式程序莫名其妙Reset,很難定位出問題的時候,此時用戶可以依靠本專利提到的技術(shù)來協(xié)助定位問題,這里假如獲取當(dāng)時的TraceBuffer數(shù)據(jù)顯示出來如上圖所示,那么出錯前IC執(zhí)行的最近指令有以上4條,當(dāng)然依靠TraceBuffer的大小,如果TraceBuffer再大,這里顯示的內(nèi)容會更多,此時用戶在第二行位置上雙擊,該模塊就會結(jié)合指令信息和調(diào)試信息定位到源代碼行上如:15MOVFW TimerID(15是行號),但是這是針對匯編源文件的情況,如果針對C源文件,由于一條C源文件可能對應(yīng)多行匯編程序,因此可能雙擊上面多行均對應(yīng)到同一行C源文件中,這樣均都可以協(xié)助用戶定位并找出難于發(fā)現(xiàn)的問題。

以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
西吉县| 济阳县| 乃东县| 定州市| 湘乡市| 保德县| 泾川县| 尚义县| 兴山县| 砚山县| 玉树县| 台北市| 中阳县| 富阳市| 南汇区| 克东县| 安庆市| 车险| 昭通市| 长寿区| 门头沟区| 泗水县| 眉山市| 安庆市| 长岛县| 河源市| 兴文县| 哈密市| 阳信县| 宜城市| 新源县| 井研县| 微山县| 平凉市| 平昌县| 沙雅县| 九江县| 车险| 夏邑县| 和龙市| 海兴县|