Книга: Искусство программирования для Unix
15.6. Отладка времени выполнения
15.6. Отладка времени выполнения
Каждый, кто занимается программированием больше одной недели, знает, что исправление синтаксических ошибок является простой частью отладки. За ней следует сложная часть, когда необходимо разобраться, почему поведение синтаксически корректной программы не соответствует ожидаемому.
Традиции Unix побуждают разработчиков предупреждать эту проблему путем проектирования прозрачных конструкций — в частности, путем проектирования программ таким образом, чтобы можно было без труда невооруженным глазом и с помощью простых инструментов осуществлять мониторинг внутренних потоков данных в программах, а также просто создавать их ментальные модели. Данная тема подробно рассматривалась в главе 6. Создание прозрачных конструкций важно как для предотвращения ошибок, так и для упрощения задач отладки времени выполнения.
Однако одного только проектирования прозрачных конструкций недостаточно. При отладке программы во время выполнения чрезвычайно полезно иметь возможность изучать состояние выполняемой программы, устанавливать точки останова и контролируемым способом выполнять блоки программы вплоть до уровня одного оператора. В операционной системе Unix имеется давняя традиция поддержки программ, способствующих решению данных проблем. В состав Unix-систем с открытыми исходными кодами входит одно мощное средство, gdb (еще один FSF-проект), которое поддерживает отладку кода, написанного на С и С++.
Языки Perl, Python, Java и Emacs Lisp поддерживают стандартные пакеты или программы (которые включаются в состав их базовых дистрибутивов), позволяющие устанавливать контрольные точки, управлять выполнением и осуществлять общие операции отладки во время выполнения. Tcl, разработанный как небольшой язык для небольших проектов, не имеет такого средства (хотя он имеет средство трассировки, которое можно использовать для наблюдения за переменными во время выполнения).
Для разработчика важно правильно понимать философию Unix и тратить свое время не на низкоуровневые детали, а на качество конструкции, а также автоматизировать все, что возможно, включая кропотливую работу по отладке программы во время выполнения.
- 15.1. Операционная система, дружественная к разработчику
- 15.2. Выбор редактора
- 15.3. Генераторы специализированного кода
- 15.4. Утилита make: автоматизация процедур
- 15.5. Системы контроля версий
- 15.5.4. Unix-инструменты для контроля версий
- 15.6. Отладка времени выполнения
- 15.7. Профилирование
- 15.8. Комбинирование инструментов с Emacs
- 15.8.2. Emacs и отладка во время выполнения
- 3. Отладка и профилирование
- Права для выполнения резервного копирования
- Уменьшение времени, необходимого для резервного копирования и восстановления
- Ограничение времени ожидания для транзакций (Lock timeout)
- Упражнения для самостоятельного выполнения
- 1.4.1. Кодирование во время выполнения
- 7.12. Объективизация времени
- Квант времени
- Формула времени. Тайм-менеджмент на Outlook 2013
- Основания для выполнения проекта
- Полиморфизм на этапе выполнения