当在 IBM i 上使用 Java 时,您可以使用 Qshell Interpreter 或者 CL 命令提供的 Java tools,在 Qshell 环境和 IBM i 环境上进行与 Java 开发有关的操作。本文主要介绍如何在 IBM i 上调试 Java 程序,对于在 IBM i 开发 Java 程序的其他环节不在此介绍。
调试在 IBM i 上运行的 Java 程序有很多种选择,其中最为方便有效的是使用 IBM i 提供的 IBM i System Debugger。IBM i System Debugger 提供了两种调试方式,在绿屏上直接使用 CL 命令行调试和使用图形化交互式人机界面调试(以下简称,IBM i System Debugger GUI)。本文主要站在使用者的角度介绍这两种调试方法。
首先为了能够调试 IBM i 的 Java Job ,JVM 必须被启动。它是是伴随调试功能的启动而启动的,调试引擎则负责 Java 程序的调试管理。当 JVM 启动时调试引擎运行,这是成功调试 Java 代码的关键所在。一旦 JVM 成功启动了调试引擎,Java Job 就可使用绿屏上的 CL 命令去调试,或者使用 IBM i System Debugger GUI 调试。在 IBM i 上使用调试命令时,只要我们设定了和调试有关的参数即可自动启动调试引擎,例如 OPTION(*DEBUG)、-g,不用特别设定和启动调试引擎有关的参数。
其次在调试 Java 程序之前要对 Java 源程序进行编译,这是任何程序被 CPU 执行前必须做的动作,目的是将源代码编译成机器可以识别的机器码。编译可调式的 Java 程序时,编译命令中一定要设定 Debug View 参数,这样 debugger 运行可执行程序时就会显示出当前执行指令对应的源代码,可以查看程序中定义的变量所对应的存储空间等。针对 Java 程序可被调试的编译,过程如下。输入 CL 命令 ' MD DIR (java) '
创建 IFS 下的 /java 目录,目的是把 IBM i 上要调试的 Java 源程序都放在 IFS 下的
/java 目录下,进行之后的编译。
输入 CL 命令 ' qsh '
进入 Qshell,如图 1 所示,java 即为 a) 创建的 java 目录,在此目录下存放将要进行编译的 Java 源程序。
输入 QSH 命令 ' cd /java ',输入 QSH 命令 ' javac -g sleep.java '
进入 java 目录下使用 javac 编译产生出可调试的 sleep.class ,其中参数 -g 不可或缺,就是之前提到的产生 Debug View 参数的 DEBUG option。在此建议把源代码文件 .java 文件和编译产生的 .class 文件放在 IBM i 同一个目录下,这样便于 debugger 查找文件,如图 2 所示。