Как отладить вставленный модуль ядра?

Файловые системы Unix традиционно реализованы в ядре. FUSE позволяет файловым системам быть реализованными пользовательской программой.

Файловые системы в ядре лучше подходят для основных файловых систем для программ и данных:

  • Они могут использоваться на загрузочном носителе (программа, реализовывая файловую систему FUSE должна быть загружена из где-нибудь).
  • Они более устойчивы, в котором они не уйдут из-за катастрофического отказа процесса или быть уничтоженным по ошибке.
  • Они несколько быстрее.

Файловые системы FUSE имеют другие преимущества, главным образом автоматически возобновляемые вокруг их гибкости:

  • Они могут быть загружены и смонтированы обычными пользователями, таким образом, они удобны для файловых систем, которые пользователи склонны монтировать собой: для доступа к сети, для прохождения через архивных файлов, для съемных носителей, и т.д.
  • Если драйвер файловой системы FUSE откажет, то он не испугает Ваше ядро: Вы не будете видеть ничего худшего, чем ошибки ввода-вывода в приложениях, которые получали доступ к файловой системе.
  • Они могут быть запрограммированы очень быстро; существует привязка FUSE для многих языков сценариев, где полезный драйвер файловой системы FUSE может быть записан в нескольких сотнях строк кода.
  • Они могут быть развернуты очень быстро, и потому что нет никакой потребности во вмешательстве администратора для установки их и потому что они могут быть портированы легко между поддерживаемыми Ose.
  • Нет никаких проблем лицензирования, связанных с тем, чтобы быть статически связанным с ядром (это влияет на zfs).

5
24.12.2012, 05:37
2 ответа

От проекции отладки ядро является специальным "процессом", отличным от процессов пространства пользователя, которые общаются с ядром с помощью своего рода rpc механизма (syscalls) или расширенной памяти..

Я не думаю, что Вы видите структуру данных ядра просто путем осмотра некоторого случайного пользовательского процесса.

Другая проблема, что для каждого процесса пространства пользователя (включая отладчик) нужно ядро, чтобы выполнить и общаться с пользователями; я не думаю, что можно просто остановить ядро и полагать, что отладчик продолжит работать.

Таким образом, необходимо выполнить GDB на второй машине, и именно это называют отладкой Ядра.
См. (http://kgdb.linsyssoft.com/, Documentation/sh/kgdb) для получения дополнительной информации.

5
27.01.2020, 20:40
  • 1
    я думаю свой вопрос, не ясен. Извините за беспорядок. I want to debug the inserted module, whose source i dont have with me. –  user3539 10.01.2011, 18:21
  • 2
    Вы смогли смотреть на код ядра посредством творческого использования /dev/kmem если это включено в Вашей системе. Необходимо было бы получить адрес модуля заранее, и я не знаю, как сделать это. спасибо –  LawrenceC 10.05.2011, 21:42

Другие опции другой затем KGDB отладили бы ядро с помощью QEMU и GDB. В отличие от KGDB, объединение QEMU-GDB требует только единственной машины.

0
27.01.2020, 20:40

Теги

Похожие вопросы