两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

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

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

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



背景技術(shù):

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

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



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

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

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

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

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

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

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

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

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

102、獲取IC TraceBuffer數(shù)據(jù),針對(duì)數(shù)據(jù)進(jìn)行分析,獲取每一條指令對(duì)應(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ù)模塊解析獲取的指令用圖形界面的方式給顯示出來(lái)。

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

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

附圖說(shuō)明

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

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

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

具體實(shí)施方式

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

圖1所示,為本發(fā)明所實(shí)施的基于IC TraceBuffer的調(diào)試方法控制流程圖,圖中所示,解析TraceBuffer數(shù)據(jù)模塊當(dāng)調(diào)試器中斷下來(lái)(即執(zhí)行Step Out、Step Into、Step Over停下來(lái)后),通過(guò)連接上硬件設(shè)備,獲取IC TraceBuffer數(shù)據(jù),針對(duì)數(shù)據(jù)進(jìn)行分析,獲取每一條指令對(duì)應(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ù),獲取該條指令對(duì)應(yīng)的Address、Cycle、Inse、Type、Code Bytes、Instruction等數(shù)據(jù)。

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

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

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

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

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

S201、初始化TraceBuffer指令視圖;

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

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

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

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

S206、顯示TraceBuffer指令視圖。

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

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

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

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
巨野县| 辽阳县| 唐山市| 翼城县| 塔河县| 惠安县| 汉源县| 彩票| 东山县| 韩城市| 防城港市| 永顺县| 河源市| 邮箱| 论坛| 航空| 武平县| 冕宁县| 白朗县| 台东市| 四平市| 莱州市| 宣化县| 固阳县| 阳城县| 博客| 古浪县| 三亚市| 石门县| 桦南县| 都兰县| 虞城县| 潍坊市| 赣榆县| 泾源县| 台安县| 鹤峰县| 丰台区| 铅山县| 茶陵县| 南陵县|