icepak 19.1 Java图形界面显示运行结果怎么调用中文

标签处理的Java代码:

收下是运行时在IEΦ输出的结果:

标签中是不是乱码? 

调试器工具是应用程序开发环境嘚关键组件 开发人员可以使用调试器隔离问题,了解软件代码路径甚至评估潜在的代码更改。 强大的调试器可以极大地提高软件开发囚员的效率

IBM i开发人员熟悉IBM i及其先前平台(AS / 400,iSeries和System i)上可用的绿屏调试器 绿屏调试器与访问STRDBG (开始调试)和STRISDB (启动Interactive源调试器)的命令。 尽管这些调试器可以工作但它们不提供现代图形调试器的生产力和易用性。 好消息是IBM提供了两种图形调试工具来提高您的生产率。

大多數IBM i开发人员仅了解图形调试器它是IBM Rational Power for Power系统软件产品的一部分。 被忽略的图形调试器是IBM i操作系统随附的图形IBM i调试器 该调试器在产品文档中被称为IBM System i5调试器,但是为了方便起见本文将其称为图形IBM i调试器。 该集成的图形调试器首先在OS / 400的V5R1版本中可用

Developer产品提供的图形调试器Java图形界媔显示运行结果。 程序员还可以使用该工具在任何IBM i服务器上创建库源物理文件和成员。

图形工具集支持创建和调试应用程序代码的典型步骤:

  1. 如果您不想使用现有库请创建一个新库
  2. 创建一个包含源代码成员的物理文件
  3. 创建用于编写源代码的成员
  4. 用调试信息编译源代码成員
  5. 将由编译器创建的程序文件添加到服务入口点
  6. 调试程序(步骤与其他IDE相似)

图形化的IBM i调试器

图形化的IBM i调试器可以看作是IBM i的传统绿屏调试器的图形化版本。 图形化的IBM i调试器打包在IBM Toolbox for Java提供的两个JAR文件中 图形调试器可以在支持Java的任何平台(例如Windows,Linux和Unix平台)上运行 本文将详细讨論此图形调试器。

从表1的内容中可以看到Rational调试器是两个调试器之间功能更强大的调试器。 但是它比图形IBM i调试器需要更多的磁盘空间 图形化的IBM i调试器是一种轻量级的调试器,在工作站上仅需要大约5M字节同时提供强大的调试功能。 此外它非常容易安装,并且因为它基于Java所以可以在不同平台上以相同的方式使用它。 最重要的是图形化的IBM i调试器包含在IBM i操作系统中,这意味着使用调试器无需额外付费 相反,使用Rational调试器需要购买整个Rational IDE产品

图形化的IBM i调试器
能够从调试会话启动代码编辑器。
无包含在IBM i操作系统中

安装图形IBM i调试器

通常,有两種方法用于安装图形IBM i调试器 一种方法是通过安装IBM System i Navigator客户机来完成的。 第二种方法涉及将所需的JAR文件手动复制到您的工作站上

IBM System i Navigator客户端为最終用户提供了图形用户Java图形界面显示运行结果,而不是用于管理和管理IBM i系统的传统绿屏 除了该功能之外,它还嵌入了图形化的IBM i调试器供開发人员使用 如果您的工作站上已经安装了IBM System i Navigator客户机,那么就不需要执行任何步骤来安装图形IBM i调试器 可在“资源”部分中找到有关IBM System i

一旦咹装了IBM System i Navigator客户机,就可以通过执行以下步骤来启动调试器:

  1. 右键单击所需的数据库然后选择“ Run SQL Scripts任务。

毫无疑问以这种方式启动调试器对於调试SQL过程,函数和触发器更为方便 此接口还可用于为没有SQL的程序启动调试器。

图2.从运行SQL脚本启动图形IBM i调试器

如果您没有能力安装IBM System i Navigator客户機那么可以使用另一种方法来安装图形IBM i调试器。 此方法将特定组件从IBM Toolbox for Java复制出来 由一组JAR文件组成的工具箱不是专门为在IBM i上调试程序而设計的,而是为开发利用IBM i资源的Java程序而设计的

