跌打滚爬中的小菜鸟...
分类: Java
2013-08-09 11:05:04
当在 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 程序可被调试的编译,过程如下。
创建 IFS 下的 /java 目录,目的是把 IBM i 上要调试的 Java 源程序都放在 IFS 下的
/java 目录下,进行之后的编译。
进入 Qshell,如图 1 所示,java 即为 a) 创建的 java 目录,在此目录下存放将要进行编译的 Java 源程序。
进入 java 目录下使用 javac 编译产生出可调试的 sleep.class ,其中参数 -g 不可或缺,就是之前提到的产生 Debug View 参数的 DEBUG option。在此建议把源代码文件 .java 文件和编译产生的 .class 文件放在 IBM i 同一个目录下,这样便于 debugger 查找文件,如图 2 所示。
方法一,在 IBM i 绿屏上使用 CL 命令调试 Java 程序
设置环境变量 CLASSPATH 为 /java,即 Java 的 .class 文件存放在此目录下。
使用 CL 命令 JAVA,CLASS(sleep) 中的 sleep 为要调试的 Java 程序的名字。其中设定
参数 OPTION(*DEBUG) 来启动系统调试器执行 Java 程序。这里特别注意,只能调试一个 .class 文件,如果有一个 JAR 文件的文件名做为参数 CLASS 的关键字去调试,OPTION(*DEBUG) 参数是不被支持的。
可以把光标移至要设定断点的指令行处,Press F6 设置断点或者直接输入调试指令
'Break + 行号' 在调试指令行上(参考图 4)。
Java 程序在调试过程中可以在程序运行停止的开始位置或者程序运行停止的断点位置
使用 step(F10) 单步执行程序,包括对程序调用的任何 function 的 step over 和 step
Into (F22) 的执行。如果继续执行程序,Press F12(Resume)(参考图 5)。
在程序调试运行过程中有两种方式可以查看变量的值:
另外也可以通过 EVAL 命令改变变量的内容,在这里不做介绍。
您可以在此调试一个 Java 程序同时增加调试其他程序,提供了在 IBM i 上同时调试多个程序的方式(参考图 8)。
调试步骤如下:
方法二,使用 IBM i System Debugger GUI 去调试 IBM i 上的 Java 程序
IBM i System Debugger GUI 为用户提供一个更为简单、直观的交互式图形界面的调试方式,方便 IBM i 用户的使用。对于 IBM i System Debugger GUI 安装,需要到 IBM i 下的 IFS 里下载相应的 JAR 文件,具体步骤如下:
至此,IBM i System Debugger GUI 安装完成,只要双击桌面上的 iDebugger 图标,即可使用 IBM i System Debugger GUI 调试 Java 程序。具体调试步骤如下:
如图 11 所示我们可以单击 Add System 按键来增加希望连接到的任意 IBM i 系统,只要在建立新系统时,输入您在该系统上所拥有的 User ID 和 password。我们通过 Debug Manager 移除系统、新增或移除使用者等在这里不做过多介绍。Debug Manager 有提供两个主要基本功能:
因为本次调试过程是用户主导控制用户程序的调试开启,所以在选择调试方法时选择 Submit and debug program in batch job。另外被调试 Java 程序相关参数如 Type、Class name、Classpath 设定如图所示,和在 IBM i 上的 Java 程序编译生成的 .class 文件的相关参数是对应的。
从断点位置指令 13,单步调试到指令 7,查看此时变量 mSecs 的值,也可以把光标移到 mSecs 处查看。可以看出此时 mSecs = 600,即 sleep(600) 实参附值给 mSecs。
以上对如何使用 IBM i System Debugger 调试 Java 程序给予了详细的介绍,仅供使用者参考。IBM i System Debugger 为在 IBM i 开发 Java 程序的用户提供了很好的调试工具,保证了用户在 IBM i 上可以开发出更优质高效的 JAVA 程序。
原文地址:http://www.ibm.com/developerworks/cn/ibmi/library/i-cn-debugger/i-cn-debugger.html