CICS/COBOL 仅在调试器中异常结束 ASRA

Posted

技术标签:

【中文标题】CICS/COBOL 仅在调试器中异常结束 ASRA【英文标题】:CICS/COBOL Abend ASRA in debugger only 【发布时间】:2014-08-29 14:04:16 【问题描述】:

我有一个问题,我似乎找不到解决方案。 在调试模式下使用时,其中一项事务会提供 ABEND ASRA。 当我编译没有调试选项的 Cobol 程序并运行该程序时,它工作正常。

错误看起来像这样(非常像这样),只是我使用的是 Cobol V4: http://www-01.ibm.com/support/docview.wss?uid=swg1PM96501

现在的问题是:为什么它在调试器中异常,而不是没有调试器? 我正在使用 CICS 调试器(DTCN 事务),程序正常启动,我可以使用 F2 和所有这些执行步骤,然后在某个位置异常终止。 请注意,由于程序非常大,很难说它在哪里异常。

目前仅此程序会发生这种情况,其他程序在调试器中运行良好。我在修改之前放置了一个断点,异常结束发生在其他区域。

另一个奇怪的地方是这个 Abend 并不一致,如果我用小步骤(F2 和小断点)执行大部分代码,有时它会一直执行到结束。

由于问题的性质,我无法发布太多信息。 我希望你遇到类似的问题,你可以告诉我在哪里寻找。

谢谢!

【问题讨论】:

我设法找到了有问题的调用:使用内容 x'0204ff000713120e15100f0d5400 '0000000000000000f3f5f0f5f9404040' 结束调用调用 'DFHEI1'。这是程序中的 CICS EXEC 语句。如果我一步一步(F2)通过这个区域,没有给出异常结束,程序正常结束。 您需要查看生成的代码 (OPTION LIST,NOOFFSET) 并确认该值未被破坏。是否必须重新编译才能使用 DTCN?有时,很少会覆盖某些不会立即导致问题的内容。更改生成的代码,现在某些内容被覆盖,这确实会导致直接问题。有时。 我使用调试器选项重新编译以使用 DTCN。稍后我会将调试器代码与标准代码进行比较,看看是否有任何重大差异。 我向我们的专家团队登记了一张票来调查此事,但我自己却找不到任何东西。如果他们能给我一个,我会发布解决方案。 感谢您的更新。 【参考方案1】:

通过从系统中删除我的调试工具配置文件,然后再次登录到调试器 (DTCN),从而解决了问题,因此它创建了一个新配置文件(配置文件是 3 个文件:TOOLTEMP.PDTOOLS.userid.DBGTOOL.* )。在此之后,问题消失了。我问这些人这是怎么发生的,他们告诉我这是因为我在 2 个调试会话之间修改了程序而没有关闭 CICS。这是一个可以通过在我们编译其中使用的程序时关闭 CICS 来避免的故障(不确定究竟为什么......他们也不是)。 如果您在 DTCN 调试中遇到类似问题,希望这会有所帮助。

【讨论】:

感谢您的更新。我从来没有听说过需要关闭 CICS 来进行编译。有必要告诉正在运行的 CICS 您有一个“新”程序,也许某个版本就足够了。 我同意,我就是这样做的(CEMT SET PROG() NEWCOPY)。显然,在这种情况下出现了问题,尽管我们没有关闭 CICS 来编译新程序然后对其进行 CEMT。不幸的是,支持团队无法确定发生了什么,一旦解决,他们就没有时间进行调查。

以上是关于CICS/COBOL 仅在调试器中异常结束 ASRA的主要内容,如果未能解决你的问题,请参考以下文章

Blazor Hybrid ElementReferenceJsonConverter 仅在调试时抛出异常

仅在运行单元测试时出现 OLE DB 异常“类未注册”

向量下标超出范围,错误仅在调试模式下显示

仅在发布模式下使用 glGenBuffer 的未处理异常 - QT

仅在发布模式下“枚举 NSArray 集合时发生突变”

仅在 Release 中尝试捕获的更好方法?