具体来说,您的工作站上只需要两个JAR文件它们是由IBM Toolbox for Java提供的。 有两种方法可以将图形调试器所需的JAR文件获取到工作站上 一种是通过将JTOpen软件包下载到您的工作站上。 JTOpen是IBM Toolbox for Java的开源版本 两个软件包都包含相同的代码。 第二种方法是访問已安装IBM Java工具箱的系统 第一种方法非常简单明了,因此不再详细讨论 请参阅“资源”部分中的“ IBM Java工具箱”项目。 第二种方法概述如下

要从IBM i系统获取这两个JAR文件,您需要访问安装了IBM Toolbox for Java软件包的服务器 不需要在系统上安装IBM Toolbox for Java,即可使用图形IBM i调试器调试在其上运行的程序 默認情况下,该工具箱应该已经安装在您的系统上 要检查您的系统上是否安装了IBM Toolbox for Java,请遵循以下步骤:

  1. 登录到您的IBM i系统

如果未安装工具箱請按照以下步骤安装IBM Java工具箱:

  1. 安装之后,请使用先前记录的步骤来验证是否已安装IBM Toolbox for Java

有关安装IBM Toolbox for Java的详细信息和前提条件,请参阅的书籍

假設已安装IBM Toolbox for Java,下一步就是在工作站上安装所需的JAR文件 此处记录的安装步骤适用于Windows工作站。 对于其他类型的工作站安装过程将类似。

至此图形化IBM i调试器安装完成。 为了运行图形调试器您必须在工作站上安装适当的JDK或JRE版本。 所需的最低JDK和JRE版本取决于从中复制JAR文件的IBM i OS版本 唎如,IBM i V5R4发行版所需的最低版本是Java版本1.3.1 IBM Toolbox for Java的IBM i 7.1版本需要Java版本1.4。 可以在找到图形IBM i调试器的软件需求的详细列表 为了成功访问图形调试器的帮助攵档,您需要将jhall.jar文件添加到CLASSPATH中 可以从JavaHelp系统获得此JAR文件。 有关图形IBM i调试器的先决条件和安装的更多详细信息请参阅标题为的IBM i信息中心书。

您可以从Windows命令提示符使用以下命令来调用图形IBM i调试器以验证您的安装: java utilities.Debug 您的结果应该类似于图3中的图形调试器输出。

图3.启动IBM i系统调试器

图形化IBM i调试器概述

首先让我们看一下调试器的体系结构 如图4所示,在工作站端图形化的IBM i调试器由三个组件组成:调试管理器,系统調试器和OS / 400 PASE系统调试器 在IBM i方面,图形调试器依赖于Debug Hub和Debug Server组件

图4.图形化的IBM i调试器架构

调试管理器负责向Debug Hub组件注册客户端,以便在IBM i上启用图形調试器 除此之外,它还可以通过添加或删除系统或用户来帮助管理调试设置 如果您必须在许多不同的系统上调试程序,调试管理器提供了一个方便的Java图形界面显示运行结果来启动调试器 图5显示了调试管理器的用户Java图形界面显示运行结果。 调试中心组件将用户信息存储茬其注册表中 通过存储该用户信息,当同一用户发出STRDBG CL命令时调试中心就知道自动启动图形IBM i调试器。 调试中心组件执行的另一个功能是当调试服务器接收到来自远程工作站的请求时,调用调试服务器 例如,当您从Debug Manager或Windows命令行启动图形调试会话时Debug Hub将收到一个请求。 然后集线器转过身并创建一个相应的Debug Server实例,以处理来自调试会话的调试命令 PASE系统调试器适用于在PASE环境中运行的程序。 该调试器提供与图形IBM i調试器类似的调试功能以及特定于PASE环境的其他一些功能。 有关PASE环境的其他信息请参考标题为的书。 图形化的IBM i调试器可以调试用ILE和非ILE语訁以及Java编写的程序

图形化的IBM i调试器的实际应用

本部分将向您展示如何通过调试示例程序来利用图形化的IBM i调试器。 示例C程序提供了一个简單的功能-将小写英文字母转换为相应的大写字母 该程序在Windows环境中运行没有任何错误,如图6的成功输出所示

图6.成功执行示例程序的输出

茬IBM i上运行相同的C程序逻辑,将产生如图7所示的错误输出例如,在IBM i上运行的C程序错误地将小写字母'a'转换为'/'并将小写字母转换为从“ z”到“ i”

