Символьна налагодження HLASM-додатків з використанням Rational Developer for System z і Debug Tool

  1. Малюнок 1. Панель виду Remote Systems з ідентифікаційними настройками
  2. Налаштування JCL процедури ELAXFADT
  3. Лістинг 1. JCL процедура ELAXFADT для ассемблирования HLASM коду і генерації мета-даних, що містять зневадження
  4. Створення проекту і підпроекту
  5. Малюнок 2. Визначення JCL процедури для генерації налагоджувальних мета-даних.
  6. Малюнок 3. Перевірка значень змінних JCL процедури
  7. Малюнок 4.
  8. Лістинг 2. Вихідний код програми на LE-асемблері
  9. збірка додатки
  10. Малюнок 5. Так виглядає проект в результаті успішної збірки додатку
  11. Завантаження налагоджувальної інформації
  12. Малюнок 6. Команда ldd dbgmain
  13. Малюнок 7. Встановлення параметрів виконання програми
  14. Малюнок 8. Додаток запущено в режимі налагодження
  15. Корисні поради
  16. Малюнки 9. Змінюються значення змінних в панелі вигляду Monitors
  17. Малюнок 10. Виконання додаток зупинено на контрольній точці
  18. Малюнок 11. Покрокове виконання програми та відстеження відповідних даних
  19. Малюнок 12. Відстеження даних регістрів
  20. висновок
  21. Ресурси для скачування

IBM Rational Developer for System z V7.1 (надалі Developer for z) - інтегроване середовище розробки на платформі Eclipse, що дозволяє програмістам працювати з додатками і ресурсами безпосередньо на z / OS. Перспектива Debugging середовища Developer for z дозволяє оптимальним чином використовувати засоби налагодження Debug Tool for z / OS V8.1 і Debug Tool Utilities and Advanced Functions V8.1.

Debug Tool і Debug Tool Utilities and Advanced Functions - додаткові продукти, що дозволяють налагоджувати програми на COBOL, PL / I, C, C ++ і High Level Assembler (HLASM). Символьна інформація, доступна в перспективі налагодження включає в себе імена точок входу і змінних, мітки і регістри, включаючи регістри загального призначення і регістри з плаваючою точкою.

Для роботи з символьної інформацією HLASM-додатки, Debug Tool Utilities and Advanced Functions включає в себе спеціальну утиліту для генерації мета-даних програми на HLASM, підтримуваному в мовному середовищі LE. Для символьної налагодження програми від вас не буде потрібно знання формату метаданих. У статті наводиться приклад того, як організувати символьну налагодження HLASM-додатки. Як приклад використовується проста програма на асемблера, код якої можна скачати в розділі Завантаження .

Інструкції, наведені в статті, припускають, що ви є зареєстрованим користувачем з коректним ідентифікатором userid в системі z / OS, на якій і буде працювати ваша програма. Конфігурація Developer for z повинна бути правильно налаштована для віддаленої роботи на z / OS. Детальна інформація про Developer for z і, зокрема, про настройках для віддаленої роботи з z / OS, наводиться в IBM Enterprise Modernization Demos в розділі ресурси .

Після того як ви налаштували Developer for z для віддаленої роботи з z / OS і пройшли ідентифікацію в системі, використовуючи свій унікальний userid і пароль, панель виду Remote Systems буде виглядати приблизно так:

Малюнок 1. Панель виду Remote Systems з ідентифікаційними настройками
IBM Rational Developer for System z V7

Короткий опис кроків

Для символічної налагодження програми на LE HLASM в середовищі Developer for z необхідно виконати наступні кроки (докладний опис кожного пункту наводиться нижче):

  1. Налаштування JCL процедури , Яка включає в себе крок генерації мета-даних для Debug Tool.
  2. Створення MVS-проекту і підпроекту із зазначенням JCL процедури і її відповідних налаштувань.
  3. Створення програми на асемблері .
  4. побудова додатки .
  5. Запуск програми в режимі налагодження .
  6. Використання символьної інформації , Що міститься в вашому HLASM-додатку.

Налаштування JCL процедури ELAXFADT

