delphi初级教程之delphi断点调试一
所謂斷點,就是在程序代碼的某一行上設置一個標記,程序執行到這里將暫停,由調 試器接管對程序的控制。使用斷點與使用【Runto Cursor】命令有些相似,都是執行到某 一行后暫停。不同的是,程序中可以設置多個斷點并且能夠給斷點設置條件。
斷點通常設置在有疑點的區域。在遇到斷點之前,程序以全速運行。遇到斷點之后,程序暫時停止運行,以后就可以單步或跟蹤執行程序。
一、源代碼斷點
要在代碼編輯器中設置源代碼斷點,有以下 4 種操作方式。
(1) ?把光標移到要設為斷點的行上,按下 F5 鍵。
(2) ?用鼠標左鍵單擊要設為斷點的行的最左端。
(3)?用鼠標右鍵單擊要設為斷點的行,在彈出的菜單中選擇【Debug】命令,再選擇【ToggleBreakpoint】。
(4) ?使用【Run】菜單中的【Add Breakpoint】 命令,再選擇【SourceBreakpoint】,Delphi 將 打開【Add Source Breakpoint】對話框,如圖 源代碼斷點1所示。
【Filename】框用于輸入斷點所在的源文件名(包含路徑)。
【Line number】框用于輸入斷點所在的行號。
【Condition】框用于設置斷點有效的條件,通常是一個布爾表達式。布爾表達式中可 以包含函數調用,只要該函數返回布爾值即可。
當程序執行到這個斷點時,首先計算該布爾表達式的值。如果值為 True,則斷點有效, 程序將暫停運行。如果值為 False,則斷點無效,程序將繼續執行。
【Pass count】框用于指定經過斷點多少次后斷點有效。例如,在一個 For 循環中設置 一個斷點,每次循環時都會遇到這個斷點。但并非每次遇到斷點時程序都會暫停,因為還需要經過一定次數后斷點才有效。
【Group】框用于對斷點進行分組。可以在這個框內輸入一個新的組名,也可以選擇一 個已有的組名。一旦若干個斷點編成組,就可以分別使用【Disable Group】命令和【Enable Group】命令成組地被禁止或允許它們,還可以給一組斷點指定一系列動作。
注意:設為斷點的行必須是可執行的代碼行。如果把斷點設在注釋行、空行、變量聲明的行上,調試器將認為斷點無效。
默認情況下,斷點所在的行用白底紅字顯示,并且在裝訂區有一個紅色的小圓圈。如圖 源代碼斷點2所示。
? ? ? ? ? ? ? ? ? ? ? 源代碼斷點1
? ? ? ? ? ? ? ? ? ? ? 源代碼斷點2
當鼠標指向這個小圓圈時,將彈出一個提示窗口,顯示斷點的條件和經過次數。
二、機器指令斷點
Delphi 允許針對某個機器指令設斷點。當程序執行到這個指令時,就會暫停(必須執行到 斷點處設置)。要設置機器指令斷點,有下列幾種方式。
(1) ?在 CPU 窗口中用鼠標左鍵單擊某個指令 的裝訂區。
(2) ?在 CPU ?窗口中選擇一個指令,然后按F5鍵。
(3) ?在 CPU 窗口中用鼠標右鍵單擊某個指令, 在彈出的菜單中選擇【Toggle breakpoint】命令。
(4) ?使用【Run】菜單中的【Add Breakpoint】命令,再選擇【Address Breakpoint】,彈出【Add?Address Breakpoint】對話框,如圖 機器斷點1所示。
? ? ? ? ? ? ? ? ? 機器斷點1
三、數據斷點
Delphi 能夠監視指針錯誤。如果內存的某個地址被改寫,程序就會暫停,由調試器接管控制權,就好 像遇到斷點一樣。
要設置這樣的斷點,可以使用【Run】菜單中的【Add Breakpoint】命令,再選擇【Data Breakpoint】, 出現【Add Data Breakpoint】對話框,如圖 數據斷點1所示。
【Address】框用于指定要監視的內存地址。可以鍵入一個變量名。
【Length】框用于指定數據的長度(字節數)。如果 在【Address】框中鍵入的是一個變量名,則【Length】
圖 ?數據斷點1? ?【Add Data Breakpoint】對話框框可以空白,因為 Delphi 會自動計算出該變量的長度。
【Condition】框用于設置斷點有效的條件,通常是一個布爾表達式。
【Pass count】框用于指定經過斷點多少次后斷點有效。
【Group】框用于把斷點進行分組。 要說明的是,當本次調試結束時,所有的數據斷點都會被禁止。下次調試時,如果還要用到這些數據斷點,需要使它們有效。
總結
以上是生活随笔為你收集整理的delphi初级教程之delphi断点调试一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初级教程之---delphi调试
- 下一篇: delphi初级教程之delphi断点调