图7.在IBM i上运行的程序的错误输出

让我们使用图形化的IBM i调试器来查找错误输出的原因。 清单1中包含了示例程序的源代码以供您参考。

清單1.示例程序的源代码

登录到图形IBM i调试器

在图3所示的Debug ManagerJava图形界面显示运行结果中使用IBM i用户概要文件和密码通过登录到包含要调试程序的IBM i系统來启动调试会话。

登录后系统会自动提示您,如图8所示显示“ Start Debug面板。如果未自动出现“ Start Debug面板请按F4键或从“调试”下拉菜单中选择“ Start任务。

如此面板所示您可以在两种不同的模式下调试程序。 第一种模式Submit and debug program in batch job,用于调试尚未运行的程序 第二种模式是“调试Debug existing job on system,用于调试目标系統上已在运行的程序。 此模式更适合成功初始化的程序或作为服务器运行的程序

图8.指定要调试的程序

本节的值对于调试所需程序非常重偠。 “类型”字段有三个可能的值:“程序”和“类文件” “类文件”值用于Java程序,而“程序”值用于以其他高级语言(例如CRPG和COBOL)编寫的程序。 如果您选择调试现有作业则最终值“服务程序”可用。 IBM i上的服务程序类似于其他平台上的共享库 服务程序无法直接运行,洇此只有在使用调试现有作业模式时,该值才可用 该示例程序由C组成,因此为程序类型指定了“程序”值

接下来,您需要填写要调試的IBM i程序对象的程序名称和库名称 该示例程序没有其他参数和初始化命令,因此请将这些字段留空 “ Program to debugProgram to debug部分的最后一个字段是“ Standard I/O字段。 该参数设置程序输出将定向到的位置 该字段有两个选项:“发送到假脱机文件”和“重定向到I / O面板”。 如果程序的输出很大则假脱機文件是此字段的不错选择。 使用另一个选项您可以将程序的输出重定向到图形IBM i调试器的I / O面板,本文稍后将对此进行讨论 如果您的程序是交互式的并且需要用户输入值,那么您应该选择I / O面板选项 此外,此选项使您可以轻松地在调试器的I / O面板上检查程序的输出而无需登录到IBM i来查看假脱机文件的内容。 对于此示例使用“重定向到I / O面板”选项。 完成所有输入字段后您可以单击“确定”按钮开始调试示唎代码。

如果要调试现有作业则必须获取有关IBM i的作业信息,以在“ Existing job to debug字段中填写相应的条目 有两种获取职位信息的方法。 第一种方法是按下图8中“ Start Debug窗口下半部分的“ Browse按钮选择此按钮将导致出现一个对话框窗口,其中提供了筛选器选项以帮助您找到需要调试的作业。 第②种方法是登录到IBM i输入命令wrkactjob ,然后向下滚动以找到要调试的作业

图形化的IBM i调试器的用户Java图形界面显示运行结果如图9所示。该Java图形界面顯示运行结果分为四个窗口 调试程序的源代码显示在右上方的窗口中,称为“ Source Window 如果源代码未显示在窗口中,则可能的原因之一可能是程序对象不包含必要的调试信息 在这种情况下,请使用正确的调试参数值重新创建程序 其余窗口中包含不同的标签。 为了简化说明夲文将使用它们的标签名称来引用它们,而无论它们位于何处 例如,位于左上方窗口的Programs标签将称为Programs Panel

图9.系统调试器的Java图形界面显示运行結果

由于在调试器中启动此程序时选择了“重定向到I / O面板”选项,因此所有输入和输出操作都可以在右侧底部窗口中的“ Standard I/O面板中执行 您無需通过仿真器会话与IBM i系统进行交互。 相反您可以从图形调试器Java图形界面显示运行结果与程序进行交互。 只需简单地单击Standard I/O选项卡即可访問图10所示的Java图形界面显示运行结果面板然后,通过选择顶部工具栏中的绿色三角形Resume按钮或按F12键来运行该程序 片刻之后,在“ Standard I/O窗口的“ Standard Output蔀分中将出现一条要求用户输入小写字母的消息 然后,您可以从“ Standard Input部分输入测试字母然后单击面板旁边的“执行Go按钮。

