调试器 - 发行说明

1.0 简介
2.0 已知问题
   2.1 Web 开发环境
   2.2 WebSphere Application Server 调试
   2.3 JavaScript 调试器
   2.4 SQL 存储过程调试器
   2.5 测试和部署工具(服务器工具)
   2.6 Java 开发工具(JDT)调试器
   2.7 本地语言限制
   2.8 SQL 存储过程调试器(Linux)
   2.9 SQLJ 调试器

1.0 简介

WebSphere Studio 中的调试器提供调试 Web 应用程序、服务器端 JavaScript、Java、SQLJ、SQL 存储过程和编译语言所需的工具。本自述文件描述与 WebSphere Studio 调试器相关联的已知问题与限制。

2.0 已知问题

2.1 Web 开发环境

JSP 调试:

2.2 WebSphere Application Server 调试

2.3 JavaScript 调试器

2.4 SQL 存储过程调试器

2.5 测试和部署工具(服务器工具)

当决定在调试方式下运行服务器时,请考虑下列各项:

2.6 Java 开发工具(JDT)调试器

Java 开发工具(JDT)发行说明和“工作台”(IDE)发行说明中提供了有关 Java 开发工具的已知问题与限制的信息。可从随此产品安装的主产品自述文件链接至这些发行说明。

2.7 本地语言限制

2.8 SQL 存储过程调试器(Linux)

当在本地数据库上调试“SQL 存储过程”时,可能接收到错误号 SQL1224N:

COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N 未能启动数据库代理进程以响应请求,或者数据库代理进程因为数据库系统关闭或强制命令而终止。SQLSTATE=55032

