|
Многие программы создаются в режиме непосредственного взаимодействия программиста с машиной, и в этих случаях целесообразно использовать более широкие возможности, предоставляемые доступом с терминала для повышения эффективности процесса отладки. В подавляющем большинстве методы отладки, применяемые в системах пакетной обработки, пригодны для использования и в системах с разделением времени, однако особенности интерактивного режима функционирования последних требуют учета некоторых дополнительных факторов и привлечения ряда новых средств отладки.
Прежде всего наивно пытаться отлаживать программу в интерактивном режиме, не имея листинга, в правильности которого вы убеждены. Приходится только удивляться, как часто программисты этого не понимают, особенно когда в их распоряжение предоставлен экранный терминал. Мне доводилось видеть людей, которые, сидя за таким терминалом, неистово меняли строки программы одну за другой, но это не приводило ни к какому результату. В подобной ситуации невозможно добиться успеха, если нет распечатки, позволяющей понять, что происходит с программой.
В системах.с разделением времени часто имеются специальные средства отладки, перечисленные ниже. Однако следует помнить, что такие средства предоставляются далеко не всеми системами с терминальным доступом и что их использование облегчается, если отлаживаемая программа выполняется в режиме интерпретации, а не в машинном коде. Желательно иметь средства отладки терминальных систем, предусматривающие следующие возможности:
1. Ключи прерывания, обеспечивающие при определенных условиях прекращение выполнения программы, фиксацию ее последнего состояния и передачу управления пользователю.
2. Прерывания по сигналам об ошибках, предназначенные для передачи управления пользователю в тех случаях, когда в программе делается попытка выполнения каких-либо запрещенных действий (например, извлечения квадратного корня из отрицательного числа или нарушения границы массива). Одновременно выдается сообщение, указывающее характер ошибки и номер строки, в которой она находится.
3. Анализ ситуации и внесение изменений в программу, позволяющие в случае прерывания по ключу или по сигналу об ошибке проверить или скорректировать значение любой переменной; для этого желательно предусмотреть простые методы выдачи переменных на печать и присвоения им новых значений.
4. Повторный запуск, обеспечивающий продолжение работы программы с любого оператора, в частности с того, при выполнении которого произошло прерывание.
5. Модифицирование программы, необходимое для исключения, дополнения или изменения отдельных ее строк; эти действия должны выполняться немедленно, чтобы мог продолжаться процесс отладки.
Все описанные средства отладки имеются, например, в языке БЕЙСИК-ПЛЮС для ЭВМ РОР-11, и пользователь, для которого эти средства доступны, может осуществлять процесс отладки довольно быстро. Очевидно, что по мере расширения применения терминальных систем использование интерпретаторов алгоритмических языков и упомянутых выше средств отладки должно стать обычным делом.
Хотя терминальные отладочные средства, несомненно, приносят большую пользу, в результате целого ряда иследований было доказано, что отладка протекает быстрее всего, тогда, когда ее непродолжительные периоды перемежаются с проверками программы за столом. Этому факту есть совершенно очевидное объяснение. Дело в том, что простые ошибки обнаруживаются легко и потому могут быть быстро зафиксированы в процессе отладки в интерактивном режиме. Если же обнаружение ошибки оказывается делом трудным, то при продолжении работы за терминалом программист может начать вносить беспорядочные, плохо продуманные изменения, которые приведут только к новым ошибкам. Поэтому в последнем случае лучше всего встать из-за терминала и провести проверку программы за столом.
⇐4.28. Средства отладки || Оглавление || 4.30. Отладочные модули для проверки программ⇒
|