vc程序調(diào)試技巧備忘錄_第1頁
vc程序調(diào)試技巧備忘錄_第2頁
vc程序調(diào)試技巧備忘錄_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、VC程序調(diào)試技巧備忘錄作者:未知 文章來源:網(wǎng)絡(luò)目的:方便程序的調(diào)試,可控制的查看運行信息、運行狀態(tài)、運行日志,各種錯誤信息以及盡可能的暴露程序隱藏的錯誤,并能幫助程序員及時發(fā)現(xiàn)錯誤的原因及錯誤出處。調(diào)試約定:1、我們這里討論的都是程序在直接運行時的各種運行信息,不討論Debug模式下的單步運行調(diào)試。2、我們約定調(diào)試者查看信息用2種方式,一種是使用DebugView程序查看運行時信息,一種是使用文件方式查看程序運行日志3、我們約定程序員查看正常數(shù)據(jù)信息,邏輯信息都使用TRACE,由于TRACE在Release模式下無法運行,因此,我編寫了方法CRFCWatch:watch,與TRACE完全兼容

2、,但可在R模式下將數(shù)據(jù)顯示到DebugView中。4、我們約定對數(shù)據(jù)的有效性檢查使用ASSERT,這里我同樣定義了一個新的宏WATCH_ASSERT來兼容ASSERT,當表達式為FALSE時,該宏會做以下工作:D模式下發(fā)生錯誤時,將信息等級,當前文件名,當前行數(shù)以及當前表達式輸出到DebugView中,并顯示ASSERT警告,Release模式下,該宏中的代碼依然執(zhí)行,并在發(fā)生錯誤時,將當前文件名,當前行數(shù)以及表達式信息寫到DebugView中。5、在使用上述的watch方法和WATCH_ASSERT宏時,要求用戶輸入信息等級,信息等級表示了當前信息的重要性,下表是對等級的分類,目前只定義了偶

3、數(shù)級別,奇數(shù)級暫時保留,用戶可自行安排,同時支持浮點型,比如1.2,4.5,程序內(nèi)部只是簡單的對數(shù)值的大小進行判斷,大與顯示等級值的代碼均將被執(zhí)行,這個數(shù)據(jù)在程序啟動的時候從命令行輸入(暫定,也可考慮用文件方式),程序啟動后,用戶需要使用CRFCWatch:InitWatch方法來獲得從外部傳入的顯示等級,不小與這個等級值的代碼將被執(zhí)行,比如命令行輸入的是”test.exe dv 5”(d為命令,5為參數(shù)值),程序在運行時將執(zhí)行5-10級的代碼。5以下的調(diào)試信息將不被顯示。等級等級描述10級最高級,只用于程序的錯誤,就是那些理論上應(yīng)該絕對不會錯的地方(但是實際上是會出錯的_),主要是類似ASS

4、ERT這樣的錯誤9級暫保留8級較重要信息,主要是程序的邏輯流程描述信息,比如與服務(wù)器連接成功,設(shè)備注冊成功,提交數(shù)據(jù)到數(shù)據(jù)庫成功等等7級暫保留6級主要數(shù)據(jù)信息,顯示重要的數(shù)據(jù),比如傳送的數(shù)據(jù),界面級的數(shù)據(jù)5級暫保留4級內(nèi)部數(shù)據(jù),比如協(xié)議包數(shù)據(jù)3級暫保留2級臨時信息1級暫保留6、對命令行參數(shù)的說明:/dv nLevel=11 LogFilePath = NULL,比如”dv 4”,表示只顯示不小于等級值為4的信息,而”dv 1 log.txt ”,則在顯示不小于等級值為1的信息的基礎(chǔ)上,同時將信息寫入到日志文件log.txt中,如果不輸入命令行參數(shù),則所有調(diào)試信息都將不被顯示(當然也不會寫文件)

5、。7、對邏輯型函數(shù)的編寫約定:首先我對邏輯型函數(shù)說個簡單的說明,比如說方法SendDataToDB,看函數(shù)名大家知道是什么意思吧,發(fā)送某種數(shù)據(jù)到數(shù)據(jù)庫,一般大多程序員使用void或BOOL作為返回值,這里約定使用CString作為返回值(暫定),如果正確,返回空字符串,錯誤時,則返回錯誤信息描述。8、對計算型函數(shù)的編寫約定:(暫保留)9、由于DebugView支持遠程調(diào)試,所以,使用本DLL的程序也將得到遠程調(diào)試的支持。具體使用方法請參考DebugView的幫助文件。10、強烈建議使用者在使用以上函數(shù)或宏的時候,先自己定義一個宏來使用,這樣可大大提高程序的可修改性。設(shè)計說明:設(shè)計一個類CRFC

6、Watch如下:備注:1、以下所有的顯示都只顯示到TRACE窗口和DebugView中2、只支持文本形式的文件,不支持2進制的文件,主要功能是描述程序運行的邏輯信息,而非運行時的數(shù)據(jù)信息方法參數(shù)說明返回功能描述BOOL InitRFCWatch(float fLevel)顯示數(shù)據(jù)的等級(1到10之間的數(shù))初始化顯示等級Void Watch (float fLevel, LPCSTR szText, )fLevel:當前信息等級szText:信息無顯示字符串信息以及錯誤等級在TRACE窗口以及DebugView窗口Void WatchStr(float fLevel, LPCSTR szText

7、)fLevel:當前信息等級szText:信息無顯示字符串信息以及錯誤等級在TRACE窗口以及DebugView窗口Void WatchInt(float fLevel, int nData)fLevel:當前信息等級nData:int型數(shù)據(jù)信息顯示字符串信息以及錯誤等級在TRACE窗口以及DebugView窗口Void WatchFloat(float fLevel, float fData)fLevel:當前信息等級fData:float型數(shù)據(jù)信息(顯示4位小數(shù)點)顯示字符串信息以及錯誤等級在TRACE窗口以及DebugView窗口Void WatchBuf(float nL fLevel, BYTE *pBuf, int nLength)fLevel:當前信息等級pBuf:緩沖區(qū)指針nLength:緩沖區(qū)長度顯示緩沖區(qū)信息(以16進制方式顯示)以及錯誤等級在TRACE窗口以及DebugView窗口,不支持寫日志文件Macro:WATCH_ASSERT(expr)用戶要檢驗的表達式無Debug模式下發(fā)生錯誤時,將信息等級,當前文件名,當前行數(shù)以及當前表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論