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

嵌入式系統(tǒng)的調(diào)試方法

文檔序號(hào):6572174閱讀:449來源:國知局
專利名稱:嵌入式系統(tǒng)的調(diào)試方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種嵌入式系統(tǒng)的調(diào)試方法,尤其是一種對(duì)開發(fā)語言 分層的嵌入式系統(tǒng)的調(diào)試方法。
背景技術(shù)
隨著電子技術(shù)的發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用在電子通信、自 動(dòng)控制等領(lǐng)域。隨著嵌入式系統(tǒng)的發(fā)展,其運(yùn)算速度越來越快,存儲(chǔ) 容量也越來越大,在嵌入式系統(tǒng)中運(yùn)行的程序也越來越龐大且更加復(fù) 雜,程序運(yùn)行時(shí)出現(xiàn)錯(cuò)誤或缺陷幾乎是不可避免的。因此,嵌入式系 統(tǒng)中運(yùn)行的程序編寫完畢后,需要進(jìn)行調(diào)試,以便發(fā)現(xiàn)并消除缺陷?,F(xiàn)有的部分嵌入式系統(tǒng)運(yùn)行的程序由兩種不同的語言開發(fā),如圖1所示?,F(xiàn)有的嵌入式系統(tǒng)運(yùn)行的程序包括上層應(yīng)用文件24和下層 基礎(chǔ)文件25,其中上層應(yīng)用文件24由高級(jí)語言,如Java語言編寫 而成。用戶編寫上層應(yīng)用文件24后將其編譯,并下載到嵌入式系統(tǒng) 中,此時(shí)上層應(yīng)用文件24以字節(jié)碼的形成存儲(chǔ)在嵌入式系統(tǒng)中。上 層應(yīng)用文件24 —條指令經(jīng)過編譯后,往往生成多個(gè)字節(jié)碼,而字節(jié) 碼的長度不一定相同,且均有唯一的起止地址。下層基礎(chǔ)文件25由能夠被編譯成機(jī)器指令的語言,如C語言編 寫而成,其運(yùn)行速度較快。程序運(yùn)行時(shí),下層基礎(chǔ)文件25逐一解釋 并執(zhí)行上層應(yīng)用文件24的字節(jié)碼。并且,下層基礎(chǔ)文件25有一虛擬 的PC (Program Counter,程序計(jì)數(shù)器)指針,該虛擬PC指針存儲(chǔ) 有當(dāng)前執(zhí)行字節(jié)碼的地址,即指向當(dāng)前執(zhí)行的字節(jié)碼。使用語言分層的技術(shù)開發(fā)嵌入式系統(tǒng),雖然給軟件開發(fā)帶來巨大 的方便,但給程序的調(diào)試帶來麻煩?,F(xiàn)有的調(diào)試系統(tǒng)只能對(duì)上層應(yīng)用 文件或下層基礎(chǔ)文件進(jìn)行單獨(dú)調(diào)試,這樣被調(diào)試程序無法在最真實(shí)的 環(huán)境下運(yùn)行,并且給下層基礎(chǔ)文件的調(diào)試帶來很大的不便。發(fā)明內(nèi)容本發(fā)明的主要目的是提供一種可同時(shí)對(duì)被調(diào)試程序的上層應(yīng)用文 件和下層基礎(chǔ)文件調(diào)試的嵌入式系統(tǒng)調(diào)試方法。為實(shí)現(xiàn)上述的主要目的,本發(fā)明提供的嵌入式系統(tǒng)調(diào)試方法應(yīng)用 在一嵌入式系統(tǒng)調(diào)試系統(tǒng)中,該嵌入式系統(tǒng)與調(diào)試終端連接,該嵌入 式系統(tǒng)包括調(diào)試模塊,用于接收調(diào)試終端發(fā)出的命令并對(duì)被調(diào)試程序 進(jìn)行調(diào)試。調(diào)試終端包括用戶接口模塊、調(diào)試信息模塊及執(zhí)行調(diào)試命令的執(zhí)行模塊,該調(diào)試方法包括以下步驟步驟一編寫被調(diào)試程序,該被調(diào)試程序包括上層應(yīng)用文件及下 層基礎(chǔ)文件,并在下層基礎(chǔ)文件中添加默認(rèn)斷點(diǎn),將被調(diào)試程序編譯 后下載到嵌入式系統(tǒng)中。其中,下層基礎(chǔ)文件由能夠被編譯成機(jī)器指 令的語言,如C語言編寫而成,而上層應(yīng)用文件是由高級(jí)語言,如 Java語言編寫而成,且編譯后以字節(jié)碼的形式存儲(chǔ)在嵌入式系統(tǒng) 中。步驟二在嵌入式系統(tǒng)中運(yùn)行被調(diào)試程序,此時(shí)下層基礎(chǔ)文件將 逐一解釋并執(zhí)行上層應(yīng)用文件編譯后生成的字節(jié)碼,當(dāng)被調(diào)試程序運(yùn)行至斷點(diǎn)時(shí)暫停運(yùn)行。步驟三調(diào)試終端查看和/或修改被調(diào)試程序的運(yùn)行信息,判斷 是否需要在被調(diào)試程序的上層應(yīng)用文件中添加斷點(diǎn)。若需要,由用戶接口模塊設(shè)置需要設(shè)定斷點(diǎn)的信息,如需要設(shè)置 斷點(diǎn)的源文件名、斷點(diǎn)設(shè)置的行數(shù)等,并將該信息傳送到調(diào)試信息模 塊及執(zhí)行模塊。調(diào)試信息模塊接收到該信息后,找出對(duì)應(yīng)字節(jié)碼的起 始地址,并傳送至執(zhí)行模塊。執(zhí)行模塊接收到該地址后,設(shè)置條件斷 點(diǎn)應(yīng)當(dāng)滿足的條件。其中,該條件斷點(diǎn)是設(shè)置在下層基礎(chǔ)文件中。若不需要添加斷點(diǎn),則執(zhí)行下一步。步驟四調(diào)試模塊向被調(diào)試程序發(fā)送繼續(xù)運(yùn)行的命令,被調(diào)試程 序繼續(xù)運(yùn)行。步驟五若被調(diào)試程序遇到條件斷點(diǎn),則返回執(zhí)行步驟二,否 則,繼續(xù)運(yùn)刊"陂調(diào)試程序,直至嵌入式系統(tǒng)斷電結(jié)束。由于被調(diào)試程序在嵌入式系統(tǒng)中運(yùn)行時(shí),下層基礎(chǔ)文件是逐一解 釋并執(zhí)行上層應(yīng)用文件編譯而成的字節(jié)碼,因此,當(dāng)下層基礎(chǔ)文件運(yùn)行時(shí)遇到條件斷點(diǎn)暫停運(yùn)行時(shí),上層應(yīng)用文件也無法運(yùn)行,即此時(shí)上 層應(yīng)用文件及下層基礎(chǔ)文件均暫停運(yùn)行,調(diào)試人員即可方便的查看被 調(diào)試程序的運(yùn)行狀況,并判斷被調(diào)試程序運(yùn)行是否出現(xiàn)問題,或者是 否需要改變運(yùn)行環(huán)境等。這樣,調(diào)試人員即可同時(shí)對(duì)上層應(yīng)用文件和 下層基礎(chǔ)文件同時(shí)進(jìn)行調(diào)試,使得被調(diào)試程序在最真實(shí)的運(yùn)行環(huán)境中 運(yùn)行,有利于調(diào)試人員進(jìn)行調(diào)試工作。


