[發(fā)明專利]程序調(diào)試方法及系統(tǒng)無效
| 申請?zhí)枺?/td> | 201010250337.X | 申請日: | 2010-08-11 |
| 公開(公告)號(hào): | CN101916223A | 公開(公告)日: | 2010-12-15 |
| 發(fā)明(設(shè)計(jì))人: | 李志剛 | 申請(專利權(quán))人: | 無錫中星微電子有限公司 |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 214028 江蘇省無錫市*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 程序 調(diào)試 方法 系統(tǒng) | ||
【技術(shù)領(lǐng)域】
本發(fā)明涉及軟件設(shè)計(jì)領(lǐng)域,特別涉及一種程序調(diào)試方法及系統(tǒng)。
【背景技術(shù)】
在軟件設(shè)計(jì)領(lǐng)域,調(diào)試是開發(fā)過程中必不可少的環(huán)節(jié),通用的桌面操作系統(tǒng)與嵌入式操作系統(tǒng)在調(diào)試環(huán)境上存在明顯的差別。前者,調(diào)試器與被調(diào)試的程序往往是運(yùn)行在同一臺(tái)機(jī)器的相同的操作系統(tǒng)上的兩個(gè)進(jìn)程,調(diào)試器進(jìn)程通過操作系統(tǒng)專門提供的調(diào)用接口(早期UNIX系統(tǒng)的ptrace調(diào)用、如今的進(jìn)程文件系統(tǒng)等)控制、訪問被調(diào)試程序進(jìn)程。后者(又稱為遠(yuǎn)程調(diào)試),為了向系統(tǒng)開發(fā)人員提供靈活、方便的調(diào)試界面,調(diào)試器還是運(yùn)行于通用桌面操作系統(tǒng)的應(yīng)用程序,被調(diào)試的程序則運(yùn)行于基于特定硬件平臺(tái)的嵌入式操作系統(tǒng)(也稱目標(biāo)操作系統(tǒng))。這就帶來以下問題:調(diào)試器與被調(diào)試程序如何通信,被調(diào)試程序產(chǎn)生異常如何及時(shí)通知調(diào)試器,調(diào)試器如何控制、訪問被調(diào)試程序,調(diào)試器如何識(shí)別有關(guān)被調(diào)試程序的多任務(wù)信息并控制某一特定任務(wù),調(diào)試器如何處理某些與目標(biāo)硬件平臺(tái)相關(guān)的信息(如目標(biāo)平臺(tái)的寄存器信息、機(jī)器代碼的反匯編等)。總之,嵌入式系統(tǒng)的開發(fā)調(diào)試是比較困難的。
而在現(xiàn)有技術(shù)中使用最為廣泛的一種嵌入式系統(tǒng)開發(fā)調(diào)試方式,就是通過目標(biāo)機(jī)器上的UART接口或者USB接口向系統(tǒng)開發(fā)人員使用的電腦上輸出調(diào)試信息。這些系統(tǒng)開發(fā)人員在設(shè)計(jì)程序時(shí),在可能出現(xiàn)程序錯(cuò)誤的位置加入檢驗(yàn)機(jī)制,以便在程序出錯(cuò)后打印特定的字符串來充當(dāng)調(diào)試信息。但是這種方法存在以下一些缺點(diǎn):1.由于程序運(yùn)行可能出錯(cuò)的地方很多,從理論上講每一次的函數(shù)調(diào)用都有可能出錯(cuò),因此嚴(yán)謹(jǐn)?shù)某绦蛘{(diào)試應(yīng)該判斷每一次函數(shù)調(diào)用的返回值。但是如果每個(gè)函數(shù)調(diào)用都設(shè)計(jì)一次錯(cuò)誤輸出信息,那么設(shè)計(jì)錯(cuò)誤輸出信息的工作量就占了整個(gè)編碼工作的很大一部分;2.很多錯(cuò)誤類型都是一致的,例如動(dòng)態(tài)分配內(nèi)存失敗,可能在程序運(yùn)行的許多地方都會(huì)出現(xiàn)。如果同類型錯(cuò)誤都輸出相同的錯(cuò)誤信息,則無法迅速找到出錯(cuò)位置;如果打印不同的信息,則不僅技術(shù)難度較高而且工作量也大;3.由于實(shí)際設(shè)計(jì)時(shí)設(shè)計(jì)唯一確定的輸出信息的難度較大,所以導(dǎo)致系統(tǒng)開發(fā)人員經(jīng)常忽略某些不常出現(xiàn)的錯(cuò)誤,會(huì)導(dǎo)致程序隱藏一些缺陷。同時(shí),設(shè)計(jì)的錯(cuò)誤輸出信息也不好清除,在產(chǎn)品正式量產(chǎn)后還可能遺留在產(chǎn)品中。
因此,亟待提出一種先進(jìn)的、可以克服上述缺點(diǎn)的技術(shù)方案。
【發(fā)明內(nèi)容】
本發(fā)明的目的在于提供一種程序調(diào)試方法及系統(tǒng),其利用編譯器自動(dòng)生成錯(cuò)誤信息,有利于快速定位程序出錯(cuò)位置。
為了達(dá)到本發(fā)明的目的,根據(jù)本發(fā)明的一個(gè)方面,本發(fā)明提供一種應(yīng)用于嵌入式開發(fā)平臺(tái)的程序調(diào)試方法,所述方法包括:設(shè)定一個(gè)宏定義或自定義庫函數(shù),所述宏定義或自定義庫函數(shù)內(nèi)包括一邏輯,該邏輯判斷程序運(yùn)行到某一點(diǎn)時(shí)的當(dāng)前值是否為期望值,如不是,則打印當(dāng)前文件名和行號(hào);和在需要檢驗(yàn)的程序部位加入所述宏定義或自定義庫函數(shù)。
進(jìn)一步地,所述打印當(dāng)前文件名和行號(hào)是通過編程語言的預(yù)定義宏實(shí)現(xiàn)的。
進(jìn)一步地,除了打印當(dāng)前文件名和行號(hào)外,還打印函數(shù)名。
進(jìn)一步地,所述程序采用C語言或者C++語言實(shí)現(xiàn)。
進(jìn)一步地,所述宏定義或者自定義庫函數(shù)在打印當(dāng)前文件名和行號(hào)后,還包括停止當(dāng)前程序運(yùn)行。
根據(jù)本發(fā)明的另一方面,本發(fā)明還提供一種應(yīng)用于嵌入式開發(fā)平臺(tái)的程序調(diào)試系統(tǒng),所述系統(tǒng)包括:編譯器,編譯包括預(yù)定宏定義或自定義庫函數(shù)的待調(diào)試程序,所述預(yù)定宏定義或自定義庫函數(shù)內(nèi)包括判斷程序運(yùn)行到某一點(diǎn)時(shí)的當(dāng)前值是否為期望值,如不是,則打印當(dāng)前文件名和行號(hào)的邏輯;和調(diào)試器,如果在所述程序運(yùn)行到所述點(diǎn)時(shí)當(dāng)前值不是期望值,打印所述點(diǎn)所處的文件名和行號(hào)。
進(jìn)一步地,所述調(diào)試器除了打印當(dāng)前文件名和行號(hào)外,還打印函數(shù)名。
進(jìn)一步地,所述程序采用C語言或者C++語言實(shí)現(xiàn)。
進(jìn)一步地,所述調(diào)試器在打印當(dāng)前文件名和行號(hào)后,還停止當(dāng)前程序運(yùn)行。
與現(xiàn)有技術(shù)相比,本發(fā)明通過利用宏定義或者自定義庫函數(shù)機(jī)制,簡化了系統(tǒng)開發(fā)人員在設(shè)計(jì)調(diào)試信息時(shí)的工作步驟;本發(fā)明通過直接利用編程語言內(nèi)部的預(yù)定義宏,實(shí)現(xiàn)了簡潔的錯(cuò)誤信息輸出;本發(fā)明通過出錯(cuò)后打印的調(diào)試信息(文件名、行號(hào)或者函數(shù)名),實(shí)現(xiàn)了程序出錯(cuò)位置的快速定位。
【附圖說明】
結(jié)合參考附圖及接下來的詳細(xì)描述,本發(fā)明將更容易理解,其中同樣的附圖標(biāo)記對(duì)應(yīng)同樣的結(jié)構(gòu)部件,其中:
圖1為本發(fā)明中程序調(diào)試方法的方法流程圖;
圖2為本發(fā)明中宏定義或者庫函數(shù)的工作步驟;和
圖3為本發(fā)明中程序調(diào)試系統(tǒng)在一個(gè)實(shí)施例中的結(jié)構(gòu)方框圖。
【具體實(shí)施方式】
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于無錫中星微電子有限公司,未經(jīng)無錫中星微電子有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010250337.X/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測;錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測試作故障硬件的檢測或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測試或調(diào)試防止錯(cuò)誤
- 功能限制程序、安裝程序生成程序和程序存儲(chǔ)介質(zhì)
- 程序生成系統(tǒng)、程序生成程序和程序生成模塊
- 程序生成系統(tǒng)、程序生成程序和程序生成模塊
- 程序創(chuàng)建裝置,程序創(chuàng)建方法和程序
- 程序生成裝置、程序生產(chǎn)方法及程序
- 程序生成裝置、程序生成程序以及程序生成方法
- 程序生成裝置、程序生成方法及程序生成程序
- 程序開發(fā)支持裝置、程序開發(fā)支持方法以及存儲(chǔ)介質(zhì)
- 程序執(zhí)行輔助裝置、程序執(zhí)行輔助方法及程序執(zhí)行輔助程序
- 程序?qū)φ昭b置、程序?qū)φ辗椒俺绦驅(qū)φ粘绦?/a>
- 調(diào)試系統(tǒng)、調(diào)試方法和調(diào)試控制方法
- 一種終端調(diào)試方法和裝置
- 設(shè)備自動(dòng)工程調(diào)試方法、裝置、系統(tǒng)和計(jì)算機(jī)設(shè)備
- 基于串口的遠(yuǎn)程設(shè)備調(diào)試系統(tǒng)及方法
- 一種安卓系統(tǒng)動(dòng)態(tài)調(diào)試的方法及系統(tǒng)
- 調(diào)試裝置和遠(yuǎn)程調(diào)試系統(tǒng)
- 一種調(diào)試方法、裝置及系統(tǒng)
- 一種應(yīng)用程序開發(fā)的調(diào)試系統(tǒng)及方法
- 樓宇設(shè)備的異地調(diào)試控制方法、裝置和計(jì)算機(jī)設(shè)備
- 一種芯片調(diào)試系統(tǒng)及芯片調(diào)試方法
- 一種數(shù)據(jù)庫讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測試終端的測試方法
- 一種服裝用人體測量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





