版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程第九章調(diào)試技術(shù)本章學(xué)習(xí)導(dǎo)讀9.1編譯調(diào)試概述9.2程序錯(cuò)誤分類9.3編譯器的設(shè)置9.4程序的調(diào)試本章小結(jié)12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程本章學(xué)習(xí)導(dǎo)讀本章首先介紹在程序編寫過程中可能出現(xiàn)的錯(cuò)誤,然后介紹如何使用Delphi內(nèi)嵌的調(diào)試工具來檢查已編寫完成的源程序。讓讀者掌握通過Delphi對(duì)程序進(jìn)行基本測(cè)試的方法。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.1編譯調(diào)試概述程序中的錯(cuò)誤基本可以分為三類:編譯錯(cuò)誤:一般是語法錯(cuò)誤。運(yùn)行錯(cuò)誤:程序能正常編譯但在運(yùn)行時(shí)出錯(cuò)。邏輯錯(cuò)誤:邏輯錯(cuò)誤是指程序設(shè)計(jì)和實(shí)現(xiàn)上的錯(cuò)誤。程序語句是合法的,并順利執(zhí)行了,但執(zhí)行的結(jié)果卻不是所希望的。程序調(diào)試的主要內(nèi)容可以包括如下幾個(gè)方面:控制程序的執(zhí)行斷點(diǎn)的數(shù)用監(jiān)視和檢查數(shù)據(jù)的值12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.2程序錯(cuò)誤分類9.2.1編譯錯(cuò)誤9.2.2運(yùn)行錯(cuò)誤9.2.3邏輯錯(cuò)誤12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.2.1編譯錯(cuò)誤編譯錯(cuò)誤的產(chǎn)生是Delphi將源程序編譯稱單元目標(biāo)文件.dcu是所產(chǎn)生的錯(cuò)誤。在編譯錯(cuò)誤中最常見的就是程序語法錯(cuò)誤,如源程序中出現(xiàn)了未經(jīng)定義的非法字符,語句結(jié)尾缺少“;”等。當(dāng)語法出現(xiàn)錯(cuò)誤時(shí),Delphi自動(dòng)裝入錯(cuò)誤的文件,并將光標(biāo)定位在代碼編輯器中的錯(cuò)誤處,同時(shí)在代碼編輯器的狀態(tài)欄顯示出錯(cuò)信息,包括出錯(cuò)的語句行號(hào)以及錯(cuò)誤類型等信息。語法錯(cuò)誤往往是由于程序編寫不規(guī)范、疏忽所引起的,如中文輸入與英文輸入狀態(tài)切換不及時(shí)等。良好的編程習(xí)慣能減少類似錯(cuò)誤的發(fā)生。語法錯(cuò)誤相對(duì)來說容易識(shí)別,根據(jù)出錯(cuò)信息逐條語句更正錯(cuò)誤即可順利通過編譯。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.2.2運(yùn)行錯(cuò)誤運(yùn)行錯(cuò)誤是指在編譯通過后,運(yùn)行程序時(shí)產(chǎn)生的錯(cuò)誤。這類錯(cuò)誤往往是由指令代碼執(zhí)行了一非法操作引起的。如:定義的數(shù)組在運(yùn)行時(shí)越界、試圖打開一個(gè)不存在的文件產(chǎn)生I/O錯(cuò)誤等。運(yùn)行錯(cuò)誤一旦發(fā)生,Delphi會(huì)終止程序運(yùn)行。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.2.3邏輯錯(cuò)誤邏輯錯(cuò)誤是程序邏輯關(guān)系上存在的錯(cuò)誤,也是經(jīng)常出現(xiàn)的錯(cuò)誤類型。這類錯(cuò)誤不影響程序的正常編譯和運(yùn)行,更不會(huì)出現(xiàn)錯(cuò)誤的提示或警告對(duì)話框,但程序運(yùn)行的結(jié)果卻沒有實(shí)現(xiàn)設(shè)計(jì)的功能。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.3編譯器的設(shè)置包含調(diào)試信息執(zhí)行菜單“工程|選項(xiàng)”轉(zhuǎn)換到“Compiler”選項(xiàng)卡,如圖9-4所示。
圖9-4設(shè)置編譯參數(shù)12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.3編譯器的設(shè)置Debugging選項(xiàng)組是編譯過程控制調(diào)試信息的選項(xiàng)。要使得集成調(diào)試器調(diào)試應(yīng)用程序,必須選中該組中的選項(xiàng)。啟動(dòng)“Debuginformation”復(fù)選框,則在編譯文件中包含調(diào)試信息;啟用“Localsymbols”復(fù)選框,則在編譯文件中包含有源文件符號(hào)表。啟用Debugging選項(xiàng)組后,編譯后生成的執(zhí)行文件長度增大。如果應(yīng)用程序交付給用戶時(shí),建議將該組下的選項(xiàng)除去,然后使用菜單“工程|編譯”命令重新編譯,以減小應(yīng)用程序的長度,提高執(zhí)行效率。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.3編譯器的設(shè)置允許完整模式調(diào)試執(zhí)行菜單“工具|調(diào)試器選項(xiàng)”命令,在“General”選項(xiàng)卡上,勾選底部的“IntegratedDebugging”復(fù)選框(默認(rèn)狀態(tài)下,該項(xiàng)是被選中的)。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4程序的調(diào)試9.4.1斷點(diǎn)的設(shè)置和使用9.4.2單步執(zhí)行9.4.3查看變量9.4.4其他調(diào)試方法與技巧12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.1斷點(diǎn)的設(shè)置和使用斷點(diǎn)指的是在程序代碼的某一行上設(shè)一個(gè)標(biāo)記,程序執(zhí)行到標(biāo)記處將暫停,由調(diào)試器控制程序的運(yùn)行。通常把斷點(diǎn)設(shè)置在懷疑會(huì)產(chǎn)生錯(cuò)誤的代碼前,或直接設(shè)置在問題代碼上。在遇到斷點(diǎn)之前,程序正常運(yùn)行,到斷點(diǎn)后程序暫停,然后使用單步或跟蹤等方式執(zhí)行程序,以發(fā)現(xiàn)錯(cuò)誤。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.1斷點(diǎn)的設(shè)置和使用設(shè)置斷點(diǎn)斷點(diǎn)的設(shè)施十分靈活,既可以在程序設(shè)計(jì)期設(shè)置斷點(diǎn),還可以在調(diào)試期添加和刪除斷點(diǎn)。設(shè)置斷點(diǎn)有以下幾種方法:(1)單擊代碼某一行最左端;(2)把光標(biāo)定位在需設(shè)置斷點(diǎn)的代碼行上,按F5鍵;(3)執(zhí)行菜單“運(yùn)行|添加斷點(diǎn)|源中斷”命令,在對(duì)話框中設(shè)定添加斷點(diǎn)的代碼行號(hào);(4)右擊代碼行,在彈出的快捷菜單中執(zhí)行“Debug|ToggleBreakpoint”命令。需要注意的是,斷點(diǎn)必須設(shè)置在可執(zhí)行的代碼行上。如果將斷點(diǎn)設(shè)置在空行、注釋行或其他不能執(zhí)行的代碼行上,調(diào)試器將認(rèn)為斷點(diǎn)無效,12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.1斷點(diǎn)的設(shè)置和使用查找斷點(diǎn)如果在代碼上設(shè)置了多個(gè)斷點(diǎn),而且斷點(diǎn)不在當(dāng)前編輯窗口,那么可以在斷點(diǎn)列表中尋找斷點(diǎn),并在源代碼中定位。執(zhí)行菜單“查看|調(diào)試窗口|斷點(diǎn)”命令或者直接使用快捷鍵Ctrl+Alt+B來打開斷點(diǎn)列表,12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.1斷點(diǎn)的設(shè)置和使用刪除斷點(diǎn)刪除某個(gè)斷點(diǎn)可直接單擊斷點(diǎn)所在的代碼行的左端紅點(diǎn)。如果要?jiǎng)h除所有斷點(diǎn),可以在斷點(diǎn)列表窗口空白處右擊,在彈出菜單中執(zhí)行“DeleteAll”命令即可。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.1斷點(diǎn)的設(shè)置和使用斷點(diǎn)的屏蔽與激活在有些情況下,在設(shè)置斷點(diǎn)以后可以隨時(shí)禁用某個(gè)斷點(diǎn),使斷點(diǎn)暫時(shí)無效。程序運(yùn)行到該斷點(diǎn)不會(huì)暫停程序,但斷點(diǎn)依舊存在,以后還可以使用它。要屏蔽某個(gè)斷點(diǎn),可以在斷點(diǎn)列表中選中斷點(diǎn),在快捷菜單中選擇“Enabled”命令,去除“Enabled”前的勾選,斷點(diǎn)被屏蔽。在激活斷點(diǎn)時(shí),只需將再次單擊“Enabled”即可。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.2單步執(zhí)行對(duì)程序進(jìn)行調(diào)試時(shí),常常要監(jiān)視程序運(yùn)行的進(jìn)度、當(dāng)前狀況以及各種變量在不同運(yùn)行階段的值。通過單步或跟蹤調(diào)試,能單函數(shù)(過程)或單條語句逐步運(yùn)行程序,以發(fā)現(xiàn)程序中的錯(cuò)誤。單步調(diào)試能使程序每次執(zhí)行一行代碼,可以使用“運(yùn)行”菜單下的“步越”命令,或直接使用F8快捷鍵。跟蹤調(diào)試與單步調(diào)試有點(diǎn)類似,每次也是執(zhí)行一行代碼,不同的是跟蹤調(diào)試能進(jìn)入被調(diào)用的函數(shù)(過程)內(nèi)部,在函數(shù)和過程中,每次也只執(zhí)行一行代碼??梢允褂谩斑\(yùn)行”菜單下的“步入”命令或F7快捷鍵進(jìn)行跟蹤調(diào)試。為加快程序調(diào)試速度,可以先在可疑代碼行前設(shè)置斷點(diǎn),先將程序執(zhí)行到斷點(diǎn),然后接著使用單步或跟蹤調(diào)試。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.3查看變量在單步或跟蹤調(diào)試時(shí),鼠標(biāo)在變量上停頓,可以顯示該變量的值,但僅能顯示當(dāng)前鼠標(biāo)指向的變量值。有時(shí)為了直觀的分析、比較變量或表達(dá)式在不同運(yùn)行時(shí)期的值,需要同時(shí)查看多個(gè)變量。為實(shí)現(xiàn)這個(gè)目的,Delphi提供了監(jiān)視窗口(WatchList)。程序調(diào)試時(shí)可以把需跟蹤的變量或表達(dá)式加入到監(jiān)視窗口。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.3查看變量添加監(jiān)視變量或表達(dá)式使用如下方法:(1)在代碼編輯器中,右擊需監(jiān)控的變量或表達(dá)式,在彈出菜單上執(zhí)行“Debug|AddWatchAtCursor”命令;(2)在代碼編輯器中,光標(biāo)定位到監(jiān)控變量上,按Ctrl+F5鍵。以上方法添加了跟蹤變量后,會(huì)彈出如圖9-7所示“WatchList”(監(jiān)控)窗口。變量前的復(fù)選框用來允許或暫停該變量的監(jiān)視,Value顯示了變量當(dāng)前的值,從中可以監(jiān)視到變量值的變化。圖9-7監(jiān)視窗口12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.3查看變量刪除監(jiān)視變量可以在監(jiān)視窗口列表中右擊鼠標(biāo),執(zhí)行彈出菜單中的“DeleteWatch”命令?!癉eleteAllWatch”命令可以刪除所有監(jiān)視變量或表達(dá)式。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程9.4.4其他調(diào)試方法與技巧在程序調(diào)試過程中,往往會(huì)因?yàn)槌绦虻腻e(cuò)誤導(dǎo)致程
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版奶粉生產(chǎn)廢棄物資源化利用服務(wù)合同范本頁24篇
- 2025版教育培訓(xùn)機(jī)構(gòu)品牌授權(quán)及門店移交合同3篇
- 二零二五年度農(nóng)機(jī)零部件進(jìn)出口貿(mào)易合同
- 2025年度綠色環(huán)保內(nèi)墻涂料工程高品質(zhì)施工服務(wù)合同4篇
- 二零二五年度面粉原料進(jìn)口關(guān)稅減免申請(qǐng)合同4篇
- 二零二五年度二手房買賣合同補(bǔ)充條款協(xié)議書(含交易透明)3篇
- 二零二五年度文化演出活動(dòng)贊助合同正規(guī)范本
- 二零二四年度嬰幼兒專用奶粉代理權(quán)租賃合同范本3篇
- 二零二五年度企業(yè)人力資源戰(zhàn)略規(guī)劃與實(shí)施合同范本9篇
- 2025年度個(gè)人與個(gè)人藝術(shù)品拍賣合同范本4篇
- 農(nóng)民工工資表格
- 【寒假預(yù)習(xí)】專題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級(jí)英語下冊(cè)寒假提前學(xué)(含答案)
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 100道20以內(nèi)的口算題共20份
- 高三完形填空專項(xiàng)訓(xùn)練單選(部分答案)
- 護(hù)理查房高鉀血癥
- 項(xiàng)目監(jiān)理策劃方案匯報(bào)
- 《職業(yè)培訓(xùn)師的培訓(xùn)》課件
- 建筑企業(yè)新年開工儀式方案
- 一例產(chǎn)后出血的個(gè)案護(hù)理
- 急診與災(zāi)難醫(yī)學(xué)課件 03 呼吸困難大課何琳zhenshi
評(píng)論
0/150
提交評(píng)論