Для налагодження програми на HLASM, підтримуваному в середовищі LE, вам необхідно створити файл мета-даних, який містить інформацію про символи, які використовуються в ассемблерной програмі. Ця інформація зберігається в спеціальному форматі і використовується Debug Tool для налагодження програми. Файл мета-даних також відомий як IDILANGX або EQALANGX файл. Це бібліотечний набір даних (Partitioned dataset - PDS) з форматом запису RECFM = VB і довжиною LRECL = 1562.

Пакет Debug Tool Utilities and Advanced Functions включає в себе спеціальну утиліту для генерації IDILANGX файлу з ADATA файлу, згенерованого HLASM при асемблюванні додатки. Для запуску отладочной утиліти EQALANGX скористайтеся JCL-процедурою ELAXFADT, яка включена в дистрибуцію Developer for z і повинна бути встановлена ​​вашим системним адміністратором (див. Лістинг 1).

Лістинг 1. JCL процедура ELAXFADT для ассемблирования HLASM коду і генерації мета-даних, що містять зневадження

// ASMDEBUG PROC LNGPRFX = 'D94PP.HLASM' // ASM EXEC PGM = ASMA90, REGION = 2048K, // PARM = ( 'TEST', // 'ADATA', // 'SYSPARM (MVS)', // ' LIST ') // STEPLIB DD DSN = & LNGPRFX..LINKLIB, DISP = SHR // SYSPRINT DD SYSOUT = * // SYSLIN DD DUMMY // SYSUT1 DD UNIT = SYSALLDA, SPACE = (CYL, (1,1)) // SYSUT2 DD UNIT = SYSALLDA, SPACE = (CYL, (1,1)) // SYSUT3 DD UNIT = SYSALLDA, SPACE = (CYL, (1,1)) // SYSUT4 DD UNIT = SYSALLDA, SPACE = (CYL, ( 1,1)) // SYSUT5 DD UNIT = SYSALLDA, SPACE = (CYL, (1,1)) // SYSUT6 DD UNIT = SYSALLDA, SPACE = (CYL, (1,1)) // SYSUT7 DD UNIT = SYSALLDA , SPACE = (CYL, (1,1)) // * // SYSTERM DD SYSOUT = * // SYSADATA DD DSNAME = & ADATADS (& MEM), DISP = SHR // XTRACT EXEC PGM = EQALANGX, REGION = 32M, // PARM = '& MEM (ASM ERROR OFT IDILANGX FAULT' // SYSADATA DD DSNAME = & ADATADS (& MEM), DISP = SHR // IDILANGX DD DSNAME = & LANGXDS (& MEM), DISP = SHR

Системного адміністратора, можливо, доведеться трохи модифікувати JCL процедуру, наведену в лістингу 1, для коректної роботи на вашій системі z / OS. Наприклад, значення LNGPREX в лістингу може не відповідати вашій установці. Переконайтеся, що всі параметри, які використовуються ассемблером (такі як ADATA і TEST), коректно визначені.

JCL процедура використовує такі змінні:

  • ADATADS - вказує на набір даних ADATA, що містять інформацію HLASM ADATA. JCL процедура передбачає, що такий набір вже створений і є бібліотечним набором даних фіксованої довжини PDS / E з параметрами RECFM = VB and LRECL = 8188.
  • LANGXDSопределяет набір для зберігання спеціальним чином відформатовані мета-даних, які Debug Tool використовує при налагодженні програми. JCL процедура також вважає, що такий набір вже створений і є бібліотечним набором даних фіксованої довжини PDS / E з параметрами RECFM = VB and LRECL = +1562. За замовчуванням ім'я цього набору даних задається в форматі <userid> .EQALANGX. Якщо ви хочете використовувати інший формат імені, вам буде потрібно створити DDNAME EQADEBUG для посилання на набір даних EQALANGX PDS / E під час налагодження програми.
  • MEM - визначає ім'я розділу для наборів даних ADATA і EQALANGX.

Створення проекту і підпроекту

