C++程序調(diào)試方法和技巧_第1頁
C++程序調(diào)試方法和技巧_第2頁
C++程序調(diào)試方法和技巧_第3頁
C++程序調(diào)試方法和技巧_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、程序調(diào)試方法和技巧一、改正程序的編譯期錯(cuò)誤源程序編制完成后,首先由C+編譯程序編譯成.obj文件,再由連接程序連接成可執(zhí)行文件。在編譯時(shí),如果源程序存在語法錯(cuò)誤(errors,則系統(tǒng)不允許連接,直到改正了所有的語法錯(cuò)誤后,才能進(jìn)行連接。另外,編譯時(shí)還可能存在另一類錯(cuò)誤,即警告性錯(cuò)誤(warnings,這類錯(cuò)誤一般不影響程序的連接,在很多情況下也不影響程序的執(zhí)行結(jié)果,但建議還是盡量把這類錯(cuò)誤改正。選擇編譯菜單(Compile(或者直接單擊快捷工具欄上的編譯按鈕對(duì)編譯好的源程序進(jìn)行編譯,在集成環(huán)境下方的OutPut窗口中將會(huì)顯示相應(yīng)的編譯信息(若OutPut窗口沒有出現(xiàn),則可以在快捷工具欄上右鍵單

2、擊并在彈出的菜單中選擇OutPut菜單項(xiàng)即可打開(或關(guān)閉OutPut窗口。若程序編譯沒有發(fā)現(xiàn)錯(cuò)誤,則該窗口中顯示“*.exe-0error(s,0warning(s”,這時(shí)可以進(jìn)行程序的連接;若編譯后存在語法錯(cuò)誤或警告錯(cuò)誤,該窗口中則顯示兩類錯(cuò)誤的個(gè)數(shù),并列出相應(yīng)的錯(cuò)誤位置和原因。改正編譯期錯(cuò)誤的方法和一般原則為:1.改正錯(cuò)誤時(shí)一般從第一個(gè)錯(cuò)誤開始,然后依次改正后續(xù)的錯(cuò)誤。因?yàn)榍懊驽e(cuò)誤的出現(xiàn),往往會(huì)導(dǎo)致編譯系統(tǒng)在編譯時(shí)錯(cuò)位,把本來正確的語句認(rèn)為是錯(cuò)的,也可能把某些語句的錯(cuò)誤掩蓋掉。所以當(dāng)改正了前面的錯(cuò)誤后,可能會(huì)使錯(cuò)誤量減少很多,也可能增加很多;2.在OutPut窗口中雙擊指定錯(cuò)誤,則系統(tǒng)會(huì)自

3、動(dòng)定位到該錯(cuò)誤出現(xiàn)的位置,并在錯(cuò)誤語句前面用一個(gè)藍(lán)色子彈頭標(biāo)識(shí)。注意,該標(biāo)識(shí)只是告訴程序員編譯時(shí)在此位置出錯(cuò)了,真正的錯(cuò)誤可能出現(xiàn)在該標(biāo)識(shí)語句的前一語句或后一語句,如函數(shù)定義時(shí),在小括號(hào)后加了分號(hào),錯(cuò)誤標(biāo)識(shí)將出現(xiàn)在左大括號(hào)處;3.根據(jù)情況,每改正一個(gè)或幾個(gè)錯(cuò)誤后,應(yīng)重新編譯一下,然后再從第一個(gè)錯(cuò)誤進(jìn)行改錯(cuò),直到所有錯(cuò)誤都被改正過來。二、程序執(zhí)行時(shí)的調(diào)試實(shí)踐中發(fā)現(xiàn),往往很小的程序在執(zhí)行時(shí)也會(huì)出現(xiàn)錯(cuò)誤。當(dāng)一個(gè)程序可以被連接成功,但執(zhí)行時(shí)卻存在不正?,F(xiàn)象,如不能得到預(yù)期的運(yùn)行結(jié)果或出現(xiàn)死機(jī)等,而一下子又很難找出出錯(cuò)原因時(shí),可以采取以下方法查錯(cuò)、改錯(cuò)。1.單步跟蹤執(zhí)行命令單步跟蹤執(zhí)行程序,能夠清楚地看

4、到程序的一步步執(zhí)行過程,從而判斷出源程序的執(zhí)行流程是否與事先設(shè)計(jì)的流程一致,從中發(fā)現(xiàn)造成死循環(huán)或死機(jī)的原因所在。C+集成環(huán)境提供的單步跟蹤命令有“Step Into”和“Step Over”兩種,當(dāng)選擇這兩個(gè)命令時(shí),程序進(jìn)入DEBUG(調(diào)試狀態(tài),并在main函數(shù)的左大括號(hào)處出現(xiàn)一個(gè)黃色的子彈頭標(biāo)識(shí),意味著程序從此處開始執(zhí)行,以后每執(zhí)行一次這兩個(gè)命令之一,則程序執(zhí)行一行,若程序每一行只有一個(gè)語句,則相當(dāng)于一次執(zhí)行了一個(gè)語句。這兩個(gè)命令的區(qū)別如下:“Step Into”:對(duì)應(yīng)的快捷鍵為F11,在單步執(zhí)行過程中,若當(dāng)前執(zhí)行的語句是函數(shù)調(diào)用語句,則執(zhí)行一次該命令將會(huì)跟蹤至被調(diào)用函數(shù)內(nèi)部繼續(xù)單步跟蹤執(zhí)行

5、?!癝tep Over”:對(duì)應(yīng)的快捷鍵為F10,在單步執(zhí)行過程中,若當(dāng)前執(zhí)行的語句是函數(shù)調(diào)用語句,也不會(huì)跟蹤到被調(diào)用函數(shù)內(nèi)部執(zhí)行,而是直接把該函數(shù)調(diào)用作為一個(gè)語句一次執(zhí)行完成,到當(dāng)前函數(shù)的下一語句繼續(xù)跟蹤執(zhí)行。在具體操作時(shí),這兩種單步跟蹤命令往往配合使用:一般先使用“Step Over”命令單步跟蹤執(zhí)行,當(dāng)執(zhí)行到某函數(shù)調(diào)用處時(shí),如果需要跟蹤至被調(diào)用函數(shù)內(nèi)部,則再使用一次“Step Into”,然后繼續(xù)使用“Step Over”命令。2.執(zhí)行到光標(biāo)所在行命令該命令可以一次執(zhí)行到鼠標(biāo)光標(biāo)所在的程序語句位置。在進(jìn)行程序的調(diào)試時(shí),有時(shí)能夠確認(rèn)在某語句之前的所有語句都是正確的,如果對(duì)這些語句進(jìn)行單步跟蹤

6、會(huì)增加不必要的調(diào)試時(shí)間,此時(shí)可以使用該命令,執(zhí)行讓程序執(zhí)行到光標(biāo)所在行,然后在配合單步跟蹤,能夠有效地提高調(diào)試的效率。該命令對(duì)應(yīng)的快捷鍵為:Ctrl+F10。3.設(shè)置斷點(diǎn)命令設(shè)置斷點(diǎn)是另一種能夠快速執(zhí)行到程序指定行的方法:首先把光標(biāo)停在需設(shè)置斷點(diǎn)的位置,然后按F9(或工具欄上的“手形”按鈕,則在指定行出現(xiàn)一個(gè)紅色的實(shí)心圓,表示一個(gè)斷點(diǎn)設(shè)置完畢。如果需要設(shè)置其它的斷點(diǎn),則重復(fù)以上步驟即可。斷點(diǎn)設(shè)置完畢,按F5,則程序一次性執(zhí)行到第一個(gè)斷點(diǎn)所在位置,以后每按一次F5,程序?qū)?zhí)行到下一斷點(diǎn),執(zhí)行程序執(zhí)行完畢。在執(zhí)行過程中,也可以增加其它的斷點(diǎn)。在有斷點(diǎn)的位置,再按一次F9(或工具欄上的“手形”按鈕,

7、則可以取消該斷點(diǎn)的設(shè)置。在編制的程序比較短,特別是只有一個(gè)源程序文件的情況下,單步跟蹤和執(zhí)行到光標(biāo)所在行命令已經(jīng)能夠很好地完成調(diào)試任務(wù)。該命令在多文件組織的程序中能夠有效地發(fā)揮其調(diào)試功能。4.觀察程序執(zhí)行過程中變量和表達(dá)式值的變化在使用以上命令進(jìn)行調(diào)試過程中,通過觀察當(dāng)前執(zhí)行點(diǎn)相關(guān)變量或表達(dá)式的值,能夠有效地發(fā)現(xiàn)錯(cuò)誤出現(xiàn)的原因和位置。在調(diào)試狀態(tài)下,集成環(huán)境窗口下方會(huì)出現(xiàn)兩個(gè)窗口(如果這兩個(gè)窗口沒有出現(xiàn),可以在調(diào)試狀態(tài)下右鍵單擊工具欄空白處,在彈出的菜單中進(jìn)行選擇,如圖FL2.1所示。觀察窗口變量窗口FL2.1調(diào)試窗口一個(gè)是變量(Variables窗口,另一個(gè)是觀察(Watch窗口,前者實(shí)時(shí)地列出了當(dāng)前執(zhí)行點(diǎn)前后最近位置的變量的當(dāng)前值。后者提供了4個(gè)觀察子頁面,可以在其中任何一個(gè)頁面中輸入想觀察值的變量或表達(dá)式,然后觀察其值。該調(diào)試

溫馨提示

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

評(píng)論

0/150

提交評(píng)論