IBM Support

装备你的应用程序以支持作业跟踪

Technical Blog Post


Abstract

装备你的应用程序以支持作业跟踪

Body

之前我写了一篇关于IBM i上作业跟踪能力的文章。 在那篇文章中,我简要提到,用户可以装备自己的应用程序,使其跟踪数据可以成为作业跟踪结果的一部分。支持这项功能的秘诀就是“QTRC APIs”,它们是在IBM i 6.1中被引入的。在IBM i Information Center的"Application Programming Interfaces" 的“Problem Management”类别下可以找到这些API的文档。除了编程接口,QTRC API的文档部分还包含很多内容;它不仅讨论了如何使用这些API,还涵盖了一些你需要了解的相关信息,让你能够充分利用这些编程接口。 要理解QTRC API是如何工作的,其中一个很重要的概念就是“组件(component)”。在每个QTRC API中你必须要指定组件这个参数,它用来标识要跟踪收集的数据,同时,组件也是STRTRC命令的一个参数,用来打开或者关闭对指定组件的跟踪。以下是从Information Center上摘取的关于QTRC组件的文档:
 
组件 
 
应用组件的名称是一个10字节的字符串。对于每一个跟踪点,在QTRC Trace API中都需关联一个组件名称。组件的名称也会显示在每个跟踪记录的输出中。在使用启动跟踪(STRTRC)这条CL命令时也可以指定组件名称。组件名称应当只包含不变字符集的字符,并避免使用小写的a到z。应用组件名称应包含公司名称和应用程序名称的缩写。 以星号(*)开始的组件名称是为操作系统保留的。以Q开始的组件名称是为IBM许可程序保留的。
 
通过作业跟踪来收集应用程序的诊断数据可以分为三个基本步骤: 
 
1. 装备应用程序来收集所需的诊断信息。 
 
这一步是需要你思考最多的一步。需要收集什么样的数据?收集额外的数据对性能的影响?对于不同类型的问题是否需要收集不同类型的数据? 
你可以使用QTRC API来收集你需要的数据。 
使用Check Trace Level API来确定你设定的组件的跟踪级别。它会检查你的组件跟踪是否已经被打开;如果你需要的跟踪没有被激活,你可以忽略你的应用程序中的数据收集逻辑,以减少你的应用程序的额外负载。 
你可以根据跟踪级别来生成跟踪记录;你可以收集文本数据,十六进制数据,和堆栈调用信息。IBM信息中心的QTRC API文档介绍了如何使用这些API。 
 
2. 使用STRTRC命令来收集跟踪数据
 
之所以能够使用STRTRC命令来收集你自己的跟踪数据,这其中的秘密就是TRCTYPE参数。虽然IBM已经为操作系统的内部组件定义了一些特殊值用于跟踪收集目的,但是TRCTYPE关键字并不仅限于这些特殊值;你可以在TRCTYPE参数中指定自己的组件名称。
 
3. 使用PRTTRC命令打印收集的跟踪记录 
 
除了你在API中指定组件的数据,系统还会自动添加一些额外的跟踪信息。
跟踪的数据量可能非常大,所以你需要保证你自己要进行清理工作。一旦你已经完成跟踪数据的诊断工作,请务必用DLTTRC命令来删除跟踪数据。同样,当完成跟踪之后,你也应该删除所有的跟踪生成的假脱机文件。 
 
将诊断信息添加到应用程序可能会很费时,但当出现问题时,通过跟踪数据来提高诊断能力最终可以节省大量的时间。 IBM i操作系统内置了很好的跟踪功能,理所当然的,每个开发人员都会想利用这些机制去调试自己编写的程序可能出现的问题。利用QTRC API,你也可以对你的应用程序做相同样的事情了。 
 

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

UID

ibm11145644