Delphi应用程序的调试(四)The Debug Inspector

2021-07-14 15:14

阅读:494

标签:一个   nta   pre   lock   cin   父类   程序   不用   body   

 

调试检查器(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

标签:一个   nta   pre   lock   cin   父类   程序   不用   body   

原文地址:https://www.cnblogs.com/m0488/p/9533410.html


评论


亲,登录后才可以留言!