CICS/COBOL Abend ASRA только в отладчике

У меня есть проблема, для которой я не могу найти решение. Одна из транзакций дает ABEND ASRA при использовании в режиме отладки. Когда я компилирую программу Cobol без параметра отладки и запускаю программу, она работает нормально.

Ошибка выглядит примерно так (совершенно так), только я использую Cobol V4: http://www-01.ibm.com/support/docview.wss?uid=swg1PM96501

Теперь вопрос: почему это происходит в отладчике, а не без отладчика? Я использую отладчик CICS (транзакция DTCN), программа запускается нормально, я могу делать шаги с помощью F2 и все такое, затем в каком-то месте обрывается. Обратите внимание, что очень сложно сказать, где он обрывается, так как программа действительно большая.

На данный момент это происходит только с этой программой, другие работают нормально с отладчиком. Я поставил точку останова перед своими изменениями, абенд происходит в какой-то другой области.

Еще одна странная вещь заключается в том, что этот Abend не является последовательным. Если я делаю большую часть кода с небольшими шагами (F2 и маленькие точки останова), иногда он выполняется без Abend до конца.

Из-за характера проблемы я не могу размещать много информации. Я надеялся, что вы столкнулись с подобными проблемами, и вы можете сказать мне, где искать.

Спасибо!


person bmakos    schedule 29.08.2014    source источник
comment
Мне удалось найти проблемный вызов: Call 'DFHEI1' using by content x'0204ff000713120e15100f0d5400 '00000000000000000f3f5f0f5f9404040' end-call. Это оператор CICS EXEC в программе. Если я прохожу эту область пошагово (F2), то абенд не дается, программа завершается нормально.   -  person bmakos    schedule 29.08.2014
comment
Вам нужно просмотреть сгенерированный код (OPTION LIST, NOOFFSET) и убедиться, что это значение не было затерто. Нужно ли перекомпилировать для использования DTCN? Иногда, редко, что-то перезаписывается, что не вызывает непосредственной проблемы. Измените сгенерированный код, и теперь что-то перезаписывается, что вызывает немедленную проблему. Иногда.   -  person Bill Woodger    schedule 29.08.2014
comment
Я перекомпилирую с опцией отладчика, чтобы использовать DTCN. Позже я сравню код отладчика со стандартным кодом, чтобы увидеть, есть ли какие-либо существенные различия.   -  person bmakos    schedule 01.09.2014
comment
Я отправил заявку нашей группе специалистов, чтобы выяснить это, но сам ничего не могу найти. Я опубликую решение, если они могут дать мне его.   -  person bmakos    schedule 04.09.2014
comment
Спасибо за обновления.   -  person Bill Woodger    schedule 04.09.2014
comment
Я получил ответ от нашей команды специалистов. Проблема была решена путем удаления моего профиля инструмента отладки из системы, а затем повторного входа в отладчик (DTCN), чтобы он создал новый профиль (профиль состоял из 3 файлов: TOOLTEMP.PDTOOLS.{userid}.DBGTOOL.* ). После этого проблема исчезла. Я спросил ребят, как это произошло, они ответили, что это из-за того, что я модифицировал программу между двумя сеансами отладки, не закрывая CICS. Это была неисправность, которой можно избежать, закрыв CICS, пока мы компилируем используемые в ней программы (не уверен, почему именно.... они тоже).   -  person bmakos    schedule 05.09.2014


Ответы (1)


Проблема была решена путем удаления моего профиля инструмента отладки из системы, а затем повторного входа в отладчик (DTCN), чтобы он создал новый профиль (профиль состоял из 3 файлов: TOOLTEMP.PDTOOLS.{userid}.DBGTOOL.* ). После этого проблема исчезла. Я спросил ребят, как это произошло, они ответили, что это из-за того, что я модифицировал программу между двумя сеансами отладки, не закрывая CICS. Это была неисправность, которой можно избежать, закрыв CICS, пока мы компилируем используемые в ней программы (не уверен, почему именно.... они тоже). Надеюсь, это поможет, если вы столкнетесь с похожей проблемой при отладке DTCN.

person bmakos    schedule 05.09.2014
comment
Спасибо за обновления. Я никогда не слышал о необходимости закрывать CICS для выполнения компиляции. Необходимо сообщить работающей CICS, что у вас есть новая программа, и, возможно, какой-то ее версии будет достаточно. - person Bill Woodger; 05.09.2014
comment
Я согласен, и я так и сделал (CEMT SET PROG() NEWCOPY). Видимо, в этом случае что-то пошло не так, хотя мы не закрываем CICS для компиляции новой программы, а затем ее CEMT. К сожалению, служба поддержки не может точно сказать, что произошло, у них нет времени на расследование после того, как проблема будет решена. - person bmakos; 05.09.2014