练习 2.3:调试

EGL 调试器允许您监视变量、程序和 PageHandler,从而可帮助您找到代码中存在的问题。在调试时,需在程序、PageHandler 或函数中设置断点。断点使逻辑部件暂停并允许您检查变量以了解函数的工作情况。调试允许您跟踪产生错误的确切位置或变量值更改的位置,从而可帮助您找到产生问题的位置。在此练习中,将假定在练习 1.4:记录中创建 RecordTest.jsp 页面存在问题以练习调试该页面。

有关调试 EGL 应用程序的更多信息,请参阅帮助中的 EGL 调试器

在代码中设置断点

可以在代码的任何可执行的行上设置断点,例如以下行:

不能在数据部件定义中的任何位置、创建变量时或逻辑部件的开头或结尾设置断点。例如,不能在以下任何代码行上设置断点:

在下面的步骤中,将断点添加至 RecordTest.egl 文件。然后,在服务器上通过使用这些断点调试此文件。

  1. 打开 RecordTest.egl 文件。要找到此文件,可以从 EGLSource 文件夹中的 pagehandlers 包打开它,也可以打开 RecordTest.jsp 文件然后打开它的页代码文件,即 RecordTest.egl。
  2. 在 RecordTest.egl 文件中,在编辑器中的 move " " to personInput; 这一行左边的灰色区域中进行双击以在这一行设置断点。

    一个表示断点的蓝点将出现在该代码行的左边。当以调试方式运行此页面时,此断点会在将要运行 move " " to personInput; 这一行之前暂停执行。

    如果没出现蓝点,则确保单击 EGL 编辑器左边紧靠 move " " to personInput; 这一行左边的灰色边框。RecordTest.egl 文件看起来应如下所示:

    RecordTest.egl 文件的已裁剪视图

  3. 在以下每一行中设置断点:

准备调试应用程序

要调试 EGL 逻辑部件,必须在已经配置为可以调试 EGL 应用程序的服务器上运行该逻辑部件。以下步骤设置服务器以调试 EGL 应用程序。

  1. 打开“服务器”视图。WebSphere Application Server V6.0 就列示在此视图中。您已经在前面的 EGL 教程中定制了此服务器。
  2. 如果服务器未在运行,则启动服务器。
    1. 在“服务器”视图中,单击 WebSphere Application Server V6.0
    2. 单击“服务器”视图的顶部的启动 按钮,而不是单击工作台顶部外形类似的按钮。
    3. 请等待,直到“服务器”视图中服务器的状态列示为已启动
  3. 启动了服务器之后,在“服务器”视图中右键单击 WebSphere Application Server V6.0,然后从弹出菜单中单击启用/禁用 EGL 调试。将打开“EGL 调试”窗口,显示的是消息“在该服务器上已经启用了 EGL 调试”。

    如果“EGL 调试”窗口显示“在该服务器上已经禁用了 EGL 调试”,则已经将服务器设置为可以调试 EGL 应用程序。单击确定,然后重复步骤 3 以再次启用它。

    如果弹出菜单中没有启用/禁用 EGL 调试,则服务器未启动。启动服务器,然后再试。

  4. 在“EGL 调试”窗口中,单击确定
  5. 再次右键单击 WebSphere Application Server V6.0,然后从弹出菜单中单击重新启动 > 调试。服务器将以调试方式重新启动。
  6. 请等待,直到“服务器”视图中服务器的状态列示为调试。现在服务器就已经准备好调试 EGL 文件了。
  7. 在“项目导航器”视图中,右键单击 RecordTest.jsp,然后从弹出菜单中单击调试 > 在服务器上调试。将打开“选择构建描述符”窗口。
  8. 在“选择构建描述符”窗口中,选择 EGLWebWebBuildOptions (EGLWeb/EGLSource/EGLWeb.eglbld)
  9. 选择设置为此程序的缺省调试构建描述符复选框。
  10. 单击确定。与往常一样,Web 页面将在 Web 浏览器中打开。
  11. 在 Web 浏览器中,单击初始化记录按钮。可能会打开“确认透视图切换”窗口。

    “确认透视图切换”窗口会提示您切换到“调试”透视图。如果没有看到此窗口,并且工作台已经直接转到“调试”透视图却没有提示您,则表明您已经将工作台设置为切换到透视图而不提示您。如果想要工作台在切换到透视图之前提示您,则可以在“首选项”窗口中更改此选项。

  12. 如果看到“确认透视图切换”窗口,则单击以转至“调试”透视图。

