Книга: Linux программирование в примерах
Упражнения
Упражнения
1. Откомпилируйте одну из ваших программ с помощью GCC, используя как -g
, так и -O
. Запустите ее под GDB, установив контрольную точку в main()
. Выполните программу пошагово и посмотрите, насколько близко соответствует (или не соответствует) исполнение оригинальному исходному коду. Это особенно хорошо делать с кодом, использующим циклы while
или for
.
2. Прочитайте об особенности GDB условной контрольной точки. Насколько это упрощает работу с проблемами, которые появляются лишь после того, как будет сделано определенное число операций?
3. Перепишите функцию parse_debug()
из раздела 15.4.2.1 «Добавляйте отладочные опции и переменные», чтобы использовать таблицу строк опций отладки, значений флагов и длин строк
4. (Трудное.) Изучите исходный код gawk
; в частности, структуру NODE
в awk.h
. Напишите вспомогательную отладочную функцию, которая выводит содержимое NODE
, основываясь на значении в поле type
.
5. Возьмите одну из своих программ и измените ее так, чтобы использовать библиотеку dbug
. Откомпилируйте ее сначала без -DDBUG
, чтобы убедиться, что она компилируется и работает нормально. (Есть ли у вас для нее набор возвратных тестов? Прошла ли ваша программа все тесты?)
Убедившись, что добавление библиотеки dbug
не нарушает работу вашей программы, перекомпилируйте ее с -DDBUG
. По-прежнему ли проходит ваша программа все свои тесты? Какова разница в производительности при включенной и отключенной библиотеке? Запустите ваш тестовый набор с опцией -#t
, чтобы увидеть трассировку вызовов функций. Как вы думаете, это поможет вам в будущем, когда придется иметь дело с отладкой? Почему да или почему нет?
6. Запустите одну из своих программ, использующих динамическую память, с Electric Fence или одним из других тестеров динамической памяти. Опишите проблемы, которые вы обнаружили, если они есть.
7. Перезапустите ту же самую программу, используя Valgrind с включенным режимом проверки утечек. Опишите найденные вами проблемы, если они есть.
8. Разработайте набор тестов для программы mv
. (Прочтите mv(1): убедитесь, что охватили все ее опции.)
9. Поищите в Интернете ресурсы по тестированию программного обеспечения. Какие интересные вещи вы нашли?