c網(wǎng)上查測試調(diào)試_第1頁
c網(wǎng)上查測試調(diào)試_第2頁
c網(wǎng)上查測試調(diào)試_第3頁
c網(wǎng)上查測試調(diào)試_第4頁
c網(wǎng)上查測試調(diào)試_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VCF5:開始調(diào)試Shift+F5:F10:F11:調(diào)試到下一句,跟進函數(shù)Shift+F11:從當(dāng)前函數(shù)中跳出Ctrl+F10:調(diào)試到光標(biāo)所在位置 Alt+F9:高級斷點設(shè)置variablescallstackRelease1DebugRelease,3malloc的內(nèi)存,new4(主要是在文中5、使用3或者46_debugNDEBUG進行調(diào)試,project->setting->C/C++->Preprocessordefinitions(中文->setting->link選上Generatedebuginfo(中文版是項目->屬性->器->調(diào)試->生成調(diào)試信二、TRACE了。但在程序的Release版本中,它們是被完全的。下面是一個典型的TRACE語句:…intnCountCString…可以看到,TRACECprintf語句,TRACE宏參數(shù)的個數(shù)是可TRACE0、TRACE1、TRACE2TRACE30、1、2、3。TRACE語句,不知道在哪里輸出,查了一晚上資料也MFCTRACETOOLS->MFCTRACER“ENABLETRACING”進行調(diào)試運行,GO(F5)(特別注意:不是執(zhí)行‘!’TRACE內(nèi)容,是因OUTPUTDEBUGTRACEBUILD窗DEBUGTRACE的內(nèi)容了,^_^TRACE程序的DEBUG版本中出現(xiàn),當(dāng)RELEASE的時候該宏就完全了,從而幫助你調(diào)式也在RELEASE的時候減少代碼量。TRACEVCIDE環(huán)境的輸出窗口(該窗口是你編譯項目出錯提示的哪個窗口,但VCDEBUG版本的程序。DEBUGVIE格式的輸出了。VCTRACETRACE1,就是不帶動態(tài)參數(shù)輸出字符串,Cprintf("輸出字符串");TRACE2:,Cprintf("...%d",變量);TRACE3Cprintf("...%d...%f",1,TRACE4Cprintf("...%d,%d,%d",1,2TRACE宏有點象 以前在C語言中用的Printf函數(shù)使程序在運行過程中輸出一些調(diào)試信 TRACE宏只有在調(diào)試狀態(tài)下才有所輸出,而以前用的PrintfPrintf函數(shù)一樣,TRACEintx=1;inty=16;floatz=TRACE("ThisisaTRACEstatement\n");TRACE("Thevalueofxis%d\n",x);TRACE("x=%dandy=%d\n",x,yTRACE("x=%dandy=%xandz=%f\n",x,y,zTRACEDebugRelease版本的工程中,TRACE三、ASSERT向一個文檔對象。一般來講,編程者在每個函數(shù)的開始處均應(yīng)例行公事地使用assertion。ASSERT宏將會判斷表達式,如果一個表達式為真,執(zhí)行將繼續(xù),否則,程序?qū)@示一條消Debug器中。下ASSERT宏去驗證一個語句。voidfoo(charp,intsize{ASSERTp0ASSERTsize100100//Dothefoo}這些語句不產(chǎn)生任何代碼,除非—DEBUG處理器標(biāo)志被設(shè)置。VisualCDebug版本Release版本不定義這些標(biāo)志。當(dāng)—DEBUGassertions//ASSERT(p!=0if(!(p!=0)&&AfxAssertFailedLine(—FILE—,—LINE—))//ASSERT((size〉100);if(!(size〉100)&&AfxAssertFailedLine(—FILE—,—LINE—))Do-whileassertion封裝在一個單獨的程序塊中,使得編譯器編譯起來很舒暢。IfAfxAssertFailedLine()函數(shù)。這個函數(shù)將彈出一個框,其中提供三個選項“取消、重試或忽略”,當(dāng)你選取“重試”時,它將返回TRUE。四、VERIFYassertionDebug版本中起作用,在表達式中不可以包含賦值語句、增加(--voidfoo(charp,intsize){charVERIFY(q=ASSERT((size〉//Dothefoo//Dothefoo}Debug模式下,ASSERTVERIFYRelease模式下,VERIFY宏仍然測試assertionRelease模式下,ASSERT語句被刪除了。ReleaseDebug信息,這類錯誤將很難被發(fā)現(xiàn)。五、VC高級調(diào)試方法-條件及數(shù)據(jù)斷點的void{for(inti=0;i<1000; {intk=i*10-2;//B inttmp=DoSome(i);//Dintj=i/ }}//其 還可以用其他方法調(diào)式也是一樣的,你可以用TRACE0宏來輸出循環(huán)中的每個結(jié)果,也可以在debug中看見輸出的結(jié)果,當(dāng)出現(xiàn)問題時,輸出的結(jié)果可能就不一樣了,可以分析一下debug中的結(jié)果找出問題的所在VC6斷點修飾條件就可以輕易解決此問題。步驟如下。Ctrl+BFigure1然后選擇D行所在的斷點,然后點擊condition按鈕,在彈出框的最下面一個編輯框1000就夠了。出錯的。因此,2skip次數(shù),1000513513次循環(huán),然后自動停在斷點處。這時,就可以DoSome0的。這樣,你就避免了手指的痛苦,節(jié)省了時間。Figure1所示,在“Entertheexpressiontobeevaluated:”下i100時程序停下來,就可以輸入在編輯框中輸入“i==100”。(二) lude"stdafx.h" ludeintmain(intargc,char*{ }這的輸出szName1:shenzhen首 給你分析一下為什么會是這樣的!首先你在strcpy(szName1,"shenzhen");個地方F9設(shè)置一個斷點,然后F5運行程序,這是程序會斷 設(shè)置的斷點,如下看到了吧,問題出現(xiàn)的就在這里,系統(tǒng)給szName20x0012ff7040x0012ff7410個字節(jié),F(xiàn)10單步,來到printf("%s\n",szName1)這一行,如下szName1分配的空間已經(jīng)附上了值F10printf("%s\n",szName1)szName1szName2szName2賦值超過所容納的字節(jié)時szName1的內(nèi)容了,所以說當(dāng)在輸出結(jié)果的時候就出現(xiàn)想不到的結(jié)果szName1何時被修改呢?因為沒有明顯的修改szName1代碼。 可以首先在A行設(shè)置普通斷點,F(xiàn)5運行程序,程序停在A行。然后 Figure2szName24strcpy7szName1。2中紅圈處改為條件”szName2[0]==''''y''''“,szName2y時斷點就會啟動。(三)在callstack窗口中設(shè)置斷點,選擇某個函數(shù),按F9設(shè)置一個斷點。這樣可以從次SetNextStateMent命令(debug過程中,右鍵菜單中令A(yù)BCD行,右鍵,然后“SetNextStateMent”B、C行。只要在同一函數(shù)內(nèi),此指令就可以隨watchwatch0x65,u101。windowsAPI調(diào)用的錯誤:在左欄輸入@err,hr。watchwatch窗口中清除它,否則,messages六、VCConfiguration中增加調(diào)試信息,包括Release版本。打開Projectsettings框(可以通過快捷鍵ALT+F7打開,也可以通過IDE菜單C/C++頁,CategorygeneralDebugInfo下拉列表框,可供選擇的調(diào)試信息方式包括: Projectsettings LineNumbers

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論