Подтвердить что ты не робот

Где идет вывод печати в ядре?

Я отлаживаю драйвер для Linux (в частности, сервер ubuntu 9.04), и в коде есть несколько операторов printf.

Где я могу просмотреть вывод этих операторов?

EDIT1: то, что я пытаюсь сделать, это записать в ядро ​​с помощью файловой системы proc. Код печати

static int proc_fractel_config_write(struct file *file, const char *argbuf, unsigned long count, void *data)
{
    printk(KERN_DEBUG "writing fractel config\n");
    ...

В kern.log я вижу следующее сообщение, когда я пытаюсь перезаписать файл /proc/net/madwifi/ath 1/fractel_config (с разным временем, конечно).

[ 8671.924873] proc write 
[ 8671.924919] 

Любые объяснения?

4b9b3361

Ответ 1

Это зависит от дистрибутива, но многие используют klogd(8) для получения сообщений из ядра и будут либо записывать их в файл (иногда /var/log/dmesg или /var/log/kernel), либо в системный журнал через syslog(3). В последнем случае, когда записи журнала в конечном итоге будут зависеть от конфигурации syslogd(8).

Одна заметка о команде dmesg: сообщения ядра хранятся в круговом буфере, поэтому большие объемы вывода будут перезаписаны.

Ответ 2

Много раз сообщения уровня KERN_DEBUG фильтруются, и вам необходимо явно увеличить уровень ведения журнала. Вы можете видеть, что система использует по умолчанию, изучая /proc/sys/kernel/printk. Например, в моей системе:

# cat /proc/sys/kernel/printk
4       4       1       7

первое число показывает, что уровень журнала консоли - KERN_WARNING (см. proc (5) man pages для получения дополнительной информации). Это означает, что KERN_NOTICE, KERN_INFO и KERN_DEBUG сообщения будут отфильтрованы с консоли. Чтобы увеличить уровень регистрации или многословие, используйте dmesg

$ sudo dmesg -n 7
$ cat /proc/sys/kernel/printk
7       4       1       7

Здесь установка уровня до 7 (KERN_DEBUG) позволит отображать все уровни сообщений на консоли. Чтобы автоматизировать это, добавьте loglevel= N в параметры загрузки ядра, где N - это уровень журнала, который вы хотите отправить в консоль, или ignore_loglevel, чтобы распечатать все сообщения ядра на консоли.

Ответ 3

Вы получите результат командой dmesg

Ответ 4

dmesg выводит все сообщения из ядра. Поиск ваших желаемых сообщений будет затруднительным. Лучше используйте комбинацию dmesg и grep и используйте ярлык с драйверами во всех ваших сообщениях printk. Это облегчит устранение всех нежелательных сообщений.

printk("test: hello world")

dmesg | grep test

Ответ 5

У меня была эта проблема в Ubuntu 11.10 и 10.04 LTS, на первом я отредактировал /etc/rsyslog.d/50-default.conf, а затем перезапустил rsyslog с помощью "sudo service rsyslog restart", чтобы перезапустить rsyslogd. Тогда это сработало.

Обратите внимание, что Ubuntu использует * r * syslogd, а не syslogd.

Ответ 6

Вы можете попробовать более высокий уровень, чем KERN_DEBUG, например KERN_INFO. В зависимости от вашей конфигурации сообщения с низким приоритетом могут не отображаться.

Ответ 7

В centos (Atleast in centos 6.6) вывод будет в/var/log/messages