图10.图形调试器標准I / O面板

图11包含程序调用的输出结果 结果表明,小写字母“ a”被错误地转换为正斜杠“ /”而“ z”被转换为字母“ i”,这与程序在IBM i上运荇时产生的输出相同如图2所示。 7

现在已经再现了程序错误下一步是查看源代码,以确定应该在哪里设置调试断点 代码的逻辑并不复雜。 首先示例程序从终端接受输入字母,如以下代码片段所示

其次,如果用户选择不退出(输入字母不是“ 0”)则将程序控制权转迻到函数convert2Captial,以将字母转换为大写

第三,函数convert2Captial在检查输入字母的确是合法的小写字母之后根据其ASCII码点将其转换为相应的大写字母。

最后从被调用的函数返回到main,并将结果显示到终端

为了确定输出错误的原因,可通过在相应的行中右键单击并选择Add Breakpoint任务或简单地双击行號的左侧,将断点添加到Source Window的以下3行代码中

现在,调试器屏幕的外观应类似于图12中所示的屏幕在“ Source Window ,源代码中相应行的旁边将显示两个紅色箭头以指示断点与这些代码行相关联。 如果要浏览所有断点只需单击“ Breakpoints选项卡。 通过此选项卡您可以提供有关每个断点的有用屬性设置,例如断点的条件程序为多线程时的线程设置以及样式。 您可以在“ !='A'添加到第20行的断点以便仅当输入为小写字母'a'时才产生错誤结果时才停止程序执行。 这种条件断点功能为开发人员在调试过程中提供了很大的灵活性 除此之外,还可以通过创建不同的断点组来哽改断点符号的颜色 不同的断点颜色可以帮助您管理用于调试复杂程序中不同类型问题的断点,如图12所示

在您必须继续进行其他活动並关闭调试器之前,可能无法在程序中找到错误 调试器会话结束时,您设置的所有断点会如何处理 幸运的是,调试器可以记住所有的斷点 您所要做的只是启动图形化的IBM i调试器,这将还原上一个会话的调试环境的所有方面例如断点,监视的变量和要调试的程序对象 丅次您启动图形IBM i调试器时,所有这些设置都会自动返回这是提高日常工作效率的好方法。

检查变量值的功能是任何调试器应提供的最常見功能之一 图形化的IBM i调试器提供了四个不同的Java图形界面显示运行结果来检查变量的值-“源”窗口,“控制台”面板“本地”面板或“監视器”面板。 在“源代码”窗口中查看变量的值非常简单明了 将光标放在要检查的变量上,或在“源”窗口中突出显示该变量 这两種操作都将导致变量的当前值显示在调试器窗口底部的消息部分中或“源”窗口的跨接窗口中。 在控制台面板中您可以运行EVAL命令来手动顯示变量或表达式的值。 Locals面板用于监视当前函数中的变量变量值自动显示在面板的Value列中。 如果要在执行程序逻辑期间监视特定变量的值则必须将这些变量添加到“监视器”面板中。 在本节中您将学习如何在“监视器”面板上检查变量。

在示例程序中需要监视变量pChar。 通过右键单击“监视器”面板或“源”窗口中的任何空间然后在弹出菜单中选择“新建监视器”任务,将pChar变量添加到监视器队列 指定偠监视的变量(pChar),如图13所示当程序没有在源代码中的语句上停止时,New Monitor菜单任务将被禁用 默认情况下,调试器的停止位置由黄色背景線指示如图13所示。

监视变量之后程序的继续调试表明,当程序执行到达图14所示的第20行时pChar的值将转换为不希望的字符(“ a”至“ /”)。

图13.在“监视器”面板上将变量设置为“监视器”

在“监视器”面板上每个监视的变量都有一个名为“ Watch的列。 如果您选择通过单击该行嘚“ Watch列来监视变量则该程序将在导致监视的变量的值更改的语句之后自动停止。 也就是说受监视的变量的值更改时,其作用将类似于斷点 只要定义了断点或监视的变量,您只需单击工具栏中的“ Resume按钮即可运行该程序 这使执行得以继续,直到调试器遇到设置了断点或哽改了监视变量的行 除了这些用于控制程序执行的选项之外,工具栏上还提供了几种不同类型的步骤执行选项

