程序設(shè)計(jì)實(shí)驗(yàn)三_第1頁
程序設(shè)計(jì)實(shí)驗(yàn)三_第2頁
程序設(shè)計(jì)實(shí)驗(yàn)三_第3頁
程序設(shè)計(jì)實(shí)驗(yàn)三_第4頁
程序設(shè)計(jì)實(shí)驗(yàn)三_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、程序設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)教師教師:葉曉霞葉曉霞: : 1330250403213302504032 運(yùn)行錯(cuò)誤是在程序運(yùn)行期間出現(xiàn)的錯(cuò)誤,一般是由于運(yùn)行錯(cuò)誤是在程序運(yùn)行期間出現(xiàn)的錯(cuò)誤,一般是由于編程者在程序設(shè)計(jì)上的邏輯錯(cuò)誤所導(dǎo)致。編程者在程序設(shè)計(jì)上的邏輯錯(cuò)誤所導(dǎo)致。 出現(xiàn)運(yùn)行錯(cuò)誤的程序,雖然能夠通過編譯和鏈接檢查,出現(xiàn)運(yùn)行錯(cuò)誤的程序,雖然能夠通過編譯和鏈接檢查,但程序的實(shí)際運(yùn)行結(jié)果和編程者對(duì)程序結(jié)果的期望不符,但程序的實(shí)際運(yùn)行結(jié)果和編程者對(duì)程序結(jié)果的期望不符,或者會(huì)在運(yùn)行時(shí)造成計(jì)算機(jī)死機(jī)、死循環(huán)或者輸出信息或者會(huì)在運(yùn)行時(shí)造成計(jì)算機(jī)死機(jī)、死循環(huán)或者輸出信息混亂等問題?;靵y等問題。 相對(duì)于編譯和鏈接錯(cuò)誤來說

2、,運(yùn)行錯(cuò)誤的查找和判斷相對(duì)于編譯和鏈接錯(cuò)誤來說,運(yùn)行錯(cuò)誤的查找和判斷比較困難。比較困難。調(diào)試器的應(yīng)用 基本的調(diào)試方法基本的調(diào)試方法 v 標(biāo)準(zhǔn)數(shù)據(jù)檢驗(yàn)標(biāo)準(zhǔn)數(shù)據(jù)檢驗(yàn): 運(yùn)行調(diào)試的一般方法就是用若干組已知結(jié)果的標(biāo)準(zhǔn)數(shù)據(jù)對(duì)程序進(jìn)行檢驗(yàn)。標(biāo)準(zhǔn)數(shù)據(jù)的選擇非常重要,首先要有代表性,要接近實(shí)際數(shù)據(jù);其次還要較為簡(jiǎn)潔,容易對(duì)其結(jié)果的正確性進(jìn)行分析。另外,某些重要的臨界數(shù)據(jù)也必須單獨(dú)進(jìn)行檢驗(yàn)。 v 簡(jiǎn)化簡(jiǎn)化 在調(diào)試時(shí),有時(shí)可以通過對(duì)程序進(jìn)行某種簡(jiǎn)化來加快調(diào)試速度。例如減少循環(huán)次數(shù)、縮小數(shù)組規(guī)模、屏蔽某些次要程序段(如一些用于顯示提示信息的程序段)等。在進(jìn)行簡(jiǎn)化工作時(shí)要注意簡(jiǎn)化的尺度,一定不要簡(jiǎn)化到無法代表原來程序

3、真實(shí)情況的地步。Visual C+Visual C+的跟蹤調(diào)試功能的跟蹤調(diào)試功能 v程序跟蹤是一種最重要的調(diào)試手段。其基本原理是讓程序一句一句地執(zhí)行,編程者通過觀察和分析程序執(zhí)行過程中的數(shù)據(jù)和程序執(zhí)行流程的變化來查找錯(cuò)誤。 vVisual C+的調(diào)試器功能非常強(qiáng)大,可以幫助編程者查看了解程序運(yùn)行狀況,找到在程序設(shè)計(jì)中可能遇到的幾乎每個(gè)錯(cuò)誤。調(diào)試器的主要調(diào)試手段有設(shè)置斷點(diǎn)、跟蹤和觀察。v斷點(diǎn):是編程者在程序中設(shè)定的某一特殊的位置,當(dāng)調(diào)試運(yùn)行時(shí),程序的執(zhí)行流程到達(dá)斷點(diǎn)后會(huì)自動(dòng)停下來。此時(shí),編程者就可以從容地對(duì)程序變量、表達(dá)式、調(diào)試輸出等信息進(jìn)行觀察,了解程序的運(yùn)行情況。 設(shè)置斷點(diǎn)的方法設(shè)置斷點(diǎn)的方

