大型机汇编(mainframe assembler/HLASM)之线程工作栈

本文介绍了如何在大型机汇编(如HLASM)环境中,通过分析SST中的信息,尤其是保存区域(save area),来追踪程序在多线程环境下的调用栈。当程序出错时,SST中的SYSPRINT文件包含了许多有用信息,包括当前保存区域、高保存区域、低保存区域、返回地址等,这些可以帮助定位错误发生的具体位置,甚至追溯到调用链路。文章提到了一种通过比较不同保存区域的地址来确定调用关系的方法,并提供了实例解析。
摘要由CSDN通过智能技术生成

如果在一个可装载模块中,一个程序被多个程序或者被另一个程序多次调用,而恰巧本程序又在运行时出错了,我们怎么快速锁定其实被谁(父程序)调用的呢?(JAVA中有线程工作栈可以很容易找到,而COBOL或者HLASM就有点犯难了),甚至是更上层的程序;或者如果它被一个程序多次调用,我们怎么确定是在哪次被调用时出了问题?

 

一般情况下,我们可以加DISPLAY来跟踪,不过这样太费时,很多情况下,我们需要加的地方可能是很多处,很有可能是在多个程序中的多个地方同时加DISPLAY来锁定到底是哪里出了问题,等最后问题解决了,还要逐个删除...

 

这里有个极其简单的方法,什么都不需要做,只要稍微能读懂点dump即可。

 

很多时候程序出错我们都可以在S.ST里看到有个SYSPRINT这么一个文件,这里面就包含了程序出错时相当多的有用信息,下面我们来针对上面的问题稍加解读(读者还可参考我的另一篇文章“大型机汇编(mainframe assembler/HLASM)之DUMP解读”)。

 

一般情况下,我们应该能从里面找到下面两者(红字与蓝字显示)其中之一:

 

SA   0002BDC0  WD1 000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值