CICS 进程 showProcInfo 函数堆栈信息的分析方法

对于运行慢或挂起的CICS进程cicsas,建议使用DEBUG工具showProcInfo获得进程的函数堆栈信息,分析进程挂起的原因。

首先使用命令 showProcInfo procid > procid.txt 获得挂起的cicsas进程的函数堆栈信息procid.txt。对堆栈信息文件的分析主要是看主线程(Thread 1)的函数堆栈,例如附录中的实例,在文件中找到关键字”Thread 1 “,其堆栈信息如下:

=== Thread 1 ===

ptrgl._ptrgl() at 0xd016ef90

raise.nsleep(??, ??) at 0xd018664c

raise.nsleep(??, ??) at 0xd018664c

sleep.sleep(??) at 0xd01e12d8

CheckPwd() at 0xd9387ce4

MUSER.main() at 0xd936d5f8

PinCA_StartC(0x2ff1d370, 0x200e335e, 0x200e3150, 0x7d00, 0x0) at 0xd23b82a4

TasPR_CallApplication() at 0xd206d404

TasPR_RunProgram(??) at 0xd206ccb4

TasPR_IRun(??, ??, ??, ??, ??, ??, ??, ??) at 0xd2067774

TasPR_Run(??) at 0xd20689a0

PinCA_Route(??) at 0xd2177988

TerEC_ServerECI() at 0xd223de4c

ComFS_APPCServ(??, ??) at 0xd223201c

TasTA_Exec(??, ??, ??, ??, ??, ??, ??, ??) at 0xd222584c

TasTA_Run(??, ??, ??, ??, ??, ??, ??) at 0xd22a2c28

conco_as.main(??, ??) at 0x10000d98

堆栈信息需要从下往上分析,即例子中的函数调用顺序为:conco_as.main -> TasTA_RUN -> …-> PinCA_StartC -> MUSER.main -> CheckPwd -> sleep.sleep -> raise.nsleep -> raise.nsleep -> ptrgl._ptrgl 。

其中PinCA_StartC是CICS内部开始调用C语言程序的函数,它上面的堆栈信息是用户的程序信息,它下面的堆栈信息是CICS内部的函数调用。我们关注的是用户的程序信息,如本例子挂起的程序是MUSER.main,挂起的函数是CheckPwd,状态是正在等待sleep,可根据这个调用顺序协助定位程序中存在的问题。

另外,如果挂起的堆栈信息中有包含类似SQL,SQI等的函数名,则程序是挂起在数据库中,需要去查找数据库是否出现了锁等待等问题;如果挂起的堆栈信息中有包含SNA的函数名,则程序是挂起在等待SNA返回信息或等待SNA发送的函数中,需要检查SNA日志和主机的交易情况。

 

附录:showProcInfo输出信息

#showProcInfo 26590 > 26590.txt

#cat 26590.txt

 

以下文章点击率最高

Loading…

发表评论