У середовищі розробки Developer for z:

  1. Створіть проект і підпроект. У нашому прикладі вони названі PLEX4Bhlasm і HLASMDebug відповідно.
  2. Вкажіть виклик процедури ELAXFADT в параметрах асемблера і визначте значення змінних, які використовуються в процедурі. Для цього відредагуйте крок ASM і вкажіть ім'я JCL процедури ELAXFADT як показано на наступному малюнку.
    Малюнок 2. Визначення JCL процедури для генерації налагоджувальних мета-даних.
  3. У вікні налаштувань асемблера Assembler Settings відкрийте закладку JCL Substitutions і переконайтеся, що ваші налаштування такі самі прикладу, показаним на малюнку 3.

    Малюнок 3. Перевірка значень змінних JCL процедури

    Використання MEM в якості глобальної змінної дуже зручно в разі, якщо в проект включено кілька HLASM файлів, так як в цьому випадку ім'я розділу в файлі вихідного коду проекту використовується як змінна підстановки для кожного запуску JCL процедури.

  4. Переконайтеся, що поле Application Entry Point вказує на точку входу для HLASM асемблера.
    Малюнок 4.

Створення програми на асемблері

Тепер нам потрібно створити вихідний код програми в системі z / OS. Для написання коду скористаємося можливостями Developer for z:

  1. Створіть набір даних для нашої програми. В панелі вигляду Remote Systems клацніть правою кнопкою мишки на MVS Files. У контекстному меню виберіть опцію Allocate PDS.
  2. У вікні майстра створення PDS вкажіть ім'я набору даних. У нашому прикладі це ENGLAND.SOURCE.ASSEMBLE. Переконайтеся, що значення крайнього праворуч параметра відповідає ASSEMBLE. Натисніть Next.
  3. Виберіть опцію Specify characteristics by usage type, вкажіть значення SOURCE і ASM.
  4. Натисніть Finish.
  5. Розпакуйте архів з кодом програми (див. Завантаження ) На вашій локальній системі Microsoft® Windows®. В панелі вигляду Remote Systems розкрийте папку Local. У дереві локальної файлової системи знайдіть вихідний файл нашого застосування і клацніть на ньому правою кнопкою мишки. У контекстному меню виберіть команду Copy.
  6. Щоб перенести асемблерний код з вашої системи Windows на віддалену систему z / OS, в панелі вигляду Remote System знайдіть в дереві системи z / OS створений раніше PDS, клацніть на ньому правою кнопкою мишки, і в розпочатому контекстом меню виберіть команду Paste.
  7. Додайте файл в підпроект, властивості якого ми визначили раніше. Для цього розгорніть щойно створений PDS, знайдіть вихідний файл, який ви скопіювали і вставили в цей набір даних, щоб перейти до імені розділу PDS і перетягніть його мишкою з панелі вигляду Remote Systems в підпроект (в нашому прикладі це HLASMDebug).

Асемблерний код додатка приведений в лістингу 2. Архів, що містить файл з вихідним кодом, можна скачати в розділі Завантаження .

Лістинг 2. Вихідний код програми на LE-асемблері

