调试检查器(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的更多相关文章

  1. Delphi应用程序的调试(五)其他调试工具

    Delphi应用程序的调试(五)其他调试工具 Delphi7中提供了一些附加调试工具来帮助用户检查程序错误.从性能上讲,其中一些工具属于高级调试工具.尽管高级调试工具不像其他工具那样常用,但对于经验丰 ...

  2. Delphi应用程序的调试(二)使用断点

    Delphi应用程序的调试(二)使用断点 使用断点(Using Breakpoints) 当用户从Delphi IDE 运行程序时,程序全速运行,只会在设置了断点的地方停住. New Term 断点( ...

  3. Delphi应用程序的调试(十)调试器选项(在IDE中不要使用异常)

    可在两个级别上设置调试选项:工程级和环境级.在前面的讲解中讲解了工程级调试选项,通过主菜单[Project | Options…]打开如下对话框: 可在Debugger Options对话框中设置全局 ...

  4. Delphi应用程序的调试(十)调试器选项

    可在两个级别上设置调试选项:工程级和环境级.在前面的讲解中讲解了工程级调试选项,通过主菜单[Project | Options…]打开如下对话框: 可在Debugger Options对话框中设置全局 ...

  5. Delphi应用程序的调试(六)步进式代码调试

    步进式代码调试(Stepping Through Your Code) 步进式代码调试是最基本的调试操作之一,但仍要在此讲述.人们常常容易犯只见树木不见森林的错误.经常复习基本的知识有助于读者了解以前 ...

  6. Delphi应用程序的调试(三)监视变量

    监视变量(Watching Variables) 当程序停在一个断点处时,用户做些什么呢?通常用户在断点处停下来是要检查变量的值,某个变量的值是否与预料的取值相同?或者某个变量取什么值(事先并不知道这 ...

  7. Delphi应用程序的调试(一)

    集成式调试器是Delphi IDE的一个重要特性.该调试器使用户能方便地设置断点.监视变量.检查对象等等.在运行程序时,使用该调试器能快速查找出程序发生了什么(或未发生什么).一个号的调试器对程序开发 ...

  8. 黄聪:C#程序中判断是否处在DEBUG调试状态或者RELEASE发布状态

    习惯了用老方式(注释的方式)来对程序进行调试,不过昨天才发现这样调试存在很大的隐患:在工程发布的时候如果忘记把该注释的代码注释掉,而让这些调试信息随工程一起发布,如果是可见的调试信息倒好发现,如果不是 ...

  9. 【经验随笔】Java程序远程调试定位特定运行环境上出现的问题

    Java后台程序远程调试 第一步:在JVM的启动参数中增加-Xdebug -Xrunjdwp:transport=dt_socket,address=6688,server=y,suspend=n 第 ...

随机推荐

  1. SecureCRT连接linux,vim颜色显示问题

    为什么使用VIM?由于具有颜色显示的功能.而且还支持很多程序语法.VIM能够帮助你直接进行程序除错.可是在SecureCRT连接Linux后显示就是黑白,感觉非常不爽! ! 怎么办? vim编敲代码也 ...

  2. EF5+MVC4系列(6) 简单三层的搭配(泛型) 实现 增删改查

    1:项目结构 2:每层添加对其他层的引用,这里我们把除了Web层之外的所有的层生成的文件都放到解决方案下的Library文件夹下,然后每个项目分别来引用里面的dll项目文件. 我们在Model项目上, ...

  3. html固定宽度下拉框内容显示不全问题解决方法

    不少时候在页面中为了布局的需要,下拉列表<select>的宽度需要设成比较小的值,这时如果恰巧它包含的选择项<option>的内容比较长,那么超出select宽度的部分将会被截 ...

  4. tracert

    TRACERT命令 编辑 Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP数据包访问目标所采取的路径.Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确 ...

  5. MYSQL之You can't specify target table for update in FROM clause解决办法

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...

  6. Fedora26 tftp-server设置

    安装tftp-server yum install -y  tftp-server 启动软件 systemctl start tftp.socket systemctl enable tftp.soc ...

  7. Js参数值中含有单引号或双引号解决办法

    <script type="text/javascript"> function Display(LoginEmail, UserName, ID) {         ...

  8. UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数

    lienhua342014-11-05 sigaction 函数跟 signal 函数一样,用于设置信号处理函数.此函数是用于取代 UNIX 早期版本使用的 signal 函数.UNIX 早期版本的 ...

  9. 2. 自动化运维系列之Cobbler给Openstack节点安装操作系统。

    preface 我们在一篇博文知道了如何搭建Cobbler,那么下面就通过Cobbler来安抓Openstack所有节点吧. 服务器配置信息如下: 主机名 IP 角色 Cobbler.node.com ...

  10. ADCD 1.9 ZOS 配置 CTCI-W32 TCPIP 网络

    试验步骤:两步走,第一步修改Hercules的配置文件 在hercules 配置文件末尾加上    0E20-0E21 CTCI     -n 0A-00-27-00-00-00  192.168.5 ...