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 ())

Другие вопросы по тегам