Запись журнала ядра при запуске приложения
Я положил некоторые printk
утверждение внутри ядра Linux, как это
printk(KERN_DEBUG " Hello from Kernel ");
и мне интересно записать вывод этой команды во время работы a.out
приложение, как:
cp /var/log/dmesg oldLog.txt
./a.out
cp /var/log/dmesg newLog.txt
diff oldLog.txt newLog.txt
Но, похоже, этот метод не работает. И newLog.txt, и oldLog.txt одинаковы. Тем не менее, я могу наблюдать "Hello from Kernel"
в dmesg
вывод команды. Знаете ли вы о простом способе записи журнала, как это?
Мой второй вопрос о логарифмическом уровне. я использовал KERN_DEBUG
в printk
заявление, но даже если я установлю echo 1 > /proc/sys/kernel/printk
это все еще печатать Hello from kernel
в dmesg
вывод команды.
2 ответа
Это было обсуждено здесь. Где printk() печатает?
printk
сообщения будут напрямую отправляться на dmesg
,
1) операторы отладки printk всегда отображаются с помощью команды dmesg, не имеет значения, какой уровень логики установлен. Отладочные сообщения можно найти в /var/log/messages. 2) Loglevel настроен на получение отладочных сообщений, напечатанных на консоли. Даже если вы установили наивысший уровень приоритета журнала (KERN_EMERG) для печати сообщения отладки на консоли, оно не будет отображаться в консоли, если запущен X-сервер (GUI). Для получения высокоприоритетных сообщений printk на консоли перейдите в режим консоли.