日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初级教程之---delphi调试

發布時間:2024/4/11 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初级教程之---delphi调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、準備調試?? ?

? Delphi 在 IDE 內部集成了一個調試器,因而對程序的調試不用離開集成開發環境(IDE)就可以進行。該調試器能夠控制程序的運行、監視程序的輸出、檢查和修改變量的值。

在調試程序之前,必須保證程序代碼已經沒有語法錯誤,還要正確設置一些選項。為此,需要使用【Project】菜單中的【Options】命令打開【Project ?Options】對話框。

打開【Compiler】對話框,選中【Debug information】復選框(默認為選中)。這樣,編譯器將把 所有的調試信息加到.dcu 文件和.exe 文件中。

VCL 的代碼都是仔細調試過的,一般不會有錯誤。如果仍然不放心,想跟蹤進入VCL的內部,則需要選中【Use Debug DCUs】復選框。 要說明的是,調試信息將使可執行文件增大,但不影響程序的性能和對內存的需求。

盡管如此,調試結束后,最好要打開【Project Options】對話框,在【Compiler】選項卡中,清除【Debug information】復選框,再重新編譯程序。這樣,程序中就不包含任何調試信息。要使用內部集成調試器來調試程序,還必須使用【Tools】菜單中的【Debugger Options】 命令打開【Debugger Options】對話框,選中【Integrateddebugging】

復選框(默認為選中)。否則,【Run】菜單中的調試命令將變灰。但要說明的是,內部集成的調試器可能會與某 些軟件沖突,從而引起應用程序運行異常。因此,在調試程序時最好把可能引起沖突的軟 件退出運行。

? ? 使用【Tools】菜單上的【Environment Options】命令打開【Environment Options】對話框,再打開【Preferences】選項卡。如果選中【Hidedesigners on run】復選框,當程序運行 時,【ObjectInspector】和【Form】設計器將關閉,以騰出屏幕上的空間。如果選中【Minimizeon run】復選框,當程序運行時,IDE 將最小化,以避免屏幕上內容太多太亂。不過,當程 序暫停運行時,IDE 的窗口會重新恢復成原始大小。

二、設置調試器的選項

1.? 設置調試器選項

要設置調試器的選項,可以使用【Tools】菜單中的【Debugger ?Options】命令打開

【DebuggerOptions】對話框,如圖 7.2 所示。在其中的【General】選項卡、【Event Log】 選項卡、【Language Exceptions】選項卡和【OS Exceptions】選項卡中,可以設置調試的一 些環境、配置及方法等。

2.?編譯指令


圖 7.2? ?【Debugger Options】對話框


默認情況下,上述設置對整個項目的所有單元都有效。不過,也可以讓這些設置只對部分單元有效,因為有些單元可能沒有問題,不需要調試。

要使某個單元不包含調試信息,就在這些單元中加入適當的編譯指令,例如:

