Библиотека сайта rus-linux.net
Цилюрик О.И. Модули ядра Linux | ||
Назад | Отладка в ядре | Вперед |
Некоторые мелкие советы в завершение
Чаще перезагружайте систему!
Отладка модулей ядра отличается от отладки пользовательского пространства тем, что очередное аварийное завершение теста модуля может оставлять «следы» в ядре, создавая тем малозаметные аномалии в поведении системы. Особенно часто это наблюдается, например, при отработке интерфейсов драйвера в файловую систему /proc.
Для того, чтобы избежать десятков часов бездарно потерянного времени, при работе над модулями перезагружайте время от времени ваш Linux, даже если вам кажется, что он совершенно нормально работает. После перезагрузки результаты повторения только-что выполненного теста могут радикально поменяться!
Используйте естественные POSIX тестеры
Здесь я имею в виду, что при отработке модуля всегда, прежде, чем начинать более жёсткое тестирование драйвера, проверьте его реакцию по чтению и запись на естественные POSIX тестеры: cat для чтения и echo для записи. В этом качестве могут быть полезны и другие стандартные утилиты Linux, например cp. Возможно, для обеспечения совместимости функционирования совместно с POSIX командами, вам потребуется добавить к драйверу дополнительную функциональность (например, отработка ситуации EOF), которая и не требуется конечными спецификациями на продукт. Но получение POSIX совместимости стоит затраченного дополнительного труда!
Тестируйте чтение сериями
Выполняя проверку операций read(), не ограничивайтесь одиночной операцией тестирования. Вместо этого проверяйте серию последовательных операций тестирования. Этим вы страхуетесь, что ваш драйвер не только нормально отрабатывает операцию, но и нормально восстанавливается после операции и готов к выполнению следующей. Другими словами, вместо одиночной операции cat (в простейшем случае) делайте несколько последовательных, сверяя их идентичность:
$ cat /dev/xxx
REZULT
$ cat /dev/xxx
REZULT
$ cat /dev/xxx
REZULT
Подобное можно было не раз видеть на протяжении предыдущих показанных тестов. То же имеет место и в отношении к операциям записи, но в значительно меньшей степени.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Комплементарный отладочный модуль | Заключение |