Часто, возникает потребность трассировки тех или иных фоновых процессов. Одно дело, если мы сможем сделать все это в системе разработки.
1. Делаем бесконечный цикл с выходом по условию.
2. Запускаем программу
3. Переходим в sm50, выбираем наш процесс
4. В меню выбираем Администрирование->Программа->Отладка
5. Открывается экран отладки, в нем мы меняем значение нашей переменной, чтобы выйти из бесконечного цикла и начинаем отладку.
Однако, бывают случаи когда этот метод не работает. Т.к., например, в продуктивной системе нельзя менять значения переменных в отладчике(Можно конечно делать временную задержку вместо бесконечного цикла). Да и нести такой код в продуктив как-то не очень красиво.
В таких случаях можно воспользоваться ФМом k_plan_wait_for_debugging.
Вызываем ФМ k_plan_wait_for_debugging в нужном месте нашей программы с параметрами.
Например:
Далее, если нам необходима отладка, прописываем эти параметры в таблице t811flags.
Запускаем нашу программу и переходим в SM50/SM51.
Находим нужный процесс, выделяем его и в меню выбираем Администрирование->Программа->Отладка
В открывшемся окне отладки, если есть полномочия, можно поменять значение переменной lb_exit на "X". Или подождать пока не кончится время задержки.
Если отладка больше не нужна, удаляем параметры из таблицы t811flags.
Все, ФМ больше не будет давать нам задержку.
Можно в Sm37 отметить джоб, и выполнить команду JDBG, откроется отладчик. Если есть точка остановки в коде, то можно нажать F8, иначе аккуратненько по стеку добраться до нужной программы.