printk не работает для отладки ядра
Я поместил некоторые отладочные сообщения в коде ядра. проверил /var/log/messages, dmesg и там нет такого дампа. syslogd работает на машине
я также изменил /proc/sys/kernel/printk на 8 4 1 7
Есть идеи, в чем может быть проблема?
2 ответа
Самое простое объяснение - это твое printk()
не вызывается.
Сохраняйте это простым и придерживайтесь проверки dmesg(1)
вывод при отладке этой проблемы - все syslog(3)
/var/log/messages
и вывод на основе консоли отделен от выдачи сообщений, даже не отображаемых в буфере сообщений ядра.
Я сталкивался с той же проблемой до вчерашнего дня, когда нашел что-то интересное. В последнее время ядро Linux приняло pr_** вместо printk (версия 3.5 и выше).
Я попытался запустить программу базового модуля с printk на версии ядра 3.3 и на версии 3.7 и выше.
Бывший работает отлично. Позже просто не появляется printk на dmesg или /var/log/messages
, Однако замена printk макросом pr_info сделала свою работу. (есть и другие варианты: pr_err, pr_notice и т. д., найденные в include/linux/kernel.h, ранее перенесенный в include / linux / printk.h)
Хотя макросы pr_** довольно старые, благодаря кампании Джо Перчеса, которая инициировала вышеупомянутое изменение, мы лучше изучим способы ядра! (Ссылка: pr_info ())