Delphi应用程序的调试(四)The Debug Inspector
2021-07-14 15:14
标签:一个 nta pre lock cin 父类 程序 不用 body Debug Inspector使用户能查看诸如类和记录的数据对象,也可以用它来查看整数、字符数组等简单数据类型,但这类简单数据类型最好是用Watch List查看。Debug Inspector最大用途是用于查看类和记录。 只有在调试器下运行的程序暂停执行时,才能使用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被显示出来,此时用户可检查主窗体数据。 只能从类的方法内部查看Self。如果偶然在常规函数或过程中设置断点,并试图查看Self时,系统会显示一条错误消息,告诉用户Self是一个非法符号。如下图错误信息: 上面的例子中,Self是应用程序的主窗体。 为了详细讲解Debug Inspector页面的各个部分,我们先来设计一个简单的类,步骤如下: 1)选择主菜单【File | New | Other】,选择Console Application(控制台程序),新建一个控制台程序; 2)创建一个父类Animal和子类Dog;如下代码: 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页面上查看与某个属性相关的数据成员就能满足用户的需求。 仅当用户检查类时,Debug Inspector的Method页面和Properties页面才有效。当检查简单数据类型时,值显示Data页面。 如果用户希望Debug Inspector窗口总在Code Editor的上面,可到主菜单【Tools | Debugger Options…】的“Debugger Options”对话框的General页面上,选中“Inspectors stay on top”复选框。如下图: 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的速度,因为不用显示那么多的信息了。 如果用户忘记了类中某个数据成员的类型,可当程序暂停在断点时点击该数据成员,并按【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调试检查器(The Debug Inspector)
Note
Note
Debug Inspector页面(Debug Inspector Pages)
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.
Note
Tip
Debug Inspector快捷菜单(Debug Inspector Context Menus)
Tip
文章标题:Delphi应用程序的调试(四)The Debug Inspector
文章链接:http://soscw.com/index.php/essay/105161.html