java 图形化调试工具_图形化调试IBM i程序

IBM i调试器概述

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

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版本中可用。

IBM Rational Developer for Power Systems软件调试器

IBM Rational Power Systems开发人员产品是一个IDE,用于开发在IBM Power Systems上运行的应用程序。 它是一个功能强大的工具,为IBM i和C / C ++提供了RPG和COBOL开发工具,为AIX提供了COBOL开发工具。 开发人员可以使用此工具在IBM i上创建,编辑,编译和调试源代码。 图1显示了IBM Rational Developer产品提供的图形调试器界面。 程序员还可以使用该工具在任何IBM i服务器上创建库,源物理文件和成员。

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

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

图形化的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产品。

表1. IBM i调试器的比较
理性调试器 图形化的IBM i调试器
功能 能够从调试会话启动代码编辑器。
远程调试
远程调试
磁盘空间 约1G字节 约5M字节
用户体验 很好
成本 需要额外的许可费 无,包含在IBM i操作系统中

安装图形IBM i调试器

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

通过IBM System i Navigator安装和启动图形化IBM i调试器

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

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

  1. 在IBM System i导航器客户端的导航树中依次展开以下项目: My connections -> Your System Name-> Databases
  2. 右键单击所需的数据库,然后选择“ Run SQL Scripts任务。
  3. 在“ Run SQL Scripts窗口中, the Debugger task from the Run pull-down menu选择the Debugger task from the Run pull-down menu ,如图2所示。

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

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

通过IBM Toolbox for Java安装图形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系统
  2. 在命令行上,输入go licpgm ,它将导航到“ Work with Licensed Programs面板。
  3. 选择选项10, Display installed licensed programs 。 该选项产生当前安装的许可程序的列表。
  4. 在“ Display Installed Licensed Programs面板中向下翻页以查看已安装的程序。 如果IBM Toolbox for Java产品出现在列表中,则说明该产品已安装。

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

  1. 在命令行上,输入go licpgm
  2. 选择选项11, Install licensed programs
  3. 在名为“ Extended Base Directory Support的条目的“ Option列中键入1以安装工具箱。
  4. 安装之后,请使用先前记录的步骤来验证是否已安装IBM Toolbox for Java。

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

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

  1. 从IBM i上的/QIBM/ProdData/HTTP/Public/jt400/lib/ (或从刚复制到工作站的JTOpen软件包)复制两个JAR文件jt400.jar和tes.jar。 这两个JAR文件是IBM Toolbox for Java组件,它们提供图形调试器功能。
  2. 将两个JAR文件的路径添加到CLASSPATH环境变量中。 例如,如果将两个JAR文件复制到Windows工作站上的C:\ iDebugger \,则应通过添加以下行来更新CLASSPATH变量:; C:\ iDebugger \ jt400.jar; C:\ iDebugger \ tes。罐

至此,图形化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信息中心中找到图形IBM i调试器的软件需求的详细列表。 为了成功访问图形调试器的帮助文档,您需要将jhall.jar文件添加到CLASSPATH中。 可以从JavaHelp系统获得此JAR文件。 有关图形IBM i调试器的先决条件和安装的更多详细信息,请参阅标题为System i5 Debugger的IBM i信息中心书。

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

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

图形化IBM i调试器概述

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

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

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

图5.调试管理器
调试管理器

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

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

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

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

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

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

清单1.示例程序的源代码
//LWR2UPR.c source code.
//This is the sample code used for debugging, which would fail
//when running on IBM i system.

#include <stdio.h>

//Convert a lower case letter to its corresponding upper case letter.
//Return value 0 indicates successful process, otherwise return 1;
int convert2Captial(char* pChar)
{
	//determine if the user's input is legal
 	if((*pChar < 'a') || (*pChar > 'z'))
	{
		printf("Input is error. Pls input a letter between a and z:\n");	
		return 1;
	}
	else
  	{
      	*pChar -= 32;
	 	return 0;
	}
}