4、法 (1 1)在要設(shè)置斷點(diǎn)的語句上右擊,然后在調(diào)出的快捷菜單)在要設(shè)置斷點(diǎn)的語句上右擊,然后在調(diào)出的快捷菜單中選中選 擇擇Insert/Remove BreakpointInsert/Remove Breakpoint選項(xiàng)來設(shè)置斷點(diǎn)。選項(xiàng)來設(shè)置斷點(diǎn)。(2 2)光標(biāo)定位在要設(shè)置斷點(diǎn)的語句前,然后用鼠標(biāo)單擊)光標(biāo)定位在要設(shè)置斷點(diǎn)的語句前,然后用鼠標(biāo)單擊Build MiniBarBuild MiniBar工具條上的手形圖標(biāo)。工具條上的手形圖標(biāo)。(3 3)直接使用)直接使用F9F9鍵在程序當(dāng)前編輯位置設(shè)置斷點(diǎn)。鍵在程序當(dāng)前編輯位置設(shè)置斷點(diǎn)。設(shè)置好的斷點(diǎn)會(huì)在編輯窗口左邊框上出現(xiàn)一個(gè)非常醒目的大設(shè)置好的斷

5、點(diǎn)會(huì)在編輯窗口左邊框上出現(xiàn)一個(gè)非常醒目的大紅圈點(diǎn)。紅圈點(diǎn)。取消斷點(diǎn)取消斷點(diǎn)只要在有斷點(diǎn)的語句上重新按只要在有斷點(diǎn)的語句上重新按F9F9鍵即可。鍵即可。斷點(diǎn)設(shè)置斷點(diǎn)設(shè)置這里表示在c=8語句執(zhí)行前中斷?,F(xiàn)在可以使用F5或使用【組建】【開始調(diào)試】【Go】來啟動(dòng)調(diào)試。 調(diào)試狀態(tài)v如果選擇Go選項(xiàng)(或使用快捷鍵F5)程序?qū)⒃谡{(diào)試狀態(tài)下運(yùn)行。注意,在VC+6.0中,調(diào)試狀態(tài)(F5)與執(zhí)行狀態(tài)(Ctrl+F5)是不同的 。調(diào)試狀態(tài)下運(yùn)行將在斷點(diǎn)處暫停。此時(shí),編輯器左邊框上的對(duì)應(yīng)位置會(huì)出現(xiàn)一個(gè)黃色箭頭,指示被中斷的語句。Visual C+的版面布置也會(huì)一些發(fā)生變化,菜單欄中Build(生成)菜單項(xiàng)會(huì)消失,替代

6、它的將是Debug(調(diào)試)菜單項(xiàng),同時(shí)與該菜單項(xiàng)對(duì)應(yīng)的還會(huì)出現(xiàn)一個(gè)Debug工具欄。 調(diào)試狀態(tài)調(diào)試工具欄v Debug工具欄提供的功能選項(xiàng)很多,可將它們分為4個(gè)區(qū),頭兩個(gè)區(qū)中是一些比較常用的調(diào)試命令。第1區(qū)包括:v (1) Restart(快捷鍵為CtrI+Shift+F5):終止當(dāng)前的調(diào)試過程,并重新開始執(zhí)行程序,停在程序的第1條語句處(類似Step Into命令的結(jié)果)。v (2) Stop Debugging(快捷鍵為Shift+F5):退出調(diào)試器,同時(shí)結(jié)束調(diào)試過程和程序運(yùn)行過程。v (3) Break Execution:終止程序運(yùn)行,進(jìn)入調(diào)試狀態(tài)。多用于終止一個(gè)進(jìn)入死循環(huán)的程序。v

7、(4) Apply Code Changes(快捷鍵為Alt+F10):如果源程序在調(diào)試過程中發(fā)生改變,則使用該選項(xiàng)重新進(jìn)行編譯。DEBUG工具欄v 第2區(qū)包括5個(gè)圖標(biāo):(1) Show Next Statement(快捷鍵為Alt+Num*)t顯示下一語句。(2) Step Into(快捷鍵為F11):如果是一條語句,則單步執(zhí)行;如果是一個(gè)函數(shù)調(diào)用,則跟蹤到函數(shù)第一條可執(zhí)行語句。(3) Step Over(快捷鍵為F10):?jiǎn)尾綀?zhí)行。如果是一條語句,則單步執(zhí)行;如果是一個(gè)函數(shù)調(diào)用,將此函數(shù)一次執(zhí)行完畢,運(yùn)行到下一條可執(zhí)行語句(4) Step Out(快捷奠為Shift+Fll)。從函數(shù)體內(nèi)運(yùn)

8、行到外,即從當(dāng)前位置運(yùn)行到調(diào)用該函數(shù)語句的下一條語句。(5) Run To Cursor(快捷鍵為CtrI+F10)從當(dāng)前位置運(yùn)行到編輯光標(biāo)。DEBUG工具欄v 第3區(qū)是一個(gè)眼鏡圖標(biāo)(Quick Watch,快捷鍵為Shift+F9)用于彈出一個(gè)對(duì)話框,可觀察當(dāng)前編輯位置的變量的值。v 第4區(qū)有6個(gè)圖標(biāo),分別用予激活6個(gè)調(diào)試器窗口: (1)觀察窗口(Watch)用于觀察指定變量或表達(dá)式的值??扇我馓砑右^察的變量或表達(dá)式,并可用標(biāo)簽的形式(Watchl,Watch2Watch3等)增加多組觀察對(duì)象。 (2)變量窗口( Variables)用于觀察斷點(diǎn)處或其附近變量的當(dāng)前值。Variables有

