Меню

Инструкция по использованию отладчика

|

Использование отладчика (Debugger)

Введение: назначение отладчика

Как известно, отладчик предназначен для пошагового выполнения программ с целью наблюдения за значением переменных и управления их значениями. Его используют при:

  1. Поиске ошибок в работе программы,
  2. Определении последовательности обращений к данным,
  3. Отслеживании алгоритма расчета  значений.

Существуют несколько способов запуска исполнения программного кода в режиме отладки:

  1. Из специализированных транзакций
    1. Из навигатора объектов SE80 – Program – Test –Debugging
    2. Из ABAP- редактора SE38 – Program – Execute – Debugging (Рис.1);
    3. Из исходного кода Program – Test – Debugging;
    4. Установка точек прерывания через ABAP - редактор
  2. В любом окне системы:
    1. Из любого экрана System – Utilities – Debug ABAP
    2. Из любого экрана вводом «/h» в командном окне (Рис.2)

Рис. 1 Транзакция SE38 –запуск отладчика

Рис. 2 Запуск отладчика  в любом окне системы

В том случае, когда известно имя выполняемой программы, удобно воспользоваться ABAP-редактором. Если же имя выполняемой программы неизвестно, либо программа имеет сложную структуру вызова, то удобнее воспользоваться вызовом отладчика с помощью команды «/h».

Вход в отладчик (возможен двумя путями):

  • Установка точек прерывания в исполняемой программе
  • Выполнение программы в режиме отладки.

Точка прерывания – сигнал в строке кода, который вызывает прекращение выполнения программы на этой строке и запускает ABAP-отладчик.

Перезапуск отладчика

  • Находясь в отладчике, необходимо выбрать: Debugging ® Restart. При этом режим отладки прекратится, и система вызовет начальный экран, из которого отладчик был запущен.

Выключение отладчика (продолжить выполнение программы в обычном режиме)

  • Без выхода из отлаживаемой программы: Debugging ® Debugging off

Выход из отладчика с выходом из программы

  • Находясь в отладчике: Debugging ® Exit

Выход из режима отладки с последующим выполнением программы имеет особенность – режим отладки может быть возобновлен в случае наличия точек прерывания в модуле программы.

Интерфейс

Отображение исходного кода

Позиционирование на указанном столбце кода

  • Ввести номер столбца и нажать Enter.

Позиционирование на указанной строке кода

  • Ввести номер столбца и нажать Enter.

Увеличение фрагмента кода

  • Нажать кнопку . Код отображается на весь экран.

Позиционирование на текущем операторе

  • Нажать кнопку .

Доступные способы отображения данных

  • Fields – демонстрация/изменение  содержимого полей
  • Table – демонстрация/изменение содержимого внутренних таблиц
  • Breakpoint – демонстрация /удаление до последующих 30 точек прерывания.
  • Watchpoint – демонстрация/изменение/удаление точек наблюдения
  • Calls – демонстрация перечня событий программы и последовательности их вызова до момента точки прерывания. Последнее вызванное событие отображается в верху списка. При завершении события оно удаляется из списка.
  • Overview – обзор структуры программы: события, подпрограммы и модули.
  • Settings – текущие настройки отладчика.

Управление отладкой

  • Выполнить отдельный шаг (F5) или кнопка  или меню Debugging ® Control ® Single Step

Позволяет выполнить оператор в текущей строке с заходом в вызываемую подпрограмму/функцию/программу (Рис. 3)

Рис. 3 Отладчик

  • Выполнить (F6) или кнопка  или меню Debugging ® Control ® Execute

Позволяет выполнить оператор в текущей строке с обходом вызываемой подпрограммы/функции/программы

  • Выполнить Возврат (F7) или кнопка  или меню Debugging ® Control ® Return

Возвращает из вызываемой подпрограммы/функции/программы в главную программу

  • Выполнить Дальше (F8) или кнопка   или меню Debugging ® Control ® Run

Запускает выполнение программы до следующей точки прерывания

Просмотр/изменение значений полей

  • Для просмотра значения поля необходимо скопировать его название в нижней части экрана:

 

Нажмите Enter, значение поля отобразится.

Так же можно отобразить значение поле для просмотра двойным щелчком по этому полю.

  • Если выведено много полей для просмотра значений, то их можно пролистывать постранично или построчно кнопками .
  • Для удаления всех полей из области просмотра воспользуйтесь кнопкой .
  • Постоянно отображаются значения четырёх наиболее важных системных полей:

 

Sy-subrc –- системная переменная, хранящая код возврата: результат выполнения какого-либо действия. 0 – действие выполнено успешно. Другие значения зависят от исполняемого оператора.

Sy-tabix – текущий индекс строки, читаемой внутренней таблицы.

Sy-dbcnt – число считанных строк из БД

Sy-dynnr – номер экрана.

Можно просматривать значения и других системных переменных из структуры Syst. Для этого необходимо в поле структуры для названия поля переменной sy-<название поля>.

  • Можно отобразить значения переменных внешних программ, через которые вы проходили в процессе исполнения. Для этого надо указать имя программы и переменной: (имя программы)имя поля. Например: (SAPMSCLM)ACTION
  • Специальные способы отображения:
    • подстрока для символьной строки <поле>+<позиция символа>(<количество символов>). Отсчёт позиции символа начинается с 0. Например: sy-datum+2(2)
    • Произвольное поле внутренней таблицы: <имя таблицы>[номер строки]-<имя поля>. Напр.: itab[1]-field
    • Просмотреть тип переменной можно, дважды щёлкнув по полю, где указано его название.
  • Для изменения значения поля в отладчике необходимо отобразить его значение и изменить на требуемое. После чего нажать  напротив этого значения. Дальнейшее выполнение программы происходит с использованием нового значения переменной. Если вы не нажмёте эту кнопку, то изменения значения поля не произойдёт.

