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…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營