Linux программирование в примерах
Шрифт:
15.5.2.5. Другие отладчики malloc
Две статьи Cal Ericson в Linux Journal описывают
184
185
Другие инструменты сходны по природе с описанными ранее.
Замещающая
Старинная, но полнофункциональная библиотека замещения
Пакет с большими возможностями настройки для отладки памяти и тестирования. См
Пакет, требующий использования специального заголовочного файла и опций времени компилирования. См.
«Не просто еще один отладчик 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 | Нет | Программа | Нет |
Как
Полезно также использовать для своей программы несколько инструментов подряд. Например,
15.5.3. Современная
В оригинальном С компилятор не мог проверить, соответствуют ли параметры, переданные в вызове функции, списку параметров в определении функции; прототипов не было. Это часто вело к неуловимым ошибкам, поскольку ошибочный вызов функции мог вызывать лишь частично ошибочные результаты, которые проходили незамеченными во время тестирования, или мог даже вообще не появиться во время тестирования. Например:
Если программа, содержащая этот фрагмент, никогда не вызывается с ошибочным числом аргументов,
Программа V7
С появлением в стандартном С прототипов необходимость в
Вдобавок, многие другие аспекты программы можно проверять статически, т.е. путем анализа исходных текстов.
Программа
186
Следует знать об одной особенности подобных
15.6. Тестирование программ
Разработка программного обеспечения содержит элементы и искусства, и науки, это одна сторона того, что делает ее такой восхищающей и стимулирующей профессией. Данный раздел вводит в тему тестирования программного обеспечения, которая также включает в себя и искусство, и науку; таким образом, это несколько более общий и высокий уровень (читай: «на который можно махнуть рукой»), чем остальная часть данной главы.
Тестирование программ является неотъемлемой частью процесса разработки программного обеспечения. Весьма маловероятно, что программа заработает правильно на 100 процентов при первой компиляции. Программа не несет ответственности за свою правильность; за это отвечает автор программы. Одним из самых важных способов проверки того, что программа работает так, как предполагалось, является ее тестирование.