9、3個(gè)標(biāo)簽,Auto標(biāo)簽顯示變量和函數(shù)返回值,Locals標(biāo)簽顯示當(dāng)前函數(shù)的局部變量,this標(biāo)簽顯示this指針對(duì)象。在Variables窗口中,雙擊一個(gè)變量并輸入新值會(huì)改變?cè)撟兞康闹怠?3)寄存器窗口(Register)用于觀察在當(dāng)前運(yùn)行點(diǎn)的寄存器的內(nèi)容。(4)內(nèi)存窗口(Memory)用于觀察指定內(nèi)存地址內(nèi)容。(5)調(diào)用棧窗口(Call Stack)用于觀察調(diào)用棧中還未返回的被調(diào)用函數(shù)列表。調(diào)用棧給出從嵌套函數(shù)調(diào)用一直到斷點(diǎn)位置的執(zhí)行路徑。(6)匯編代碼窗口(Disassembly)用于顯示被編譯代碼的匯編語言形式。DEBUG工具欄v調(diào)試器窗口匯集了許多信息,但通常并不需要同時(shí)觀察所有的信息

10、。太多的觀察窗口會(huì)與編輯器窗口爭(zhēng)奪屏幕空間,影響調(diào)試程序。在缺省情況下,啟動(dòng)調(diào)試器時(shí),系統(tǒng)只會(huì)自動(dòng)打開Variables和Watch兩個(gè)調(diào)試器窗口。 觀察變量的值vVisual C+調(diào)試器還有一個(gè)非常有用的特性,可以用來快速觀察某個(gè)變量的值。方法是將鼠標(biāo)放在要觀察的某個(gè)變量上并停留片刻,就會(huì)出現(xiàn)一個(gè)小小的黃色Tip窗口,顯示該變量當(dāng)前數(shù)值。同樣的,如果放在指針上,則會(huì)顯示指針數(shù)值;如果在字符串上,就顯示字符串內(nèi)容。調(diào)試流程v (1) 首先建立工程項(xiàng)目并添加相應(yīng)源文件,然后對(duì)程序進(jìn)行編譯和鏈接,修改所有的語法錯(cuò)誤。v (2)設(shè)置斷點(diǎn)。調(diào)試過程基本上都是從這一步開始的。然后使用Go選項(xiàng)(或快捷鍵F

11、5)使程序在調(diào)試狀態(tài)下運(yùn)行,程序執(zhí)行將在斷點(diǎn)處暫停,允許編程者查看程序運(yùn)行的狀態(tài)。如果設(shè)置斷點(diǎn)的行不是可執(zhí)行語句,斷點(diǎn)會(huì)自動(dòng)被設(shè)置在下一個(gè)可執(zhí)行語句處。v 在調(diào)試之前,編程者一般無法確定錯(cuò)誤所在位置,所以大多數(shù)情況下是根據(jù)個(gè)人經(jīng)驗(yàn)在某個(gè)關(guān)鍵位置設(shè)置斷點(diǎn),然后按照?qǐng)?zhí)行順序,逐段查找。 調(diào)試流程v (3)繼續(xù)調(diào)試。如果在上一步還沒有發(fā)現(xiàn)問題,可以在Debug工具欄上點(diǎn)擊單步Step into或Step out圖標(biāo),則程序會(huì)繼續(xù)向下執(zhí)行一行??梢钥吹奖硎井?dāng)前程序執(zhí)行位置的黃色箭頭在不停移動(dòng)。v利用調(diào)試器對(duì)程序進(jìn)行調(diào)試的過程,就是通過設(shè)置斷點(diǎn),觀察斷點(diǎn)的各種信息,單步跟蹤有疑問的程序段來進(jìn)行的。實(shí)驗(yàn)三 調(diào)試程序v 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?1、熟練使用Visual C+ 6.0的集成開發(fā)環(huán)境。 2、熟悉C+的基本語法規(guī)則。 3、學(xué)會(huì)完整的C+程序開發(fā)過程。 3、掌握C+程序的調(diào)試過程。v 實(shí)驗(yàn)任務(wù)實(shí)驗(yàn)任務(wù) 1 1、鍵盤輸入三角形的三個(gè)邊長(zhǎng)(、鍵盤輸入三角形的三個(gè)邊長(zhǎng)(a,b,ca,b,c),求其周長(zhǎng)),求其周長(zhǎng)(l)(l)和面和面積積(s)(s)。提示:海倫公式。提示:海倫公式 s=sqrt(ps=sqrt(p* *(p-a)(p-a)* *(p-b)(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論