DBGMAIN CEEENTRY PPA = MAINPPA, AUTO = WORKSIZE, MAIN = YES USING WORKAREA, R13 * LA R2, STRT_MSG LA R3, DEST LA R4, FBCODE STM R2, R4, PLIST LA R1, PLIST L R15, MOUT BALR R14, R15 * PACK PCKA, ZNA PACK PCKB, ZNB PACK PCKC, ZNC ZAP PCKSUM, PCKA AP PCKSUM, PCKB AP PCKSUM, PCKC MVC OUTSUM, SUMMSK ED OUTSUM, PCKSUM MVC SUMMSG + 1 (8), OUTSUM MVC LINE_ST, SUMMSG * LA R2, LINE_MSG LA R3, DEST LA R4, FBCODE STM R2, R4, PLIST LA R1, PLIST L R15, MOUT BALR R14, R15 * LA R2, DONE_MSG LA R3, DEST LA R4, FBCODE STM R2, R4, PLIST LA R1, PLIST L R15 , MOUT BALR R14, R15 * CEETERM RC = 0 * ====================================== ======================== * Constants and Variables * ===================== ========================================= ZLEN EQU 5 PLEN EQU ZLEN / 2 + 1 * SUMMSG DC C '(xxxxxxxx) - The sum' SUMMSK DC X'4020202020202120 'ZNA DC ZL5'100' ZNB DC ZL5'150 'ZNC DC ZL5'50' * PCKA DS PL (PLEN) PCKB DS PL (PLEN ) PCKC DS PL (PLEN) PCKSUM DS PL (PLEN + 1) OUTSUM DS CL (L'SUMMSK) * MOUT DC V (CEEMOUT) The CEL Message service * LINE_MSG DS 0F DC AL2 (LI NE_END-LINE_ST) LINE_ST DS CL25 LINE_END EQU * * STRT_MSG DS 0F DC AL2 (STRT_END-STRT_ST) STRT_ST DC C'Starting the program. ' STRT_END EQU * * DONE_MSG DS 0F DC AL2 (DONE_END-DONE_ST) DONE_ST DC C'Terminating the program. ' DONE_END EQU * * DEST DC F'2 'The destination is the MSGFILE * MAINPPA CEEPPA * =============================== ==================================== * The Workarea and DSA * ======== ================================================== ========= WORKAREA DSECT ORG * + CEEDSASZ PLIST DS 0D PARM1 DS A PARM2 DS A PARM3 DS A PARM4 DS A PARM5 DS A * FBCODE DS 3F * DS 0D WORKSIZE EQU * -WORKAREA CEEDSA Mapping of the Dynamic Save Area CEECAA Mapping of the Common Anchor Area * R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 END DBGMAIN Nominate DBGMAIN as the entry point

збірка додатки

Для побудови програму, виконайте такі кроки:

  1. Переконайтеся, що всі набори даних, зазначені у властивостях проекту, створені. Ці набори даних використовуються в JCL процедурі, що відповідає за складання програми.
  2. Виділіть ім'я підпроекту (в нашому прикладі це HLASMDebug), клацніть на ньому правою кнопкою мишки. У контекстному меню виберіть команду Rebuild Subproject.
  3. Перевірте висновок JES, щоб переконається, що додаток побудувалася без помилок. Для того щоб відкрити висновок JES у вікні редактора, двічі клацніть на завданні.
  4. Якщо висновок JES містить помилки, виправте їх і перебудуйте додаток.

Якщо збірка додатки пройшла успішно, в проект додасться ім'я розділу завантажувального модуля. У прикладі це ENGLAND.EXEC.LOAD (DBGMAIN).

Важливо: Developer for z штучно додає розширення .exe до імені модуля. Насправді це розширення не є частиною імені модуля.

Малюнок 5. Так виглядає проект в результаті успішної збірки додатку

Запуск програми в режимі налагодження

Для запуску програми виконайте наступні дії:

  1. У підпроект виділіть виконуваний модуль ENGLAND.EXEC.LOAD (DBGMAIN) .exe.
  2. Клацніть правою кнопкою мишки на імені модуля, в контекстному меню виберіть команду Debug Application.
  3. Для налагодження програми автоматично відкриється перспектива Debug. Якщо в параметрах настройки Developer for z автоматичне перемикання в іншу перспективу без згоди користувача заборонено, Developer for z виведе на екран запит про перемикання. Натисніть Yes щоб відкрити перспективу Debug.

Завантаження налагоджувальної інформації

Тепер вам необхідно завантажити інформацію про символьних даних вашого HLASM додатки. Скористайтеся командою LoadDebugData (ldd) для завантаження мета-даних для Debug Tool.

Переконайтеся, що в перспективі Debug відкрита панель виду Debug Console. Якщо такої панелі немає, виконайте наступні кроки, щоб відкрити її:

  1. Клацніть на кнопці Windows головного меню. У списку, виберіть пункт Show View.
  2. Клацніть на пункті Other.
  3. У списку панелей виду виберіть Debug Console і відкрийте цю панель. Команда LoadDebugData (ldd) завантажить мета-дані для поточної отладочной сесії.
  4. Введіть команду ldd dbgmain, де dbgmain - ім'я розділу набору даних EQALANGX, який ми вказали у властивостях проекту і створили під час побудови програми. Приклад команди показаний на малюнку 6.
    Малюнок 6. Команда ldd dbgmain

Якщо при генерації налагоджувальних мета-даних ви використовували формат імені, відмінний від <userid> .EQALANGX, то вам слід вказати JCL процедурі, призначеної для виконання HLASM додатки, нове ім'я набору даних, скориставшись інструкцією DDNAME EQADEBUG. Це можна зробити в панелі визначення параметрів виконання програми як показано на малюнку 7.

Малюнок 7. Встановлення параметрів виконання програми

Тепер при запуску програми в режимі налагодження ви можете крок за кроком виконати додаток, призначати точки зупину, відстежувати значення змінних, переглядати і змінювати (обережно!) Вміст регістрів і використовувати інші можливості Debug Tool. При цьому вікно Developer for z має виглядати, як показано на малюнку 8.

Малюнок 8. Додаток запущено в режимі налагодження
  1. Скориставшись кнопкою Step Into панелі вигляду Debug View (верхня ліва частина перспективи Debug), ви можете покроково пройти додаток, виконуючи одну інструкцію за один крок.
  2. Після того, як ви почали виконання програми в режимі налагодження, перемістіть курсор на ім'я змінної і затримайте його там на деякий час - поточне значення змінної з'явиться в спливаючому вікні.
  3. Перейдіть до імені змінної і клацніть на ньому правою кнопкою мишки. У контекстному меню ви можете вибрати одну з дій, які можна застосувати до даної змінної, наприклад, перегляд пам'яті. Ця опція особливо корисна в разі, якщо змінна містить машинний адресу.

Тепер ви можете налагоджувати свій додаток, використовуючи імена змінних, визначених у асемблерному коді.

Корисні поради

Для того щоб максимально ефективно використовувати площу вікна перспективи Debug в середовищі Developer for z, ви можете перемістити закладку Register в область, що знаходиться безпосередньо праворуч від панелі Listing, де показаний лістинг вашої програми. Для цього просто перетягніть мишкою ятати Register на верхню частину панелі вигляду Outline. Тепер ви можете бачити регістри загального призначення одночасно з панеллю виду Monitors або Breakpoints.

Змінні і їх значення не відображаються в панелі вигляду Variables. Однак ви можете відстежувати значення змінної, двічі клацнувши по ній мишкою. Інша можливість подивитися значення змінної - клацнути по ній правою кнопкою мишки і вибрати в контекстному меню опцію Monitor Expression. Вираз буде показано в панелі вигляду Monitors. У наведеному нижче прикладі таким способом відстежується значення змінної OUTSUM.

Малюнки 9. Змінюються значення змінних в панелі вигляду Monitors

Ви можете задати точку зупину, двічі клацнувши мишкою на лівій межі тієї рядки вихідного коду, де ви хочете зупинити налагодження. Малюнок 10 показує точку зупину на рядку 58 вихідного коду HLASM.

Клацніть на кнопці Resume action Клацніть на кнопці Resume action   у верхній частині панелі вигляду Debug View - додаток буде виконуватися до тих пір, поки не досягне призначеної точки зупину у верхній частині панелі вигляду Debug View - додаток буде виконуватися до тих пір, поки не досягне призначеної точки зупину. Тоді виконання зупиниться, і система буде чекати подальших дій користувача.

Малюнок 10. Виконання додаток зупинено на контрольній точці

Скористайтеся командою set automonitor on в вікні Debug Console для відображення даних, відповідних інструкції HLASM, яка буде виконана при наступній команді step.

На наведеному нижче прикладі видно, що на наступному кроці буде виконана асемблерна інструкція STM - саме вона виділена в лістингу програми.

Малюнок 11. Покрокове виконання програми та відстеження відповідних даних

Дані, що відповідають цій інструкції, відображаються в панелі вигляду Monitors. Інструкція STM збереже значення регістрів 2, 3, і 4 за адресою, розташованому в регістрі 13, з відповідним зміщенням (X'80 '). Додатково в панелі Monitors виводиться значення мітки PLIST.

Малюнок 12. Відстеження даних регістрів

У міру покрокового виконання програми панель Monitors відображає нові дані, пов'язані з тією інструкцією асемблера, яка буде виконана на наступному кроці.

висновок

Можливість символьної налагодження HLASM додатки на рівні коду значно збільшує продуктивність роботи розробника. Rational Developer for System z в поєднанні з Debug Tool і Debug Tool Utilities and Advanced Functions забезпечують можливість символьній налагодження додатків на HLASM, а також надають єдиний гнучкий інтерфейс для такої налагодження. Процес генерації і завантаження мета-даних для символьного налагодження HLASM додатків дуже простий, в чому ви вже змогли переконатися в процесі налагодження наведеного в статті приклад.

Ресурси для скачування

Схожі теми

Підпишіть мене на повідомлення до коментарів