圖1是現(xiàn)有嵌入式系統(tǒng)中被調(diào)試程序結(jié)構(gòu)的示意框圖;圖2是要應(yīng)用本發(fā)明嵌入式系統(tǒng)調(diào)試方法的調(diào)試系統(tǒng)結(jié)構(gòu)示意框圖;圖3是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例的流程圖;圖4是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例中添加斷點(diǎn)的流程圖;圖5是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例中第一類單步運(yùn)行 的流程圖;圖6是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例中第二類單步運(yùn)行 的流程圖。以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一 步說明。
具體實(shí)施方式
參見圖2,圖2是要應(yīng)用本發(fā)明嵌入式系統(tǒng)調(diào)試方法的調(diào)試系統(tǒng) 結(jié)構(gòu)示意框圖。調(diào)試系統(tǒng)包括相互連接的調(diào)試終端1和嵌入式系統(tǒng) 2,其中調(diào)試終端1包括用戶接口模塊11、調(diào)試信息模塊12和執(zhí)行 模塊13,而嵌入式系統(tǒng)2包括調(diào)試模塊21和被調(diào)試程序22,被調(diào)試 程序22包括上層應(yīng)用文件24和下層基礎(chǔ)文件25,上層應(yīng)用文件24 和下層基礎(chǔ)文件25均經(jīng)過編譯后下載到嵌入式系統(tǒng)2中,且上層應(yīng) 用文件編譯后以字節(jié)碼的形式存儲(chǔ)在嵌入式系統(tǒng)2中,下層基礎(chǔ)文件 25有一虛擬的PC指針指向當(dāng)前執(zhí)行的字節(jié)碼,這些與現(xiàn)有的被調(diào)試 程序相同,在此不再贅述。在調(diào)試終端1中,用戶接口模塊11是調(diào)試終端1與調(diào)試人員的 接口界面,用于接收和解釋調(diào)試人員設(shè)置的調(diào)試命令,包括添加斷 點(diǎn)、查看某一參數(shù)的值、查看某一函數(shù)在被調(diào)試程序中的調(diào)用關(guān)系等 等。同時(shí),用戶接口模塊11還顯示被調(diào)試程序當(dāng)前運(yùn)行的狀態(tài),如 上層應(yīng)用文件的程序源代碼等信息。調(diào)試信息^f莫塊12可通過被調(diào)試程序22上層應(yīng)用文件24和下層 基礎(chǔ)文件25編譯時(shí)生成的符號(hào)表等調(diào)試信息,獲取變量類型、變量 地址、函數(shù)地址起止范圍、上層應(yīng)用文件的源代碼對(duì)應(yīng)字節(jié)碼的起始 地址等信息,并根據(jù)用戶接口模塊11發(fā)出的信息向執(zhí)行模塊13提供 相應(yīng)的信息。執(zhí)行模塊13根據(jù)用戶接口模塊11、調(diào)試信息模塊12發(fā)出的信 息,向嵌入式系統(tǒng)2的調(diào)試模塊21發(fā)出相應(yīng)的調(diào)試命令,如查看和 修改某一變量的值、添加斷點(diǎn)等。嵌入式系統(tǒng)2的調(diào)試模塊21可接收并執(zhí)行調(diào)試終端1執(zhí)行模塊 13發(fā)出的命令,也就是對(duì)被調(diào)試程序22進(jìn)行操作,并在執(zhí)行相關(guān)操 作后將操作結(jié)果信息傳送回執(zhí)行模塊13,執(zhí)行模塊13即將結(jié)構(gòu)傳送 至用戶接口模塊11,并由用戶接口模塊ll反映給調(diào)試人員。參見圖3,圖3是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例的流程 圖。應(yīng)用本發(fā)明對(duì)嵌入式系統(tǒng)調(diào)試時(shí),首先編寫程序,該程序由上層 應(yīng)用文件和下層基礎(chǔ)文件組成。其中,上層應(yīng)用文件由Java等高級(jí) 語言編寫而成,下層基礎(chǔ)文件由C等能夠被編譯成機(jī)器指令的語言編 寫而成。編寫程序時(shí),調(diào)試人員應(yīng)該在下層基礎(chǔ)文件中設(shè)置一個(gè)默認(rèn) 斷點(diǎn),讓被調(diào)試程序在運(yùn)行到該斷點(diǎn)時(shí)進(jìn)入中斷狀態(tài)。然后,對(duì)被調(diào) 試程序進(jìn)行編譯,上層應(yīng)用文件即被編譯成字節(jié)碼。接著,調(diào)試人員 將編譯后的被調(diào)試程序下載到嵌入式系統(tǒng)中(步驟Sl),調(diào)試工作 準(zhǔn)備完畢。下載被調(diào)試程序后,調(diào)試人員讓被調(diào)試程序在嵌入式系統(tǒng)中運(yùn)行 (步驟S2)。此時(shí),下層基礎(chǔ)文件逐一解釋并執(zhí)行上層應(yīng)用文件編 譯生成的字節(jié)碼。下層基礎(chǔ)文件執(zhí)行字節(jié)碼時(shí),判斷是否遇到斷點(diǎn) (步驟S3)。由于編寫被調(diào)試程序時(shí),在下層基礎(chǔ)文件中預(yù)先設(shè)置默認(rèn)斷點(diǎn),因此,下層基礎(chǔ)文件執(zhí)行字節(jié)碼時(shí),遇到設(shè)置在下層基礎(chǔ) 文件的默認(rèn)斷點(diǎn)即暫停運(yùn)行,被調(diào)試程序也就在設(shè)置了默認(rèn)斷點(diǎn)的地 方暫停,等待調(diào)試人員的調(diào)試。此時(shí),調(diào)試人員可通過用戶接口模塊設(shè)置調(diào)試命令,并查看被調(diào)試程序的運(yùn)行信息(步驟S5),如查看某一變量的值、某一寄存器 中存儲(chǔ)的數(shù)據(jù)等。調(diào)試人員根據(jù)被調(diào)試程序的運(yùn)行信息判斷是否需要 添加斷點(diǎn)(步驟S6),如果需要添加斷點(diǎn),則在下層基礎(chǔ)文件相應(yīng) 的位置設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件(步驟S7)。如果不需要設(shè)置 斷點(diǎn),則直接執(zhí)行步驟S8。調(diào)試人員設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件后,通過調(diào)試終端向調(diào)試 模塊發(fā)出繼續(xù)執(zhí)行被調(diào)試程序的命令,被調(diào)試程序即繼續(xù)運(yùn)行(步驟 S9),并返回步驟S3,判斷是否遇到斷點(diǎn)。此時(shí)若遇到斷點(diǎn),則是 調(diào)試人員在被調(diào)試程序中添加的條件斷點(diǎn),而并不是默認(rèn)斷點(diǎn)。被調(diào)試程序運(yùn)行時(shí)除了判斷是否遇到斷點(diǎn)外,還會(huì)判斷調(diào)試是否 結(jié)束(步驟S4)。若調(diào)試人員認(rèn)為不需要繼續(xù)調(diào)試,則可通過將嵌 入式系統(tǒng)斷電等方式終止調(diào)試。當(dāng)嵌入式系統(tǒng)斷電后,被調(diào)試程序不 會(huì)執(zhí)行,調(diào)試也就終止。若調(diào)試沒有結(jié)束,則返回步驟S2,被調(diào)試 程序?qū)⒗^續(xù)運(yùn)行,直至調(diào)試結(jié)束。下面介紹如何在被調(diào)試程序中添加斷點(diǎn)。參見圖4,圖4是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例中添加斷點(diǎn)的流程圖。調(diào)試人員需要在被調(diào)試程序中添加斷點(diǎn)時(shí),首先通過 用戶接口模塊設(shè)置添加斷點(diǎn)的信息(步驟Sll),如添加斷點(diǎn)的位置、斷點(diǎn)的類型、斷點(diǎn)所在的源文件名、斷點(diǎn)在源文件中所在的行數(shù) 等信息,并將這些信息傳送至調(diào)試信息模塊和執(zhí)行模塊。調(diào)試信息模塊接收到添加斷點(diǎn)的信息后,通過被調(diào)試程序上層應(yīng) 用文件編譯時(shí)生成的符號(hào)表等調(diào)試信息,找出斷點(diǎn)設(shè)置位置所對(duì)應(yīng)字 節(jié)碼的起始地址(步驟S12),并將該地址傳送到執(zhí)行模塊。執(zhí)行模塊接收用戶接口模塊和調(diào)試信息模塊發(fā)出的信息和地址 后,設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件(步驟S13),即當(dāng)下層基礎(chǔ)文件 的虛擬PC指針指向?qū)?yīng)字節(jié)碼起始地址時(shí),條件斷點(diǎn)的條件為真。也就是當(dāng)虛擬PC指針指向?qū)?yīng)字節(jié)碼起始地址時(shí),下層基礎(chǔ)文件即觸發(fā)條件斷點(diǎn),下層基礎(chǔ)文件將在條件斷點(diǎn)設(shè)置的位置停下。 執(zhí)行模塊設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件后,將該條件發(fā)送至調(diào)試模塊(步驟S14)。調(diào)試模塊接收該條件后,即在下層基礎(chǔ)文件中設(shè) 置條件斷點(diǎn)的條件。由于下層基礎(chǔ)文件執(zhí)行字節(jié)碼前,均需要判斷條 件斷點(diǎn)的條件是否為真,若為真即觸發(fā)條件斷點(diǎn),被調(diào)試程序暫停運(yùn) 行。因此,當(dāng)下層基礎(chǔ)文件執(zhí)行字節(jié)碼時(shí),到虛擬PC指針指向?qū)?yīng) 預(yù)先設(shè)置的字節(jié)碼起始地址時(shí),即觸發(fā)條件斷點(diǎn),被調(diào)試程序即暫停 運(yùn)行,等待調(diào)試人員的調(diào)試。由于被調(diào)試程序的暫停是由下層基礎(chǔ)文件遇到條件斷點(diǎn)引起的, 而當(dāng)下層基礎(chǔ)文件暫停運(yùn)行時(shí),即停止執(zhí)行字節(jié)碼,上層應(yīng)用文件也 無法運(yùn)行,因此,當(dāng)下層基礎(chǔ)文件停止運(yùn)行時(shí),上層應(yīng)用文件也暫停 運(yùn)行,調(diào)試人員即方便的查看和修改上層應(yīng)用文件或下層基礎(chǔ)文件中 各個(gè)參數(shù)或寄存器的值,也就是同時(shí)對(duì)上層應(yīng)用文件和下層基礎(chǔ)文件 進(jìn)行調(diào)試。并且,由于被調(diào)試程序在調(diào)試運(yùn)行過程中,是由下層基礎(chǔ)文件逐 一解釋并執(zhí)行字節(jié)碼的,使被調(diào)試程序在真實(shí)運(yùn)行環(huán)境運(yùn)行,更有利 于調(diào)試人員發(fā)現(xiàn)實(shí)際運(yùn)行時(shí)被調(diào)試程序的運(yùn)行狀況,取得更好的調(diào)試 效果。當(dāng)然,調(diào)試人員調(diào)試時(shí),經(jīng)常需要對(duì)被調(diào)試程序進(jìn)行單步運(yùn)行調(diào) 試,也就是需要讓被調(diào)試程序在執(zhí)行上層應(yīng)用文件的某一指令后暫停 運(yùn)行。而上層應(yīng)用文件源代碼的一條指令經(jīng)過編譯后往往形成多條字 節(jié)碼,因此需要下層基礎(chǔ)文件執(zhí)行多條字節(jié)碼后暫停運(yùn)行,由調(diào)試人 員對(duì)被調(diào)試程序進(jìn)行調(diào)試。下面介紹應(yīng)用本發(fā)明如何實(shí)現(xiàn)單步運(yùn)行。參見圖5,圖5是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例中第一 類單步運(yùn)行的流程圖。調(diào)試人員設(shè)置單步運(yùn)行時(shí),首先通過用戶接口 模塊設(shè)置需要單步運(yùn)行的信息,如設(shè)置單步運(yùn)行的位置等。例如,需 要在被調(diào)試程序上層應(yīng)用文件源代碼第502行設(shè)置單步運(yùn)行,調(diào)試人 員則通過用戶^^秦口^^塊設(shè)置在被調(diào)試程序中在源代碼的第502行設(shè)置單步運(yùn)行的信息(步驟S21),用戶接口模塊即將該信息傳送到調(diào)試 信息模塊和執(zhí)行模塊。用戶接口模塊接收該信息后,找出源代碼第502行對(duì)應(yīng)字節(jié)碼的 起止地址(步驟S22)。例如,源代碼第502行對(duì)應(yīng)的字節(jié)碼起止地 址為0X1504至0X1506,調(diào)試信息模塊找出該起止地址后,將其發(fā)送 至執(zhí)行模塊。下層基礎(chǔ)文件逐一執(zhí)行字節(jié)碼時(shí),不斷判斷虛擬PC指針在對(duì)應(yīng) 字節(jié)碼起止范圍內(nèi)(步驟S23),若虛擬PC指針指向的地址已經(jīng)在 該起止地址范圍內(nèi),如指向的地址為0X1504 ,則設(shè)置在當(dāng)前條件 下,條件斷點(diǎn)的條件為真(步驟S24),即觸發(fā)條件斷點(diǎn),此時(shí)被調(diào) 試程序即暫停,并不執(zhí)行地址為0X1504字節(jié)碼。由于上層應(yīng)用文件源代碼502行對(duì)應(yīng)的字節(jié)碼并沒有完全執(zhí)行完 畢,被調(diào)試程序不應(yīng)該暫停運(yùn)行,因此,調(diào)試模塊向被調(diào)試程序發(fā)出 繼續(xù)運(yùn)行的命令(步驟S26),下層基礎(chǔ)文件即繼續(xù)執(zhí)行當(dāng)前字節(jié) 碼,即執(zhí)行地址為0X1504字節(jié)碼。同樣,下層基礎(chǔ)文件執(zhí)行完地址 為0X1504字節(jié)碼后,將繼續(xù)執(zhí)行地址為0X1505和0X1506字節(jié)碼。下層基礎(chǔ)文件執(zhí)行完地址為0X1506字節(jié)碼后,虛擬PC指針指向 地址為0X1507字節(jié)碼,此時(shí)虛擬PC指針不在對(duì)應(yīng)字節(jié)碼起止范圍 內(nèi),則執(zhí)行模塊設(shè)置條件斷點(diǎn)在當(dāng)前條件下為假(步驟S25)。但被 調(diào)試程序不會(huì)繼續(xù)運(yùn)行,而是等待調(diào)試模塊發(fā)出繼續(xù)運(yùn)行的命令后才 能繼續(xù)運(yùn)行。此時(shí),被調(diào)試程序仍然是處于暫停運(yùn)行狀態(tài),調(diào)試人員 即可對(duì)上層應(yīng)用文件和下層基礎(chǔ)文件進(jìn)行調(diào)試,并在調(diào)試完畢后再發(fā) 出繼續(xù)運(yùn)行的命令,被調(diào)試程序即繼續(xù)運(yùn)行,即執(zhí)行地址為0X1507 字節(jié)碼,并在執(zhí)行該字節(jié)碼后繼續(xù)運(yùn)行,直至遇到下一斷點(diǎn)。由此可見,調(diào)試人員設(shè)置單步運(yùn)行時(shí),被調(diào)試程序下層基礎(chǔ)文件 并不單步執(zhí)行每一字節(jié)碼,而是在執(zhí)行完畢某一行源代碼指令對(duì)應(yīng)所 有字節(jié)碼后才單步運(yùn)行,即實(shí)現(xiàn)源碼級(jí)的單步運(yùn)行。當(dāng)然,應(yīng)用本發(fā)明的調(diào)試方法也可以實(shí)現(xiàn)字節(jié)碼級(jí)的單步運(yùn)行, 只要設(shè)置在設(shè)置條件斷點(diǎn)在當(dāng)前運(yùn)行條件下為真后,不繼續(xù)運(yùn)行被調(diào)試程序,而是等待調(diào)試終端發(fā)出的調(diào)試命令,即可使被調(diào)試程序執(zhí)行 完每一條字節(jié)碼后暫停運(yùn)行,實(shí)現(xiàn)字節(jié)碼級(jí)的單步運(yùn)行。調(diào)試人員在調(diào)試時(shí),有時(shí)需要使用第二類的單步運(yùn)行,也就是"next命令",即若設(shè)置單步運(yùn)行處為函數(shù)調(diào)用命令時(shí),在執(zhí)行完畢 該調(diào)用函數(shù)后再進(jìn)行暫停運(yùn)行。因此,下面介紹本發(fā)明如何實(shí)現(xiàn)該類 的單步運(yùn)行。參見圖6,圖6是本發(fā)明嵌入式系統(tǒng)在線調(diào)試方法實(shí)施例中第二 類單步運(yùn)行的流程圖。與第一類單步運(yùn)行類似,執(zhí)行第二類單步運(yùn)行 時(shí),首先由用戶接口模塊設(shè)置單步運(yùn)行的信息(步驟S31),并將該 信息發(fā)送至調(diào)試信息模塊和執(zhí)行模塊。調(diào)試信息模塊接收到該信息 后,找出對(duì)應(yīng)字節(jié)碼對(duì)應(yīng)的起止地址(步驟S32),并將地址發(fā)送至執(zhí)行模塊。被調(diào)試程序運(yùn)行時(shí)不斷判斷虛擬PC指針是否指向?qū)?yīng)字節(jié)碼起 止地址范圍內(nèi)(步驟S33),若沒有,則設(shè)置條件斷點(diǎn)在當(dāng)前條件下 的條件為假(步驟S35)。這些與前述第一類單步運(yùn)行工作過程相 同,在此不再贅述。當(dāng)虛擬PC指針指向?qū)?yīng)字節(jié)碼起止地址范圍內(nèi)時(shí),則計(jì)算當(dāng)前 字節(jié)碼的長度(步驟S34)。字節(jié)碼的長度不是固定的,不同字節(jié)碼 的長度差別較大。執(zhí)行模塊計(jì)算當(dāng)前字節(jié)碼長度后將其暫時(shí)保存。接著,執(zhí)行模塊判斷當(dāng)前字節(jié)碼對(duì)應(yīng)的是否為函數(shù)調(diào)用命令(步 驟S36),若不是函數(shù)調(diào)用命令,則直接將條件斷點(diǎn)在當(dāng)前條件下的 條件設(shè)為真(步驟S38),被調(diào)試程序即進(jìn)入單步運(yùn)行。若當(dāng)前字節(jié)碼對(duì)應(yīng)的是函數(shù)調(diào)用程序,則需要跳過該調(diào)用函數(shù), 再執(zhí)行單步運(yùn)行。此時(shí),執(zhí)行模塊將設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件。調(diào)試人員需要被調(diào)試程序在執(zhí)行當(dāng)前字節(jié)碼對(duì)應(yīng)的調(diào)用函數(shù)后再停 下,因此條件斷點(diǎn)應(yīng)當(dāng)滿足的條件是當(dāng)虛擬PC指針指向的地址是當(dāng) 前虛擬PC指針指向的地址與當(dāng)前字節(jié)碼長度之和時(shí)為真(步驟 S37)。這樣,當(dāng)虛擬PC指針指向?qū)?yīng)字節(jié)碼起止地址時(shí),被調(diào)試程 序并不暫停運(yùn)行,而是繼續(xù)執(zhí)行調(diào)用函數(shù)的相關(guān)操作,并在執(zhí)行該函 數(shù)調(diào)用的操作后再觸發(fā)條件斷點(diǎn)。執(zhí)行模塊設(shè)置完條件斷點(diǎn)的條件后,由調(diào)試模塊向被調(diào)試程序發(fā)出繼續(xù)運(yùn)行的命令,被調(diào)試程序繼續(xù)運(yùn)行(步驟S39),直至遇到預(yù) 先設(shè)置的斷點(diǎn)。被調(diào)試程序遇到斷點(diǎn)后即暫停運(yùn)行,等待調(diào)試人員的 調(diào)試。當(dāng)然,上述功能僅是本發(fā)明調(diào)試方法的部分功能,本發(fā)明實(shí)際應(yīng) 用過程中,還可以實(shí)現(xiàn)如源代碼列表、顯示函數(shù)執(zhí)行結(jié)果、顯示函數(shù) 調(diào)用關(guān)系等功能,這些功能均可基于在下層基礎(chǔ)文件中設(shè)置條件斷點(diǎn) 以及調(diào)試信息實(shí)現(xiàn),在此不再詳細(xì)描述。應(yīng)用本發(fā)明的調(diào)試方法對(duì)開發(fā)語言分層的嵌入式系統(tǒng)進(jìn)行調(diào)試, 使用在下層基礎(chǔ)文件中設(shè)置條件斷點(diǎn)的方式使被調(diào)試程序暫停運(yùn)行, 可同時(shí)對(duì)上層應(yīng)用文件與下層基礎(chǔ)文件同時(shí)進(jìn)行調(diào)試,使被調(diào)試程序 在最真實(shí)的運(yùn)行環(huán)境中調(diào)試運(yùn)行,更有利于調(diào)試人員發(fā)現(xiàn)被調(diào)試程序 存在的問題,也大大方便調(diào)試人員進(jìn)行調(diào)試工作。 一旦調(diào)試人員發(fā)現(xiàn) 問題,可同時(shí)修改上層應(yīng)用文件和下層基礎(chǔ)文件,大大減少調(diào)試人員 分別對(duì)上層應(yīng)用文件和下層基礎(chǔ)文件進(jìn)行調(diào)試時(shí)不斷調(diào)整被調(diào)試程序 的麻煩。當(dāng)然,本發(fā)明所指的嵌入式系統(tǒng)可以是多種多樣的,包括智能 卡、單片機(jī)等均可以使用本發(fā)明的調(diào)試方法進(jìn)行調(diào)試。使用上述的嵌 入式系統(tǒng)時(shí),有些并不是直接與調(diào)試終端連接,如智能卡,需要通過 讀卡器與調(diào)試終端連接。只有在調(diào)試時(shí),在智能卡與調(diào)試終端之間添 加 一讀卡器作為連接設(shè)備即可。同樣,編寫上層應(yīng)用文件與下層基礎(chǔ)文件的語言也是多種多樣 的,例如使用C語言編寫上層應(yīng)用文件,只要上層應(yīng)用文件經(jīng)過編譯 后生成下層基礎(chǔ)文件能夠逐一執(zhí)行的字節(jié)碼即可,或者使用匯編語言 編寫下層基礎(chǔ)文件,只要下層基礎(chǔ)文件能夠被編譯成硬件能夠識(shí)別的 機(jī)器指令,這些均不影響本發(fā)明的實(shí)現(xiàn)。最后,需要強(qiáng)調(diào)的是,本發(fā)明不限于上述實(shí)施方式,諸如默認(rèn)斷 點(diǎn)設(shè)置位置的改變、條件斷點(diǎn)設(shè)置方式的改變、編寫被調(diào)試程序語言 的改變等微小變化也應(yīng)該包括在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1、嵌入式系統(tǒng)的調(diào)試方法,該嵌入式系統(tǒng)與調(diào)試終端連接,該嵌入式系統(tǒng)包括調(diào)試模塊,該調(diào)試終端包括用戶接口模塊、調(diào)試信息模塊及執(zhí)行調(diào)試命令的執(zhí)行模塊,該調(diào)試方法包括以下步驟步驟一編寫被調(diào)試程序,該被調(diào)試程序包括上層應(yīng)用文件及下層基礎(chǔ)文件,并在被調(diào)試程序的下層基礎(chǔ)文件中添加默認(rèn)斷點(diǎn),將被調(diào)試程序編譯后下載到嵌入式系統(tǒng)中,所述上層應(yīng)用文件編譯后以字節(jié)碼的形式存儲(chǔ)在嵌入式系統(tǒng)中;步驟二在嵌入式系統(tǒng)中運(yùn)行被調(diào)試程序,被調(diào)試程序運(yùn)行至斷點(diǎn)時(shí)暫停運(yùn)行;步驟三調(diào)試終端查看和/或修改被調(diào)試程序的運(yùn)行信息,判斷是否需要在被調(diào)試程序的上層應(yīng)用文件中添加斷點(diǎn),若需要,則在被調(diào)試程序的下層基礎(chǔ)文件中相對(duì)應(yīng)的位置設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件,否則,執(zhí)行下一步;步驟四所述調(diào)試模塊向被調(diào)試程序發(fā)送繼續(xù)運(yùn)行的命令,被調(diào)試程序繼續(xù)運(yùn)行;步驟五若被調(diào)試程序遇到條件斷點(diǎn),則返回執(zhí)行步驟二,否則,繼續(xù)運(yùn)行被調(diào)試程序。
2、 根據(jù)權(quán)利要求l所述嵌入式系統(tǒng)的調(diào)試方法,其特征在于 所述步驟三中,若需要在被調(diào)試程序的上層應(yīng)用文件中添加斷點(diǎn),用戶接口模塊設(shè)置需要添加斷點(diǎn)的信息,并將該信息發(fā)送至調(diào)試 信息模塊及執(zhí)行模塊,調(diào)試信息模塊找出上層應(yīng)用文件對(duì)應(yīng)字節(jié)碼的 起始地址,發(fā)送至執(zhí)行模塊,執(zhí)行模塊設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條 件,并將該條件發(fā)送至嵌入式系統(tǒng)的調(diào)試模塊。
3、 根據(jù)權(quán)利要求2所述嵌入式系統(tǒng)的調(diào)試方法,其特征在于 所述下層基礎(chǔ)文件包括一指向上層應(yīng)用文件編譯后生成字節(jié)碼的虛擬PC指針;所述條件斷點(diǎn)應(yīng)當(dāng)滿足的條件是當(dāng)所述下層基礎(chǔ)文件的虛擬PC 指針指向所述對(duì)應(yīng)字節(jié)碼的起始地址時(shí)為真。
4、 根據(jù)權(quán)利要求3所述嵌入式系統(tǒng)的調(diào)試方法,其特征在于所述步驟三中還包括單步運(yùn)行的步驟用戶接口模塊設(shè)置需要單 步運(yùn)行的信息,并將該信息發(fā)送至調(diào)試信息模塊及執(zhí)行模塊,調(diào)試信 息模塊找出上層應(yīng)用文件對(duì)應(yīng)字節(jié)碼的起止地址,發(fā)送至執(zhí)行模塊, 執(zhí)行模塊判斷當(dāng)前所述下層基礎(chǔ)文件的虛擬PC指針是否指向所述對(duì) 應(yīng)字節(jié)碼的起止地址范圍內(nèi),并設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件。
5、 根據(jù)權(quán)利要求4所述嵌入式系統(tǒng)的調(diào)試方法,其特征在于 若當(dāng)前所述虛擬PC指針指向?qū)?yīng)字節(jié)碼的起止地址范圍內(nèi)時(shí),設(shè)置條件斷點(diǎn)在當(dāng)前條件下為真;若當(dāng)前所述虛擬PC指針未指向?qū)?yīng)字節(jié)碼的起止地址范圍內(nèi) 時(shí),設(shè)置條件斷點(diǎn)在當(dāng)前條件下為假。
6、 根據(jù)權(quán)利要求3所述嵌入式系統(tǒng)的調(diào)試方法,其特征在于 所述步驟三中還包括單步運(yùn)行步驟用戶接口模塊設(shè)置需要單步運(yùn)行的信息,并將該信息發(fā)送至調(diào)試信息模塊及執(zhí)行模塊,調(diào)試信息 模塊找出上層應(yīng)用文件對(duì)應(yīng)字節(jié)碼的起止地址,發(fā)送至執(zhí)行模塊,執(zhí) 行模塊判斷當(dāng)前下層基礎(chǔ)文件的虛擬PC指針是否指向所述對(duì)應(yīng)字節(jié) 碼的起止地址范圍內(nèi),若是,則計(jì)算對(duì)應(yīng)字節(jié)碼長度,判斷該字節(jié)碼 對(duì)應(yīng)的命令是否為函數(shù)調(diào)用命令,并設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件。
7、 根據(jù)權(quán)利要求6所述嵌入式系統(tǒng)的調(diào)試方法,其特征在于 若所述字節(jié)碼對(duì)應(yīng)的命令為函數(shù)調(diào)用命令,設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件為當(dāng)虛擬PC指針指向當(dāng)前地址與當(dāng)前字節(jié)碼長度之和時(shí)為真;若所述字節(jié)碼對(duì)應(yīng)的命令不是函數(shù)調(diào)用命令,設(shè)置條件斷點(diǎn)在當(dāng) 前條件下為真。
全文摘要
本發(fā)明提供一種嵌入式系統(tǒng)的調(diào)試方法,包括步驟一編寫包括上層應(yīng)用文件及下層基礎(chǔ)文件被調(diào)試程序,在下層基礎(chǔ)文件中添加默認(rèn)斷點(diǎn),將被調(diào)試程序編譯后下載到嵌入式系統(tǒng)中;步驟二在嵌入式系統(tǒng)中運(yùn)行被調(diào)試程序,被調(diào)試程序運(yùn)行至斷點(diǎn)時(shí)暫停運(yùn)行;步驟三調(diào)試終端查看被調(diào)試程序的運(yùn)行信息,判斷是否需要在被調(diào)試程序的上層應(yīng)用文件中添加斷點(diǎn),若需要,在下層基礎(chǔ)文件中相對(duì)應(yīng)的位置設(shè)置條件斷點(diǎn)應(yīng)當(dāng)滿足的條件,否則執(zhí)行下一步;步驟四繼續(xù)運(yùn)行被調(diào)試程序;步驟五若被調(diào)試程序遇到條件斷點(diǎn),則返回執(zhí)行步驟二,否則繼續(xù)運(yùn)行被調(diào)試程序。本發(fā)明可同時(shí)對(duì)被調(diào)試程序的上層應(yīng)用文件和下層基礎(chǔ)文件同時(shí)進(jìn)行調(diào)試,方便調(diào)試人員進(jìn)行調(diào)試工作。
文檔編號(hào)G06F11/36GK101216801SQ20071003301
公開日2008年7月9日 申請(qǐng)日期2007年12月27日 優(yōu)先權(quán)日2007年12月27日
發(fā)明者斌 張, 偉 郭 申請(qǐng)人:東信和平智能卡股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
内乡县| 浏阳市| 通州市| 新安县| 平远县| 交口县| 麻城市| 东乡族自治县| 苗栗县| 夏邑县| 绥芬河市| 新乡县| 岱山县| 定安县| 临漳县| 新丰县| 汽车| 获嘉县| 平武县| 玛沁县| 柞水县| 泽普县| 达孜县| 冕宁县| 潞西市| 越西县| 大田县| 兴安盟| 拉萨市| 荃湾区| 崇信县| 湖州市| 肥东县| 长丰县| 长沙市| 郑州市| 肇源县| 酒泉市| 灵丘县| 贵阳市| 文化|