vc程序調(diào)試技巧備忘錄

vc程序調(diào)試技巧備忘錄

ID:1771594

大小:29.00 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2017-11-13

vc程序調(diào)試技巧備忘錄_第1頁(yè)
vc程序調(diào)試技巧備忘錄_第2頁(yè)
vc程序調(diào)試技巧備忘錄_第3頁(yè)
資源描述:

《vc程序調(diào)試技巧備忘錄》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

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

2、可在r模式下將數(shù)據(jù)顯示到debugview中。我們約定對(duì)數(shù)據(jù)的有效性檢查使用assert,這里我同樣定義了一個(gè)新的宏watch_assert來(lái)兼容assert,當(dāng)表達(dá)式為false時(shí),該宏會(huì)做以下工作:d模式下發(fā)生錯(cuò)誤時(shí),將信息等級(jí),當(dāng)前文件名,當(dāng)前行數(shù)以及當(dāng)前表達(dá)式輸出到debugview中,并顯示assert警告,release模式下,該宏中的代碼依然執(zhí)行,并在發(fā)生錯(cuò)誤時(shí),將當(dāng)前文件名,當(dāng)前行數(shù)以及表達(dá)式信息寫(xiě)到debugview中。5、在使用上述的watch方法和watch_assert宏時(shí),要求用戶輸入信息等級(jí),信息等級(jí)表示了當(dāng)前信息的重要性,下表是對(duì)等級(jí)的分類,目

3、前只定義了偶數(shù)級(jí)別,奇數(shù)級(jí)暫時(shí)保留,用戶可自行安排,同時(shí)支持浮點(diǎn)型,比如1.2,4.5,程序內(nèi)部只是簡(jiǎn)單的對(duì)數(shù)值的大小進(jìn)行判斷,大與顯示等級(jí)值的代碼均將被執(zhí)行,這個(gè)數(shù)據(jù)在程序啟動(dòng)的時(shí)候從命令行輸入(暫定,也可考慮用文件方式),程序啟動(dòng)后,用戶需要使用crfcwatch::initwatch方法來(lái)獲得從外部傳入的顯示等級(jí),不小與這個(gè)等級(jí)值的代碼將被執(zhí)行,比如命令行輸入的是”test.exedv5”(d為命令,5為參數(shù)值),程序在運(yùn)行時(shí)將執(zhí)行5-10級(jí)的代碼。5以下的調(diào)試信息將不被顯示。7級(jí)暫保留6級(jí)主要數(shù)據(jù)信息,顯示重要的數(shù)據(jù),比如傳送的數(shù)據(jù),界面級(jí)的數(shù)據(jù)5級(jí)暫保留4級(jí)內(nèi)

4、部數(shù)據(jù),比如協(xié)議包數(shù)據(jù)3級(jí)暫保留2級(jí)臨時(shí)信息1級(jí)暫保留6、對(duì)命令行參數(shù)的說(shuō)明:/dv[nlevel==11][logfilepath==null],比如”dv4”,表示只顯示不小于等級(jí)值為4的信息,而”dv1log.txt”,則在顯示不小于等級(jí)值為1的信息的基礎(chǔ)上,同時(shí)將信息寫(xiě)入到日志文件log.txt中,如果不輸入命令行參數(shù),則所有調(diào)試信息都將不被顯示(當(dāng)然也不會(huì)寫(xiě)文件)。7、對(duì)邏輯型函數(shù)的編寫(xiě)約定:首先我對(duì)邏輯型函數(shù)說(shuō)個(gè)簡(jiǎn)單的說(shuō)明,比如說(shuō)方法senddatatodb,看函數(shù)名大家知道是什么意思吧,發(fā)送某種數(shù)據(jù)到數(shù)據(jù)庫(kù),一般大多程序員使用void或bool作為返回值,

5、這里約定使用cstring作為返回值(暫定),如果正確,返回空字符串,錯(cuò)誤時(shí),則返回錯(cuò)誤信息描述。8、對(duì)計(jì)算型函數(shù)的編寫(xiě)約定:(暫保留)9、由于debugview支持遠(yuǎn)程調(diào)試,所以,使用本dll的程序也將得到遠(yuǎn)程調(diào)試的支持。具體使用方法請(qǐng)參考debugview的幫助文件。10、強(qiáng)烈建議使用者在使用以上函數(shù)或宏的時(shí)候,先自己定義一個(gè)宏來(lái)使用,這樣可大大提高程序的可修改性。設(shè)計(jì)說(shuō)明:設(shè)計(jì)一個(gè)類crfcwatch如下:備注:以下所有的顯示都只顯示到trace窗口和debugview中只支持文本形式的文件,不支持2進(jìn)制的文件,主要功能是描述程序運(yùn)行的邏輯信息,而非運(yùn)行時(shí)的數(shù)據(jù)信息無(wú)

6、顯示字符串信息以及錯(cuò)誤等級(jí)在trace窗口以及debugview窗口voidwatchint(floatflevel,intndata)flevel:當(dāng)前信息等級(jí)ndata:int型數(shù)據(jù)信息顯示字符串信息以及錯(cuò)誤等級(jí)在trace窗口以及debugview窗口voidwatchfloat(floatflevel,floatfdata)flevel:當(dāng)前信息等級(jí)fdata:float型數(shù)據(jù)信息(顯示4位小數(shù)點(diǎn))顯示字符串信息以及錯(cuò)誤等級(jí)在trace窗口以及debugview窗口voidwatchbuf(floatnlflevel,byte*pbuf,intnlength)fle

7、vel:當(dāng)前信息等級(jí)pbuf:緩沖區(qū)指針nlength:緩沖區(qū)長(zhǎng)度顯示緩沖區(qū)信息(以16進(jìn)制方式顯示)以及錯(cuò)誤等級(jí)在trace窗口以及debugview窗口,不支持寫(xiě)日志文件macro:watch_assert(expr)用戶要檢驗(yàn)的表達(dá)式無(wú)debug模式下發(fā)生錯(cuò)誤時(shí),將信息等級(jí),當(dāng)前文件名,當(dāng)前行數(shù)以及當(dāng)前表達(dá)式輸出到debugview中,將信息等級(jí),當(dāng)前文件全路徑,當(dāng)前行數(shù)以及表達(dá)式寫(xiě)到trace中,并顯示assert警告,release模式下,該宏中的代碼依然執(zhí)行,并在發(fā)生錯(cuò)誤時(shí),將當(dāng)前文件名,當(dāng)前行數(shù)以及表

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。