📄 030.htm
字号:
<p> </font>1.<font face="宋体" lang="ZH-CN">选中要监视的表达式;</p>
<p> </font>2.<font face="宋体" lang="ZH-CN">从</font>Code Editor<font
face="宋体" lang="ZH-CN">加速菜单中选择</font>Add Watch<font face="宋体"
lang="ZH-CN">把表达式添加到监视列表窗口。</p>
<p> 也可以利用下面的方法产生一个监视表达式:</p>
<p> </font>1.<font face="宋体" lang="ZH-CN">用下列方法之一打开监视属性对话框</font>(Watch
Properties Dialog Box)<font face="宋体" lang="ZH-CN">:</p>
<p>●主菜单中选择Run|Add Watch</p>
<p>●在光标处从Code Editor加速菜单中选择Add Watch</p>
<p> ●按Ctrl-F5</p>
<p> ●双击监视列表窗口中的一个监视表达式</p>
<p> ●从监视列表窗口选定一个表达式而后从加速菜单中选择Edit</p>
<p> 2.在监视属性对话框的Expression下拉列表框中输入或选择一个被监视的表达式;</p>
<p> 3.设定表达式的显示格式和使能状态。</p>
<p> 与断点类似,利用加速菜单也可以使监视表达式功能丧失、恢复或删除监视表达式。 </p>
<p>12.4.4.2 计算/修改表达式 </p>
<p> 选择Run|Evaluate /Modify可打开计算/修改对话框。当单击Evaluate按钮时,Expression编辑框中表达式的值显示在Result域中。</p>
<p> </font>Expression<font face="宋体" lang="ZH-CN">中可以输入或选择任何合法的表达式</font>(<font
face="宋体" lang="ZH-CN">包括对象的属性</font>)<font face="宋体" lang="ZH-CN">,但不包括;</p>
<p> </font>1.<font face="宋体" lang="ZH-CN">包含有当前执行点不能引用的局部或静态变量的表达式;</p>
<p> </font>2.<font face="宋体" lang="ZH-CN">函数或过程调用。</p>
<p> </font>Expression<font face="宋体" lang="ZH-CN">中的表达式可以带特定的格式字符用于规定其显示格式。</font>
<font face="宋体" lang="ZH-CN">格式字符及其功能如下表。 </p>
<p> 表</font>12.8<font face="宋体" lang="ZH-CN"> 格式字符及其功能</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font></p>
<p><font face="宋体" lang="ZH-CN">格式字符 功 能</font></p>
<p><font face="宋体" lang="ZH-CN">─────────────────────────────────</p>
</font><p>$,H,X <font face="宋体" lang="ZH-CN">以十六进制格式显示标量</p>
</font><p>D <font face="宋体" lang="ZH-CN">以十进制格式显示标量</p>
</font><p>C <font face="宋体" lang="ZH-CN">把</font>ASCII<font face="宋体"
lang="ZH-CN">码在</font>0..31<font face="宋体" lang="ZH-CN">的特殊字等显示为</font>ASCII<font
face="宋体" lang="ZH-CN">码图形</p>
</font><p>Fn <font face="宋体" lang="ZH-CN">用</font>n<font face="宋体" lang="ZH-CN">个有效数字显示浮点数</p>
</font><p>M <font face="宋体" lang="ZH-CN">以十六进制方式显示一变量的内存转储值</p>
</font><p>P <font face="宋体" lang="ZH-CN">以段和偏移量格式显示指针。两部分皆为四位十六进制值</p>
</font><p>R <font face="宋体" lang="ZH-CN">显示记录、对象的域名和值</font>(<font
face="宋体" lang="ZH-CN">例如</font> X<font face="宋体" lang="ZH-CN">:</font>5<font
face="宋体" lang="ZH-CN">,</font>Y<font face="宋体" lang="ZH-CN">:</font>2)</p>
<p>S <font face="宋体" lang="ZH-CN">用</font>ASCII<font face="宋体" lang="ZH-CN">码显示字符串</font>(<font
face="宋体" lang="ZH-CN">包括特殊字符</font>)<font face="宋体" lang="ZH-CN">。用于修改内存转储值</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font></p>
<font face="宋体" lang="ZH-CN"><p> 修改表达式的值常用于验证错误解决方案的正确性。在</font>Expression<font
face="宋体" lang="ZH-CN">编辑框中输入或选定欲修改的表达式,单击</font>Evaluate<font
face="宋体" lang="ZH-CN">按钮观察表达式的当前值。而后在</font>New Value<font
face="宋体" lang="ZH-CN">编辑框中输入或选中一个新值,并单击</font>Modify<font
face="宋体" lang="ZH-CN">按钮确认并更新数据项。这种修改只影响特定的程序运行。</p>
<p> 修改表达式的值</font>(<font face="宋体" lang="ZH-CN">特别是指针变量和数组下标</font>)<font
face="宋体" lang="ZH-CN">可能会引起无法预计的后果。因而使用中要特别小心。 </p>
</font><p>12.4.4.3 <font face="宋体" lang="ZH-CN">显示函数调用 </p>
<p> 选择</font>View|Call Stack<font face="宋体" lang="ZH-CN">可以显示调栈窗口</font>(Call
Stack Window)<font face="宋体" lang="ZH-CN">。调栈窗口的顶端列出了应用程序最近的函数调用。</font></p>
<p>利用调栈窗口可以退出当前跟踪的函数,可以利用加速菜单项显示或编辑位于特定函数调用处的源代码</p>
<p>12.5<font face="宋体" lang="ZH-CN"> 其它调试工具 </p>
<p> </font>Delphi<font face="宋体" lang="ZH-CN">的内置调试器虽然功能很强大,但并不能胜任所有的任务。同时由于内置调试器在执行中引起程序环境的细微变化,所以可能影响错误的发生方式。为此我们需要使用其它调试工具来完成我们的任务。这些调试工具包括</font>Turbo
Debugger<font face="宋体" lang="ZH-CN">、</font>WinSight<font face="宋体"
lang="ZH-CN">、</font>WinSpector<font face="宋体" lang="ZH-CN">和</font>Browser<font
face="宋体" lang="ZH-CN">。</font>Browser<font face="宋体" lang="ZH-CN">将在下一节中专门进行介绍。 </p>
</font><p>12.5.1 Turbo Debugger </p>
<p>Turbo Debugger<font face="宋体" lang="ZH-CN">是</font>Borland<font face="宋体"
lang="ZH-CN">公司推出的第三代语言调试器,它虽然还没有推出完全支持</font>Delphi<font
face="宋体" lang="ZH-CN">的新版本,但也基本能胜任一般</font>Delphi<font
face="宋体" lang="ZH-CN">程序的调试。</p>
<p> </font>Turbo Debugger<font face="宋体" lang="ZH-CN">在字符模式下执行,但它是一个真正的</font>Windows<font
face="宋体" lang="ZH-CN">程序,它仅使用基于字符的界面。由于</font>Turbo
Debugger<font face="宋体" lang="ZH-CN">是一个准备控制其它程序的特殊程序,因此不可以使用通常</font>Windows<font
face="宋体" lang="ZH-CN">任务切换功能如</font>Alt+Tab<font face="宋体"
lang="ZH-CN">。</font></p>
<p>Turbo Debugger<font face="宋体" lang="ZH-CN">的操作大部分与内置调试器相同或类似。利用</font>File|Open<font
face="宋体" lang="ZH-CN">菜单装入要调试的文件就可以开始一个调试过程。</p>
<p> 利用</font>Turbo Debugger<font face="宋体" lang="ZH-CN">必须把调试符号信息储存在可执行文件中。具体操作见</font>(12.
4.1.1)<font face="宋体" lang="ZH-CN">中介绍。</p>
<p> </font>Turbo Debugger<font face="宋体" lang="ZH-CN">与内置调试器相比,有许多新的功能。</p>
<p> 首先它提供了许多在低级硬件信息方面的控制。可以完全访问</font>CPU<font
face="宋体" lang="ZH-CN">的寄存器、标志及系统内存。用户可以跟踪远指针到内存位置并直接检查它们的内容。</font>Turbo
Debugger<font face="宋体" lang="ZH-CN">可以跟踪进到代码中,即使得不到源代码也可以。</p>
<p> </font>Turbo Debugger<font face="宋体" lang="ZH-CN">支持许多</font>Windows<font
face="宋体" lang="ZH-CN">的特殊功能。它可以跟踪</font>Windows<font
face="宋体" lang="ZH-CN">消息,让用户查看程序的局部堆和全局堆,并可以浏览包括</font>DLLs<font
face="宋体" lang="ZH-CN">在内的组成程序的所有代码单元列表。</p>
<p> 另外</font>Turbo Debugger<font face="宋体" lang="ZH-CN">支持远程执行能力。可以通过串口链接或通过支持</font>NetBIOS<font
face="宋体" lang="ZH-CN">的网络配置</font>Turbo Debugger<font face="宋体"
lang="ZH-CN">控制另外一台机器。在这种模式下,一台机器显示调试器屏幕,另一台机器显示被跟踪的程序。这允许在一个屏上单步执行程序并在另一屏上监视结果。 </p>
</font><p>12.5.2 WinSight</p>
<font face="宋体" lang="ZH-CN"><p> </font>WinSight <font face="宋体" lang="ZH-CN">是一个用于查看</font>Windows
<font face="宋体" lang="ZH-CN">对象并跟踪消息的发送和接收的调试工具。</font>WinSight<font
face="宋体" lang="ZH-CN">的图标可以在</font>Delphi<font face="宋体" lang="ZH-CN">程序组中找到。</font></p>
<p>WinSight<font face="宋体" lang="ZH-CN">界面分为两部分,上面为对象树窗口,下面为消息跟踪窗口。如图</font>12.9<font
face="宋体" lang="ZH-CN">所示。</p>
<p> 在实际应用中,用户可能只是对其中的一部分消息感兴趣,而又不希望它们淹灭在无用信息之中。为此,用户可以打开</font>Message<font
face="宋体" lang="ZH-CN">菜单并选择</font>Selected Windows<font face="宋体"
lang="ZH-CN">。按住</font>Shift<font face="宋体" lang="ZH-CN">键,单击对象树窗口中感兴趣的对象,所选定对象的任何消息都显示在消息跟踪窗口中。</p>
<p> 如果用户只想跟踪某些消息类,则打开</font>Message<font
face="宋体" lang="ZH-CN">菜单并选择</font>Options <font face="宋体" lang="ZH-CN">,使用如图</font>12.10<font
face="宋体" lang="ZH-CN">所示的检查框过滤消息。 </font></p>
<p>12.6.6 <font face="宋体" lang="ZH-CN">小结 </p>
<p> 本章介绍的内容,核心是如何增强程序的健壮性并提高开发效率。为此我们首先考察了</font>Delphi<font
face="宋体" lang="ZH-CN">的异常处理机制,而后介绍了几种程序调试工具,在您即将结束基础篇的学习时,这些内容是您步入开发大型应用程序的高级程序员行列的必备武器。</p>
<p> </font></p>
<BR>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" bgcolor="#e0e0e0"><strong><A HREF="031.htm"><FONT style="FONT-SIZE: 9pt">后一页</font></A><BR>
<A HREF="029.htm"><FONT style="FONT-SIZE: 9pt">前一页</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目录</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首页</font></A><BR>
</strong>
</TD>
</TR>
</table>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -