Linux программирование в примерах
Шрифт:
Другие инструменты сходны по природе с описанными ранее.
Замещающая
Старинная, но полнофункциональная библиотека замещения
Пакет с большими возможностями настройки для отладки памяти и тестирования. См
Пакет,
«Не просто еще один отладчик malloc» (Not Just Another Malloc Debugger). Эта библиотека не требует специальной компоновки с приложением; вместо этого она использует
Похож на Electric Fence, но со многими дополнительными опциями. См.
Почти все из этих пакетов используют для точной настройки своего поведения переменные окружения. В таблице 15.1 на основе статей из Linux Journal сделана сводка различных пакетов.
Таблица 15.1. Сводка особенностей инструментов памяти
Инструмент | ОС | Заголовочный файл | Модуль/ программа | Многопоточность |
---|---|---|---|---|
ccmalloc | Многотипная | Нет | Программа | Нет |
dmalloc | Многотипная | Необязательно | Программа | Да |
efence | Многотипная | Нет | Программа | Нет |
memwatch | Многотипная | Да | Программа | Нет |
Moraes | Многотипная | Необязательно | Программа | Нет |
mpatrol | Многотипная | Нет | Программа | Да |
mtrace | Linux (GLIBC) | Да | Модуль | Нет |
njamd | Многотипная | Нет | Программа | Нет |
valgrind | Linux (GLIBC) | Нет | Программа | Да |
yamd | Linux, DJGPP | Нет | Программа | Нет |
Как видно, для отладки проблем динамической памяти доступен ряд выборов. На системах GNU/Linux и BSD один или более из этих инструментов, возможно, уже установлены, что избавляет вас от хлопот по их загрузке и построению.
Полезно также использовать для своей программы несколько инструментов подряд. Например,
15.5.3. Современная
В оригинальном С компилятор не мог проверить, соответствуют ли параметры, переданные в вызове функции, списку параметров в определении функции; прототипов
Если программа, содержащая этот фрагмент, никогда не вызывается с ошибочным числом аргументов,
Программа V7
С появлением в стандартном С прототипов необходимость в
Вдобавок, многие другие аспекты программы можно проверять статически, т.е. путем анализа исходных текстов.
Программа
186
Следует знать об одной особенности подобных
15.6. Тестирование программ
Разработка программного обеспечения содержит элементы и искусства, и науки, это одна сторона того, что делает ее такой восхищающей и стимулирующей профессией. Данный раздел вводит в тему тестирования программного обеспечения, которая также включает в себя и искусство, и науку; таким образом, это несколько более общий и высокий уровень (читай: «на который можно махнуть рукой»), чем остальная часть данной главы.
Тестирование программ является неотъемлемой частью процесса разработки программного обеспечения. Весьма маловероятно, что программа заработает правильно на 100 процентов при первой компиляции. Программа не несет ответственности за свою правильность; за это отвечает автор программы. Одним из самых важных способов проверки того, что программа работает так, как предполагалось, является ее тестирование.
Один из способов классификации различных видов тестов следующий:
Тесты модулей (Unit tests)
Это тесты, которые вы пишете для каждого модуля или функционального компонента своей программы. В качестве части работы может потребоваться также создать окружение (scaffolding) — код, предназначенный для предоставления поддерживающего каркаса, чтобы запустить модуль в виде отдельной программы.
Важно спроектировать тесты для каждого функционального компонента во время его разработки. Это помогает прояснить проектирование особенностей; знание того, как это тестировать, помогает определить, что следует и что не следует делать в первую очередь.