Вопрос

Я отлаживаю драйвера для Linux (в частности Ubuntu Server 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/ath1/fractel_config (с различным временем, конечно).

[ 8671.924873] proc write 
[ 8671.924919] 

Есть объяснения?

Это было полезно?

Решение

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

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

Другие советы

Много раз 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 - уровень журнала, который вы хотите перейти на консоли или ignore_loglevel печатать все сообщения ядра в консоли.

Вы получите выход с командой dmesg

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

printk("test: hello world")

dmesg | grep test

У меня была эта проблема на Ubuntu 11.10 и 10.04 LTS, на первом i Edited /etc/rsyslog.d/50-default.conf, а затем перезапустил rsyslog с использованием «Sudo Service Rsyslog restart» для перезапуска Rsyslogd. Тогда это сработало.

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

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

В CentOS (по крайней мере в CentOS 6.6) вывод будет в/var/log/messages

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top