[delphi]?view plaincopy
  • unit?Unit1;??
  • {$DEBUGINFO?OFF}??
  • interface??
  • …??

  • 3.? 自定義調試器的顏色

    在前面已提到,代碼編輯器可以用不同的顏色顯示不同的語法成分,在使用調試器調試程序時也有這個功能。例如,通常斷點用白底紅色表示,當前執行點用白底藍色表示。 要自定義調試器的顏色,可以使用【Tools】菜單上的【Editor Options】命令打開【Editor Properties】對話框,再打開【Colors】選項卡,在【Element】框中選擇某種語法元素,然后設置它的前景顏色和背景顏色。

    三、控制程序的運行

    3.1單步執行

    ? ?當調試信息編譯了程序后,就可以調試程序了,調試器將接管對程序運行的控制,但 程序的運行結果與在非調試狀態下運行沒有什么兩樣,包括建立窗口、接受用戶輸入、計算數值、響應事件、訪問數據庫等均照常進行。

    通過【Run】菜單中的【Step ?Over】命令,可以單步執行程序。所謂單步執行,就是 一次只執行一行(一個指令),這樣就可以知道哪一行或指令引起了運行期錯誤或邏輯錯誤。

    【StepOver】命令將把整個過程或函數當做一行。如果把幾條語句寫在一行上,調試 器將把這幾條語句當做一條語句。這樣,就無法單獨調試其中的某一個語句。如果把一條長語句分成幾行寫,調試器仍然把這幾行當做一行。

    調試器每執行一行,當前執行點就自動移到下一個要執行的行上,但不一定是源代碼的下一行。例如,若正在執行的是 goto 語句,當前執行點將移到 goto 語句跳轉到的行上。

    另外還有一種情況就是,如果開啟了優化編譯的選項,某些源代碼行將被合并或越過,這時候,當前執行點不會移到這些行上。

    為了清晰地看出當前執行點在哪兒,代碼編輯器將用白底藍色顯示當前執行點,同時,在“裝訂區”顯示一個綠色的箭頭指向當前執行點,如圖 7.3 所示。



    圖 7.3? ?當前執行點


    3.2跟蹤執行

    【Run】菜單中的【Trace? Into】命令用于跟蹤程序。與單步執行相似,這條命令一次 也只執行一行。不同的是,執行到有函數調用的行時,這條命令將進入函數的內部。

    如果程序鏈接了外部代碼諸如動態鏈接庫,只要動態鏈接庫包含了符號調試信息,就 可以跟蹤進入這些外部代碼。否則,調試器將把動態鏈接庫當做一行處理。

    在調試過程中,可以根據需要交替使用單步執行和跟蹤執行。例如,對有疑問的調用 命令使用跟蹤執行,使控制進入被調用部分內部,調試該被調用部分。而對有把握的調用命令使用單步執行,從而直接跳過被調用部分的調試,這樣能提高調試效率。

    【Trace Into】命令也能夠進入事件句柄的內部,就像進入一般的函數內部一樣。要注 意的是,OnPaint 事件是當應用程序的窗口需要重畫的時候觸發的,當進入處理該事件的句 柄內部時,代碼編輯器的窗口將推到前端。也就是說,此時窗口需要重畫了,這樣又將觸發 OnPaint 事件。而一旦進入處理 OnPaint 事件的句柄內部,代碼編輯器的窗口又將被推到 前端。如此反復,構成無限循環。要解決上述問題,必須把代碼編輯器與應用程序的窗口在屏幕上重新排列,不要相互覆蓋。

    程序往往大量調用了 VCL 的方法,一般情況下,不要跟蹤進入VCL 的內部,因為 VCL

    的源代碼一般是不會出錯的。如果懷疑 VCL 中可能出錯,或者想進入 VCL 方法的內部看 看方法是怎樣實現的,也可以進入 VCL 方法的內部。Delphi Enterprise 和 Delphi Professional 附帶了 VCL 的源代碼,而且還提供了帶調試信息的 VCL 庫。


    3.3?跳過一段代碼

    為了節省時間和提高工作效率,不必每次都從頭開始單步或跟蹤執行程序,可以直接 跳到有疑問的地方,然后再一行一行地執行程序。

    【Run】菜單中的【Run to Cursor】命令可以實現這個功能。它能夠先以非調試方式執 行到光標所在的行,再接管對程序的控制,單步或跟蹤執行以后的代碼。

    如果光標所在的行不包含調試信息,調試器將彈出一個錯誤框顯示“No ?code?wasgenerated for the current Line”。

    如果不小心進入了例程的內部,想馬上退出來,可以把光標移到該例程的最后一行,使用【Run to Cursor】命令,再使用【Step Over】命令,就可以返回到調用該例程的地方。

    3.4?? 全速執行剩余的代碼

    ?

    如果不小心進入了一個例程,但又不想調試這個例程,或者確信該例程的代碼沒有問題,從而想盡快退出這個例程,可以使用【Run】菜單中的【Run Until Return】命令。這個命令將全速執行該例程的代碼,直到返回為止。

    ?

    3.5?? 返回到執行點

    ?

    在調試過程中,隨時可以切換到 IDE 或其他程序中,進行各種操作。如果要重新回到調試器的當前執行點,可以使用【Run】菜單中的【Show ?Execution

    Point】命令,光標將自動回到先前的執行點上。 如果包含執行點的源文件已關閉,調試器將重新打開這個源文件。如果執行點沒有對

    應的源代碼,Delphi 將打開 CPU窗口,顯示相應的機器指令。

    ?

    3.6?? 暫停運行

    ?

    使用【Run】菜單中的【Program Pause】命令將使程序運行暫時停止,這樣就可以檢 查程序在此狀態下的輸出或變量的值是否正確,檢查完以后,可以繼續對程序進行調試, 或者修改變量的值再讓程序繼續執行,以便看程序對新的值會做出什么反應。

    有時候,程序暫停后無法回到調試器中繼續運行,這時候可以同時按— 下

    Ctrl+Alt+SysRq鍵終止程序的運行,如果按一次無效,就多按幾次。

    ?

    3.7?? 重新開始運行


    在調試過程中,可以使用【Run】菜單中的【Program Reset】命令中止程序的運行并釋 放所有占用的內存和資源,關閉所有打開的文件,清除所有的變量設置,然后重新運行程 序。這通常用于在調試過程中發現了錯誤并更改了源代碼后需要重新編譯和運行的情況。

    【Program Reset】命令并不刪除先前設置的斷點和觀察表達式,因為重新開始調試程 序時可能還要用到這些設置。

    【Program Reset】命令可能不能很“干凈”地釋放應用程序占用的所有資源,這樣可 能導致其他程序運行失敗,碰到這種情形應當退出 Delphi 或者重新啟動 Windows。


    3.8?? 命令行參數

    如果要調試的程序需要傳遞參數,可以使用【Run】菜單中的【Parameters】命令打開

    【Run???? Parameters】對話框,如圖 7.4 所示。

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 7.4? ?命令行參數

    在【Parameters】框內鍵入要傳遞的參數,也可以從以前鍵入過的參數中選擇一個。

    總結

    以上是生活随笔為你收集整理的初级教程之---delphi调试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。