Управление шагом отладки

Минимальным шагом отладки является один оператор языка программирования (в нашем случае это ABAP). Следует сразу отметить, что различные математические операции не относятся к операторам – это составляющие выражения. А вот знак =, например, это именно оператор – оператор присвоения значения выражения, стоящего справа от него, переменной слева от него. Ключевые слова для объявления переменных и типов также не относятся к операторам. Таким образом, если мы дадим с помощью отладчика команду выполнить минимальный шаг, программа выполнит текущий оператор, перейдет к следующему и остановится. При этом мы снова окажемся в отладчике. Если какие-либо данные были изменены во время шага, отладчик покажет нам их текущие значения. Большинство необходимых команд отладчика присвоены горячим клавишам – так выполнение отдельного шага назначено на клавишу F5. Кроме того, эту команду можно выполнить, выбрав соответствующий пункт меню Отладчик-Отдельный шаг (в старом отладчике Отладка-Управление-Отдельный шаг) или нажав кнопку

на панели инструментов.

Теперь представим ситуацию, что в процессе отладки мы остановились на операторе вызова подпрограммы, функции, метода или чего-то похожего (назовем это все «подпрограммой»). Если дать команду выполнить отдельный шаг, управление будет передано внутрь вызываемой подпрограммы и вам придется проходить ее всю также по шагам. Если Вы уверены что то, что происходит внутри подпрограммы не вызывает ошибки, которую вы ищете, или просто в данный момент Вам не интересно, то всю подпрограмму можно выполнить за 1 шаг. Для этого предназначена соответствующая команда «Выполнить», назначенная на клавишу F6. Эту команду можно давать и при выполнении обычных операторов, в этом случае ее действие совпадает с выполнением команды отдельного шага по F5. В меню она находится в том же подразделе, что и команда «Отдельный шаг», а кнопка для нее выглядит так .

Чтобы объяснить следующую команду отладки, стоит поговорить про стек вызовов. Стеком называется хранилище неких сущностей, из которого сущности могут быть извлечены в порядке обратном их помещению в стек. Если вы когда-нибудь слышали про LIFO – это и есть стек.

Стеком вызовов называется цепочка вызовов подпрограмм, которые привели нас в текущее место программы. При этом на вершине стека располагается текущая выполняемая подпрограмма, а на его дне – то место, откуда началось выполнение. При вызове подпрограммы она помещается на вершину стека и становится текущей. При выходе из текущей подпрограммы она удаляется из стека и на вершине оказывается та подпрограмма, из которой была вызвана текущая, и, таким образом, сама становится текущей.

Для нас сейчас важно, что мы можем дать команду выполнить текущую подпрограмму до конца и выйти из нее. При этом программа остановится, и мы окажемся в отладчике на операторе, следующем за вызовом той подпрограммы, из которой мы вышли. Такая команда называется «Возврат» и назначена на клавишу F7 (и также присутствует в меню и панели инструментов). Очень полезно если вы случайно провалились в подпрограмму по F5, поняли, что хотели нажать F6 и Вам тут не интересно, и хотите вернуться. Кнопка для этой команды выглядит так .

Следующая команда «Дальше» сама простая – она запускает программу с текущего места в обычном режиме. Программа остановится только в точке прерывания, о типах которой поговорим ниже, либо отработает полностью и завершится. Команда назначена на клавишу F8. В классическом (старом) отладчике эта команда объединена со следующей. Кнопка выглядит следующим образом .

Команда «Выполнить до курсора» – запускает программу и заставляет ее остановиться в месте, на котором установлен курсор. Если курсор установлен не в текущей подпрограмме или выше текущей команды – поведение аналогично команде «Дальше». В новом отладчике команда назначена на сочетание клавиш Shift+F8. В классическом отладчике, эта команда объединена с предыдущей – при ее вызове, если в процессе выполнения программы будет достигнуто место, на котором установлен курсор, программа остановится, и вы окажетесь в отладчике. Иначе программа будет выполнена до конца или до точки прерывания.

Еще одна команда «Перейти к оператору» позволяет переходить на любой оператор текущей подпрограммы без выполнения команд между ним и текущим оператором, на котором остановлена программа. Эта команда позволяет, как переходить вперед, например, пропуская какие-либо проверки, так и возвращаться назад, повторяя отдельные части подпрограммы. Для перехода необходимо установить курсор в тексте программы на нужное место и дать эту команду. В новом отладчике она назначена на сочетание клавиш Shift+F12. В классическом отладчике вызывается только через меню.

В классическом отладчике есть еще одна команда «Выполнить PAI-/PBO-модуль». По этой команде возобновляется обычная работа программы как при команде «Дальше». Но как только начинает выполняться PAI или PBO логика экрана – программа вновь останавливается, и Вы попадаете в отладчик.

Кроме команд управления отладкой есть две команды для ее прекращения. При этом первая отключает отладку, и работа программы продолжается в обычном режиме. Вторая отключает отладку и прерывает дальнейшее выполнение программы. Данные команды в новом отладчике называются «Завершить работу» и «Выход из приложения и отладчика», а в старом «Выключить отладку» и «Перезапуск», соответственно. Отключить отладку и прекратить выполнение программы также можно стандартными кнопками выхода и отмены на панели инструментов.

Загрузка...