这是因为 Linux 内核(Linux 内核 Bugzilla 错误 #351)中的问题造成的。下列指示信息是一个变通方法,即,使用 DB2 的 TCPIP 连接方法(作为回送)而不是“调用级接口”(CLI)。此过程将允许调试器象以前一样使用同一数据库别名:

  1. 如果未对远程 DB2 客户机设置端口,则在 /etc/services 中创建 TCP/IP 端口(例如,db2cdb2inst1 50000/tcp # DB2 connection service port)。可使用远程 DB2 客户机的现有端口。

    下面的步骤 2 至 7 要求您作为 DB2 实例所有者登录。

  2. 配置数据库管理器以对 TCP/IP 通信协议启动连接管理器。如果不确定是否已执行此操作,发出以下命令:
    db2set db2comm

    如果输出不包含关键字 tcpip,需要输入以下命令以将 db2comm 注册表变量更新为包括 tcpip

    db2set db2comm=<existing protocol names>,tcpip

    db2comm 注册表变量确定在启动数据库管理器时将启用哪个协议的连接管理器。可通过用逗号隔开关键字来对多个通信协议设置此变量,例如,db2set db2comm=tcpip,appc

    需要重新发出 db2start 命令才能对 db2comm 注册表参数指定的协议启动连接管理器。因为将在下面的步骤 7 中重新启动 DB2,所以现在不需要这么做。

  3. 使用在 /etc/services(步骤 1)中定义的连接服务名称来更新 SVCENAME 数据库管理器配置参数。

    要检查 SVCENAME 的当前设置,输入以下命令:

    db2 get dbm cfg | grep -i svcename

    如果需要更新 SVCENAME 的设置,输入以下命令:

    db2 update dbm cfg using svcename <connection service name>

    其中 <connection service name> 是区分大小写的,且必须与放置在 /etc/services 中的服务端口的名称相匹配(例如,db2 update dbm cfg using svcename db2cdb2inst1)。

    在发出下一个 db2start 命令之前,数据库管理器配置的更新不起作用。我们将在下面的步骤 7 中执行此操作。

  4. 通过输入以下命令来编目回送节点:
    db2 catalog tcpip node <nodename> remote 127.0.0.1 server <connection service name>

    其中 <nodename> 是要编目的节点的本地别名。这是工作站上的任意名称,用来标识该节点(例如,db2 catalog tcpip node mynode remote 127.0.0.1 server db2cdb2inst1)。

    要验证该编目命令正常工作,发出以下命令:

    db2 list node directory

    此命令的样本输出为(为易于阅读,已除去空白行):

    Node Directory
    Number of entries in the directory = 1
    Node 1 entry:
    Node name = MYNODE
    Comment =
    Protocol = TCPIP
    Hostname = 127.0.0.1
    Service name = db2cdb2inst1
  5. 按如下所示编目数据库。如果希望跟踪每个命令的效果,查看下面给出的用来生成样本输出的命令:
    1. db2 catalog db <database name> as <database alias>
    2. db2 uncatalog db <database name>
    3. db2 catalog db <database alias as <database name> at node <nodename>
    例如,
    db2 catalog db WAS as WASLOOP
    db2 uncatalog db WAS
    db2 catalog db WASLOOP as WAS at node MYNODE

    注释:

    • 数据库别名可以是您想要的任何名称,但它不能与数据库名称相同。
    • 如果未正确编目数据库,将接收到错误号 SQL1334N。
    • 需要对希望在其上调试存储过程的每个数据库重复步骤 5a 至 5c。

    步骤 5a 至 5c 的样本输出

    在步骤 5a 之前,已创建名为 WAS 的本地数据库。db2 list db directory 命令具有以下输出:

    System Database Directory
    Number of entries in the directory = 1

    Database 1 entry:

    Database alias = WAS
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    在步骤 5a 之后,db2 list db directory 具有以下输出:

    System Database Directory
    Number of entries in the directory = 2

    Database 1 entry:

    Database alias = WAS
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    Database 2 entry:

    Database alias = WASLOOP
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    在步骤 5b 之后,db2 list db directory 具有以下输出:

    System Database Directory
    Number of entries in the directory = 1

    Database 1 entry:

    Database alias = WASLOOP
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    在步骤 5c 之后,db2 list db directory 具有以下输出:

    System Database Directory
    Number of entries in the directory = 2

    Database 1 entry:

    Database alias = WAS
    Database name = WASLOOP
    Node name = MYNODE
    Database release level = 9.00
    Comment =
    Directory entry type = Remote
    Catalog node number = -1

    Database 2 entry:

    Database alias = WASLOOP
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    要验证 catalog db 命令正常工作,发出下列两个命令(并查看下面的样本输出):

    db2 connect to wasloop
    db2 connect to was

    其中 db2 connect to wasloop 应打印连接信息,而 db2 connect to was 应给出 SQL1403N。

    db2 connect to wasloop 的样本输出:

    Database Connection Information
    System Database Directory

    Database server = DB2/6000 6.1.0
    SQL authorization ID = CTSUI
    Local database alias = WASLOOP

    db2 connect to was 的样本输出:

    SQL1403N 提供的用户名和/或密码不正确。SQLSTATE=08004
  6. 将认证机制更新为客户机认证。输入以下命令:
    db2 update dbm cfg using authentication client

    要验证命令正常工作,使用以下命令显示新设置:

    db2 get dbm cfg

    样本输出:

    ....
    Database manager authentication         (AUTHENTICATION) = CLIENT
    ....
  7. 重新启动 DB2 以刷新目录高速缓存。例如,
    db2stop
    db2start
  8. 对于 WAS,不需要更新 admin.config 文件。对于 Websphere 应用程序,不需要更改现有数据源配置。
  9. 如果想要删除数据库,执行下列操作:
    1. db2 attach to <nodename> user <userid> using <password>
    2. db2 drop db <database name>
      例如,db2 attach to MYNODE user myid using mypasswd
      db2 drop db WAS

2.9 SQLJ 调试器

当在使用 J9 JVM 进行调试的同时执行热交换时,如果调用堆栈上有任何 SQLJ 方法,都将获得废弃堆栈上的方法对话框。如果热交换的是 SQLJ 类,将在 JVM 中重新装入该类,但在下一次调用该类中的方法之前,您将不会看到正在执行的新代码。

如果热交换的是 SQLJ 类,则在当前调试会话期间,SQLJ 断点对此类不起作用。

返回到主自述文件