int main(void)
{
  	char chInput;	//The letter that user inputs
  	char* pChar;	//Pointer to the letter
	int nRet;		

	printf("Pls input the lower case letter to be converted:\n");
	printf("Input 0 to exit.\n");
	
	//Gets letter from terminal:
  	while ((chInput = getchar()) != '0')
  	{
  		pChar = &chInput;
		if(*pChar != '\n')
		{
			printf("Your input is: %c\n", *pChar);
		}
  		else
		{
			continue;
		}
		
  		if (0 == (nRet = convert2Captial(pChar)))
		{
			printf( "Its upper case is: %c\n", *pChar);
		}
  		else
		{
			continue;
		}
	}
  
	printf("Size of a inteter in byte is: %d\n", sizeof(nRet));
	printf("Size of a char in byte is: %d\n", sizeof(chInput));
	printf("Size of a pointer in byte is: %d\n", sizeof(pChar));
  
	return 0;
}

登录到图形IBM i调试器

在图3所示的Debug Manager界面中,使用IBM i用户概要文件和密码通过登录到包含要调试程序的IBM i系统来启动调试会话。

启动程序调试会话

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

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

图8.指定要调试的程序
指定要调试的程序

此调试示例将以Submit and debug program in batch job模式使用Submit and debug program in batch job 。 下一步是为“ Program to debugProgram to debug部分提供适当的内容。 本节的值对于调试所需程序非常重要。 “类型”字段有三个可能的值:“程序”和“类文件”。 “类文件”值用于Java程序,而“程序”值用于以其他高级语言(例如C,RPG和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调试器的用户界面如图9所示。该界面分为四个窗口。 调试程序的源代码显示在右上方的窗口中,称为“ Source Window 。 如果源代码未显示在窗口中,则可能的原因之一可能是程序对象不包含必要的调试信息。 在这种情况下,请使用正确的调试参数值重新创建程序。 其余窗口中包含不同的标签。 为了简化说明,本文将使用它们的标签名称来引用它们,而无论它们位于何处。 例如,位于左上方窗口的Programs标签将称为Programs Panel

图9.系统调试器的界面
系统调试器的界面

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

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

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

图11.标准输出示例
标准输出示例

查看源代码逻辑

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

while ((chInput = getchar()) != '0')

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

if (0 == (nRet = convert2Captial(pChar)))

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

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

添加断点

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

1) return 0;
2) if(*pChar != '\n')
3) if (0 == (nRet = convert2Captial(pChar)))

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

图12.组中的断点
组中的断点

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

检查变量

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

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

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

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

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

图14.转换“ a”之前的“监视器”面板
转换“ 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,ASCII,Unicode和UTF32。 至此,问题很明显了。 IBM i操作是基于EBCDIC的操作系统,而不是基于ASCII的操作系统。 对于EBCDIC代码点,以下用于转换为相应的大写字母的代码表达式不正确:

*pChar -= 32;

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

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

图16.更改内存的内容
更改存储器的内容

修改代码

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

*pChar -= 32;

这个更新的逻辑:

*pChar -= ('a' – 'A');

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

if((*pChar < 'a') || (*pChar > 'z'))

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

if((*pChar < 'a')
|| ((*pChar > 'i') && (*pChar < 'j'))
|| ((*pChar > 'r') && (*pChar < 's'))
|| (*pChar > 'z'))

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

图形化IBM i Debugger的其他功能

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

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

  • 双击“ Call Stack面板中的条目,它将以不同的方法,功能或模块导航到“ 行”列所示的当前停止位置。
  • 双击Breakpoints面板中的Breakpoints ,这将导航到Source Window相应的断点行。
  • 双击程序对象,例如程序,服务程序或Java类文件,这将在Source Window打开相应的源文件。
  • 右键单击“ Monitors面板中的条目,然后选择“ Go To Source
  • 在“ Source Window右键单击,然后选择“ Find…或“ Go To Line…
图17.更改源视图对话框
更改源视图对话框

Threads面板可用于调试多线程程序。 使用“ Call Stack面板可以轻松显示当前程序的调用堆栈。 “ Console面板用于显示系统消息并从该面板执行IBM i调试命令。 For more detailed information about all of these functions, please refer to the graphical IBM i debugger's documentation.

摘要

In this article, you were introduced to two graphical debuggers for IBM i with a comparison of the debuggers to help developers choose the debugger most suitable for them. You also learned how to install the graphical IBM i debugger using different methods. And most importantly, you learned how to utilize the graphical IBM i debugger for troubleshooting a program.

翻译自: https://www.ibm.com/developerworks/ibmi/library/i-debug/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值