Tivoli 问讯台 6.0 开发工具包工具与公用程序指南

第 2 章:开发工具包调试器

返回目录


简介

开发工具包调试器用来调试开发工具包程序。使用开发工具包调试器可查看运行时代码的分步执行情况。

下列各节说明对开发工具包调试器进行操作的基本方法。后面的章节中包含有关对各种查看器进行操作的其他信息。

打开与关闭开发工具包调试器

打开开发工具包调试器

有几种启动开发工具包调试器的方式。开发工具包调试器以单步模式启动,即代码执行停止。然后可使用步步跟踪全程跟踪单步跟踪来调试代码。有关详细信息,请参见本节后面的跟踪代码中的执行路径那一节。

KML -t <.kbc 文件名>

退出开发工具包调试器

“运行”菜单包含两个可用来退出开发工具包调试器的命令:Close 与 Abort。

开发工具包调试器中的代码

简介

开发工具包调试器使您可在不出现实际源代码的情况下进行调试。(在开发工具包调试器中所见到的不是源代码的精确拷贝。) 重新组织源代码的过程会导致下列更改:

源格式 开发工具包调试器
x :=3*(5+4); x := 27;
源格式 开发工具包调试器
x :=c *(a+b); x :=c*a+b;
源格式 开发工具包调试器
3 June 1997 6, 3, 1997

处理代码

概述

开发工具包调试器有一个代码查看器,可显示 .kb 文件中的所有模块。这些模块包括:

查看函数

词法标签(位于代码查看器的右侧)提供了一种查看应用程序结构的高级方式。它包含您程序中的模块树和每一模块中相应的函数。

若选择要查看的函数:

  1. 在“词法”标签上,单击包含要查看函数的模块。
  2. 单击要查看的函数。
  3. 注:开发工具包调试器在遇到断点时自动显示函数。有关断点的详细信息,请参见本章后面的断点那一节。

查看变量

变量查看器用来查看存储的数据和本地与全局自变量的访问路径。

可以下列方式查看变量:

自动刷新变量

变量查看器可显示某一记录中所有字段的信息。如果任何字段更改其值,则整个变量查看器都刷新。

注:如果变量查看器正在访问的记录很大,则变量查看器要花一段时间才能刷新其本身。

要设置自动刷新变量:

  1. 在代码窗口,双击某一热点变量的名称。
  2. 选择“自动刷新”复选框。

注:对某一应用程序进行操作时,变量查看器在开发工具包调试器中可处于打开状态。

关闭变量查看器

只能通过选择系统菜单或在变量查看器对话框中选择“关闭”手动关闭变量窗口。

查看堆栈

堆栈位于代码查看器的下方。单击堆栈中的某一函数会使该函数显示在代码查看器中,而当前行高亮显示。

注:开发工具包函数是循环性的,即在同一开发工具包调试器阶段作业中可多次步步跟踪一个函数。函数名称在每次循环时都显示在堆栈查看器中。

单步跟踪某一函数时,其名称从堆栈中消失。

跟踪代码中的执行路径

简介

使用开发工具包调试器,可跟踪某一应用程序的执行路径。为执行此操作,开发工具包调试器提供了三个选项:

步步跟踪执行代码的下一行,而如果函数调用存在,则步步跟踪该函数。全程跟踪执行代码的下一行,但不进入函数调用。单步跟踪执行代码直到当前函数的结尾。

从“运行”菜单选择命令或单击“开发工具包调试器”工具条上的相应按钮可步步跟踪、单步跟踪或全程跟踪代码。此外,还提供了键盘快捷键:

对开发工具包调试器进行操作时,通过各级函数调用进行操作。每个函数可以有嵌套的函数调用。

步步跟踪函数

开发工具包调试器使您可步步跟踪代码中的函数并查看该函数中定义的操作。步步跟踪代码时,应切记下列事项:

执行下列操作之一可步步跟踪代码:

可继续步入某一函数,以转到该函数中定义的下一操作。最后,到达一个 END 语句。8此时,再次按“CTRL+I”使您返回到步步跟踪该代码的调用函数中的位置。

单步跟踪函数

单步跟踪某一函数时,执行当前函数、步骤或事件句柄,而不对其加以跟踪。您看不到代码每一行的执行情况。跟踪在调用后的第一个语句上重新开始。

注:如果单步跟踪一个事件句柄,则跟踪在生成该事件的语句处重新开始。如果已生成一个以上的事件,则跟踪在下一事件开始处重新开始。

每当执行停在某一函数体或事件句柄中时,可单步跟踪代码。也可在执行停止在断点时单步跟踪代码。

执行下列操作之一可单步跟踪代码:

全程跟踪代码

除步步跟踪与单步跟踪代码外,也可全程跟踪代码。全程跟踪代码跟踪语句级的执行路径。在到达下一语句之前执行仍继续进行。

注:如果全程跟踪的函数中有错误或断点,则执行停止。

执行下列操作之一可全程跟踪代码:

断点

概述

断点是停止运行时代码执行的一种方法,目的是检查有关执行的当前状态。执行期间遇到断点时,开发工具包调试器会显示包含所选断点行的函数。

注:不要在事件句柄正在处理 $MsgDDEInitiate 时在事件句柄中设置断点。$MsgDDEInitiate 向应用程序广播消息,并在返回响应之前锁定消息队列。触发断点会启动等待消息队列(已锁定)响应的事件句柄。这样会造成死锁,而死锁将有效锁定用户接口。

设置临时断点

临时断点仅在开发工具包程序执行时存在。在退出开发工具包调试器阶段作业时,临时断点自动清除。与函数查看器交互时设置这些断点。

要设置临时断点:

  1. 双击代码窗口中的某一行。显示 * 号,以表示断点。

注:必须在可执行的语句上设置临时断点。不能在以 ELSE 和 ELSEWHEN 语句开始的行上设置断点。

设置静态断点

可使用 BreakPoint 语句在开发工具包程序源代码中设置静态断点。可在有 "感兴趣" 的位置(如某一函数调用或事件的开始)添加一个 BreakPoint 语句。这样可使您在某一逻辑停止点停止应用程序并查看该应用程序的当前状态。删除 BreakPoint 语句的唯一方式是从源代码中删除它,然后重新分析应用程序。

其他 BreakPoint 使用

可创建一个菜单命令与 BreakPoint 语句相关联。这样可使您从应用程序启动开发工具包调试器。

如果 debug500.dll 不存在,则开发工具包调试器不运行。

调试窗口与对话框

概述

可通过在 WinCreateDlgCreate 上设置断点来调试窗口和对话框。这些语句识别处理窗口事件的事件句柄。

要跟踪 WinCreate 的执行,应步步跟踪 WinCreate,然后单步跟踪每个已生成的消息。

注:不要使用开发工具包调试器来跟踪显示、激活或鼠标处理。


Tivoli 问讯台 6.0 开发工具包工具与公用程序指南

返回目录

版权所有

-->