使用“调试”透视图

到目前为止,您在整个 EGL 教程中使用的透视图是 Web 透视图,而“调试”透视图却提供了不同于 Web 透视图的视图排列方式。可以通过单击窗口 > 打开透视图 > 其它来打开新的透视图。还可以通过单击工作台右上方透视图的图标来在打开的透视图之间切换。

以下是“调试”透视图中某些视图的描述:

变量
“变量”视图列示应用程序中的变量以及它们的当前值。在此示例中,“变量”视图显示 RecordTest PageHandler 中的两个记录变量以及它们的当前值。
断点
“断点”视图列示已添加至应用程序的所有断点。在此示例中,“断点”视图列示先前在此练习中已添加至 PageHandler 的四个断点。
调试
“调试”视图(不要与“调试”透视图混淆)列示应用程序中的线程。可以将这些线程想象成服务器作为运行应用程序的一部分执行的活动。此视图指示应用程序何时在断点处暂停。
服务器
“服务器”视图就是在 Web 透视图中曾经用过的那个“服务器”视图。与所有视图一样,不管它在哪个透视图中,它的工作方式都是一样的。
编辑器
“编辑器”视图显示打开的 EGL、JSP 或其它文件,就如在 Web 透视图中出现的方式一样。当前,它显示的是 RecordTest.egl 文件,而 Web 浏览器显示 RecordTest.jsp 页面。

现在,服务器就会在添加至 initializeRecord() 函数的断点处暂停。通过将表示断点的蓝点更改为蓝色箭头,“编辑器”指示它在断点处暂停,如下图所示:

显示 RecordTest.egl 文件暂停在断点处的“编辑器”视图

在下面的步骤中,将查看和更改“变量”视图中的变量并从暂停的断点处继续执行应用程序。在实际的 EGL 应用程序中,将使用此技术来监视变量和应用程序的进度,但在此示例中,主要是练习如何使用调试器。

  1. 在“变量”视图中,展开 RecordTest > personInput > NameRecordTest > personInput > Address

    “变量”视图看起来应如下所示:

    “变量”视图的外观

    “变量”视图显示 personInput 记录变量中每个字段的值。由于在执行 personInput.Address.City = "Any City"; 这一行之前,断点已经暂停了应用程序,所以只给变量中的前三个字段赋了值。当继续执行应用程序时,initializeRecord() 函数将继续并将给余下的所有字段赋值。

  2. 在“变量”视图中,双击 Street = "123 Maple Street。将打开“设置值”窗口。
  3. 在“设置值”窗口中,将字段的当前值替换为 456 Elm Lane。“设置值”窗口看起来应如下所示:

    “设置值”窗口的外观

  4. 单击确定。这就会更改“变量”视图中 Street 字段的值。它是用红色突出显示的,以便提醒您已经手工更改了此字段。
  5. 在“调试”窗口中,单击继续 按钮 。应用程序就会继续 initializeRecord() 函数。Web 浏览器中的页面就会更新,与往常运行该页面时一样,但这一次它显示您已经更改的值:

    Web 浏览器中 Web 页面的外观

  6. 继续使用“调试”透视图,在断点处停止并更改变量值。

将服务器运行为正常方式

完成了调试之后,将服务器返回到正常方式。

  1. 在“服务器”视图中,右键单击 WebSphere Application Server V6.0 并从弹出菜单中单击重新启动 > 启动。服务器将以正常方式重新启动。

当您想要调试应用程序时,可随时使服务器返回到调试方式。

继续模块 3:使用 EGL 管理业务逻辑

反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.