图14.转换“ a”之前的“监視器”面板

Memory面板显示变量或表达式的内存。 要查看与变量或表达式关联的内存值您只需在面板的“ Expression字段中键入变量名称或表达式即可。 但是最简单的方法是在LocalsMonitors面板中右键单击所需的变量,然后在上下文菜单中选择Go to Memory任务如图15所示Memory面板中有三列输出。 第一列是十六进淛形式的内存序列号 第二列仅包含十六进制格式的内存内容。 第三列称为字符表示区域 显示与第二列中十六进制值相对应的字符(如果可显示)。 字符括在方括号中 通过分别设置Bytes per lineBytes数字段,可以自定义每行显示的Bytes per line以及要显示多少个内存 另一个自定义选项是“ Bytes字段的“大小”设置。 此选项使面板仅显示分配给指定变量或表达式的内存

图15.大写转换之前的内存面板

让我们检查变量pChar的内存,因为该变量与偠转换的字母相关联 在此示例中,当输入小写字母“ a”时相应的内存值为0x81,如图15所示转换后,内存更改为代表正斜杠字符(/)的0x61洳图16所示。为什么 检查ASCII表后,字母“ a”代码的代码点应为0x61而正斜杠“ /”的代码点应为0x2F。 变量的内存值与ASCII代码点不一致 您可能会注意箌“ Memory面板中有一个名为“ Format的字段。 该字段用于控制使用哪种编码系统将存储值显示为字符串 选项包括EBCDIC,ASCIIUnicode和UTF32。 至此问题很明显了。 IBM i操莋是基于EBCDIC的操作系统而不是基于ASCII的操作系统。 对于EBCDIC代码点以下用于转换为相应的大写字母的代码表达式不正确:

在检查了EBCDIC代码表之后,字母'a'的EBCDIC代码点为0x81而“ /”的EBCDIC代码点为0x61,这与图16一致此外,从小写字母到其相应的大写字母的EBCDIC代码点距离大小写字母是64,而不是-32 因此,已经确定了示例程序逻辑中的问题!

该面板的另一点是可以在调试时更改内存内容。 要更改内容请将光标定位在第二列或第三列Φ要更改存储值的位置。 然后键入要使用的新值,然后单击Save按钮以更改内存内容如图16所示。

图16.更改内存的内容

从这一点来看我们知噵问题是由不同的编码系统引起的:EBCDIC。 如何修改代码以使其在WindowsIBM i或UNIX操作系统等不同平台上正确运行? 最简单的方法是在convert2Captial函数的以下代码行Φ更改逻辑:

除此问题外函数convert2Captial中还有另一个问题:

该语句用于确定检查输入字母是否合法。 从EBCDIC代码点表中可以明显看出从“ a”到“ z”嘚代码点不是连续的。 因此验证码逻辑需要更改为以下内容:

至此,代码修订完成程序在IBM i上成功运行。

如图17所示。当您要检查包含嘚头文件的内容时该视图很有用。 具体来说当您为IBM i开发SQL嵌入式程序并使用参数DBGVIEW(* SOURCE)和COMPILEOPT('option(* showinc)')对其进行预编译时,“源Source Window可用源代码视圖将类似于所示如图17所示如果使用适当的调试选项集创建或更改了SQL过程,函数和触发器则SQL Output View将帮助调试它们。 有关以图形方式调试SQL过程嘚更多详细信息请参阅“资源”部分中的相应论文。

如前所述您要调试的程序可能非常复杂。 该程序可能包含许多源代码文件和模块或者可能包含数千行源代码。 在这些情况下您可能想知道您是否可以轻松地跳转到大型源文件中的特定行或找到正确的源代码文件? 圉运的是有几种方法可以通过图形化的IBM i调试器实现这种导航:

  • 双击“ Call Stack面板中的条目,它将以不同的方法功能或模块导航到“ 行”列所礻的当前停止位置。
  • 双击程序对象例如程序,服务程序或Java类文件这将在Source Window打开相应的源文件。
图17.更改源视图对话框

我要回帖

更多关于 Java图形界面显示运行结果 的文章

 

随机推荐