1. 程式人生 > >Delphi應用程序的調試(四)The Debug Inspector

Delphi應用程序的調試(四)The Debug Inspector

相關 num options chan bsp itl spa 檢查 ESS

調試檢查器(The Debug Inspector)

Debug Inspector使用戶能查看諸如類和記錄的數據對象,也可以用它來查看整數、字符數組等簡單數據類型,但這類簡單數據類型最好是用Watch List查看。Debug Inspector最大用途是用於查看類和記錄。

Note

只有在調試器下運行的程序暫停執行時,才能使用Debug Inspector。

要查看一個對象,點擊Code Editor中該對象的名字,並從Code Editor的快捷菜單中選擇【Inspect】菜單項或按【Alt + F5】,也可從主菜單選擇【Run | Inspect…】菜單項。

Debug Inspector窗口包含所選對象的詳細信息。如果要查看的對象時簡單數據類型,Debug Inspector窗口就會先顯示其當前值(十進制和十六進制兩種格式),且窗口底部的狀態行顯示其數據類型。例如,要查看一個整型變量,該變量的值就會被顯示出來,且狀態行上顯示“Integer”。在Debug Inspector窗口的頂部有一個組合框,它包含被查看對象的描述。

如果用Debug Inspector檢查一個類,則Debug Inspector窗口如下圖所示:

技術分享圖片

為了更好的理解Debug Inspector,請按下列步驟操作:

1)裝入前面創建的DebugTest程序,下載:WatchList測試程序.rar

2)在WatchBtnClick方法的某個位置設置一個斷點。如下圖:

技術分享圖片

3)運行該程序,並點擊Watch Test按鈕。調試器會停在設置的斷點處。

4)從主菜單【Run | Inspect…】,顯示Inspect對話框。

5)在Expression字段中輸入Self,點擊OK。

6)Debug Inspector被顯示出來,此時用戶可檢查主窗體數據。

Note

只能從類的方法內部查看Self。如果偶然在常規函數或過程中設置斷點,並試圖查看Self時,系統會顯示一條錯誤消息,告訴用戶Self是一個非法符號。如下圖錯誤信息:

技術分享圖片

上面的例子中,Self是應用程序的主窗體。

Debug Inspector頁面(Debug Inspector Pages)

為了詳細講解Debug Inspector頁面的各個部分,我們先來設計一個簡單的類,步驟如下:

1)選擇主菜單【File | New | Other】,選擇Console Application(控制臺程序),新建一個控制臺程序;

2)創建一個父類Animal和子類Dog;如下代碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 program DebugInspectorPage; {$APPTYPE CONSOLE} uses SysUtils; type TAnimal = class Name: string; end; TDog = class(TAnimal) Color: string; procedure Say(); end; var Dog: TDog; { TDog } procedure TDog.Say; begin Writeln(‘汪汪...‘); end; begin Dog := TDog.Create; Dog.Name := ‘小黃‘; Dog.Color := ‘黃色‘; Dog.Say; Dog.Free; end.

3)然後在end.結束前設置一斷點,如下圖:

技術分享圖片

4)保存該程序,保存工程為DebugInspectorPage.dpr;接下來運行該程序,在斷點處停止後,選擇【Run | Inspect】,增加一個Dog變量;

技術分享圖片

5)此時將顯示出Debug Inspector頁面,如下圖:

技術分享圖片

Data頁面中同時顯示出了父類和子類的數據字段,如果用戶只想查看子類的信息,可以點擊右鍵,在彈出的菜單中勾掉【Show Inherited】菜單項即可,

技術分享圖片

勾掉後如下圖:

技術分享圖片

6)如果要進一步查看一個數據成員,可以雙擊該數據成員所在行的值欄,會打開第二個Debug Inspector窗口,其中顯示所選的數據成員。可同時打開多個Debug Inspector窗口。

技術分享圖片

7)Debug Inspector的Method頁面顯示類的方法。在某些情況下,Method標簽頁不顯示(當顯示查看簡單數據類型時)。狀態欄顯示所選方法的聲明。如下:

技術分享圖片

8)Debug Inspector的Properties頁面顯示被查看類的屬性。查看類的屬性價值不大(所提供的信息沒有什麽特別用處)。大多數時候,在Data頁面上查看與某個屬性相關的數據成員就能滿足用戶的需求。

Note

僅當用戶檢查類時,Debug Inspector的Method頁面和Properties頁面才有效。當檢查簡單數據類型時,值顯示Data頁面。

Tip

如果用戶希望Debug Inspector窗口總在Code Editor的上面,可到主菜單【Tools | Debugger Options…】的“Debugger Options”對話框的General頁面上,選中“Inspectors stay on top”復選框。如下圖:

技術分享圖片

Debug Inspector快捷菜單(Debug Inspector Context Menus)

Debug Inspector窗口也有快捷菜單,用戶在Debug Inspector查看數據對象時,可使用這個快捷菜單。

技術分享圖片

例如,用戶可單擊鼠標右鍵並從快捷菜單選擇【Descend】菜單項,用選取的對象替換Debug Inspector窗口中的當前對象,而不必為每個對象打開一個Debug Inspector窗口。

再例如,要查看一個帶有Button1按鈕的窗體,可在Debug Inspector中選取Button1,並從快捷菜單中選擇【Descend】項或按【Ctrl+D】鍵,Debug Inspector就會去查看Button1對象了。這樣做的好處:IDE記錄所有被查看過的對象,如果要回過頭去看被查看過的對象,只需從Debug Inspector窗口頂部的組合框中選取對象即可。

【Change】菜單項用於改變變量的值。

Note

當用Debug Inspector改變變量的值時要特別小心。一旦改錯了數據成員或給數據成員指定非法值,都可能導致程序失敗。

【Inspect】菜單項使用戶能再打開一個Debug Inspector窗口,顯示光標當前選中的對象。

【New Expression】菜單項使用戶能輸入一個新的表達式,用於Debug Inspector中檢查。

【Show Inherited】菜單項決定Debug Inspector顯示信息的多少。當【Show Inherited】被選中時,Debug Inspector中顯示被檢查類的所有數據成員、方法和屬性,以及從祖先類中繼承的數據成員、方法和屬性。當【Show Inherited】沒有被選中時,只顯示被檢查類本身的數據成員、方法和屬性。關閉此菜單項可以加快Debug Inspector的速度,因為不用顯示那麽多的信息了。

Tip

如果用戶忘記了類中某個數據成員的類型,可當程序暫停在斷點時點擊該數據成員,並按【Alt + F5】顯示Debug Inspector。Debug Inspector窗口的底部狀態欄顯示該數據成員的數據類型。

以上代碼均在Delphi7中測試通過,代碼下載:DebugInspector頁面說明.rar

Delphi應用程序的調試(四)The Debug Inspector