Просмотр/изменение внутренних таблиц

Для отображения внутренних таблиц переключитесь в режим просмотра таблиц (нажмите кнопку ) и скопируйте название таблицы в поле «ВнутрТаблица».

  • С помощью кнопки  можно просмотреть перечень ранее просмотренных таблиц.
  • С помощью кнопки  можно просмотреть журнал использования таблицы.
  • Также можно указать формат просмотра таблицы и увеличить область просмотра таблицы.
  • Для просмотра определённой строки/поля введите номер строки/название поля в заголовок таблицы
  • В отладчике можно изменять содержимое полей таблицы, добавлять и удалять строки.
    • Изменение строки: позиционируйте курсор на нужной строке и нажмите кнопку
    • Вставка строки в произвольном месте: позиционируйте курсор на строке, перед которой необходимо вставить новую строку и нажмите кнопку
    • Добавление строки: для добавления строки в конец таблицы нажмите кнопку
    • Удаление строки: позиционируйте курсор на строке, предназначенной для удаления, и нажмите  

Прочие функции

  • Просмотр

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев10

Комментарий от  

Евгения Попова

  |  29 января 2016, 19:20

Очень полезная информация, изложенная в простой, доступной и понятной форме. Думаю, она поможет сотням консультантов, как начинающим свой путь в области внедрения SAP систем, так и специалистам по технической поддержке и сопровождению, коллегам, не связанным непосредственно с абап-разработками, и ускорит решение многих задач.

Комментарий от  

Илья Левченко

  |  02 февраля 2016, 07:02

Одна из полезных функций - область отладки (в свежих версиях SAP). Задаем Z* и смотрим только код проекта, без системной обработки, например ALV. В версии 4.7 можно изобразить нечто аналогичное - точку наблюдения  на sy-repid(1) = Z

Комментарий от  

Антон Сорокин

  |  02 февраля 2016, 12:37

>>Запустите браузер данных необходимой таблицы. (se16, se11).
С каких пор SE11 стало браузером данных? :)
 
В SE16 у меня это не сработало, не вижу переменную CODE. Базис 7.40.

Комментарий от  

Олег Точенюк

  |  02 февраля 2016, 13:59

>>Запустите браузер данных необходимой таблицы. (se16, se11).
С каких пор SE11 стало браузером данных? :)
 
В SE16 у меня это не сработало, не вижу переменную CODE. Базис 7.40.

Картинку с какого места хотите попасть в отладчик можете привести?

Комментарий от  

Антон Сорокин

  |  12 февраля 2016, 17:30

Картинку с какого места хотите попасть в отладчик можете привести?

Комментарий от  

Антон Сорокин

  |  12 февраля 2016, 17:30

Комментарий от  

Олег Точенюк

  |  13 февраля 2016, 14:42

А вот тут никогда ни не попадали в режим просмотра переменной CODE, в этот режим можно попасть выбрав конкретную запись:

Далее уже попадаем в отладчик, но в новых системах мы попадаем в метод:

Вот в этом методе жмем F7 и попадаем уже в модуль с доступом к переменной CODE

 
В более ранних системах, до 7.40 вроде как сразу попадаешь в модуль где доступна переменная CODE.

Комментарий от  

Олег Башкатов

  |  07 мая 2017, 11:53

>>Запустите браузер данных необходимой таблицы. (se16, se11).
С каких пор SE11 стало браузером данных? :)
 
В SE16 у меня это не сработало, не вижу переменную CODE. Базис 7.40.

Если из начального экрана, то нужно обращать внимание на переменную action.
 
и перед установкой статуса экрана ( set pf-status 'XXXX' excluding excl_tab.) - смотреть на таблицу excl_tab и почистить ее - тогда будут доступны все функции при открытии таблицы.
 

Комментарий от  

Олег Башкатов

  |  07 мая 2017, 17:26

А вот тут никогда ни не попадали в режим просмотра переменной CODE, в этот режим можно попасть выбрав конкретную запись:

Далее уже попадаем в отладчик, но в новых системах мы попадаем в метод:

Вот в этом методе жмем F7 и попадаем уже в модуль с доступом к переменной CODE

 
В более ранних системах, до 7.40 вроде как сразу попадаешь в модуль где доступна переменная CODE.

это включена системная отладка.
/hs или галочка в настройках.
 
сам постоянно натыкаюсь, особенно для CRM  и SolMan (там нет SE16N)
 
если нужна точка захожу и ставлю тут
SAPLSETB form SET_STATUS_VAL
и деактивирую, если не нужна

Комментарий от  

Евгений Данилович

  |  07 июня 2018, 06:38

Одной из важных опций отладчика является Debug Modes. Если вам необходимо отладить, например, модуль обновления то в 'простом' режиме отладки вы в него не провалитесь. Обязательно установите внешнюю точку остановки в модуле обновления. Запустите транзакцию в режиме отладки, перейдите в пункт меню 'Параметры настройки -> изменить профиль отладч./парам. настр.'. В разделе Debug Modes отметьте пункт Update 'Debugging', сохранить.