首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问"netdev_dbg“日志?

如何访问"netdev_dbg“日志?
EN

Unix & Linux用户
提问于 2021-03-29 17:05:36
回答 1查看 1.6K关注 0票数 2

我正在调试我的设备,它使用qc7000驱动程序(qca_spi.c)

它有一堆有用的netdev_dbg消息散落在周围。

如何访问存储这些消息的日志?

EN

回答 1

Unix & Linux用户

发布于 2021-04-19 11:50:59

Short答案:这些打印应该总是显示在/proc/kmsg中,这样您就可以运行

代码语言:javascript
复制
$ cat /proc/kmsg

去看他们。每个条目甚至指定它旁边的日志级别,因此查找以“<7>”开头的条目。

More信息: netdev_dbg()是在include/linux/netdevice.h中定义的宏,它最终导致对netdev_printk(KERN_DEBUG,.)的调用。这将导致带有KERN_DEBUG日志级别的printk()调用。每个系统都有自己的printk配置,它定义哪些级别将打印到dmesg,哪些级别将被忽略。不过,无论日志级别如何,所有printk调用都将打印到/proc/kmsg。

您可以通过运行以下命令来检查dmesg设置:

代码语言:javascript
复制
$cat /proc/sys/kernel/printk

该文件的输出有4个值:当前、默认、最小和启动时间默认级别.你对“当前”很感兴趣。对我来说,重启后的调试级别是3 (KERN_ERR)。这意味着任何级别为>= 3的printk调用都将被忽略:

代码语言:javascript
复制
$cat /proc/sys/kernel/printk
3       4       1       7

您可以通过多种方式更改这一点,我使用了dmesg -n并将其设置为'8‘,这将打印调试级别printk调用:

代码语言:javascript
复制
$sudo dmesg -n 8
$cat /proc/sys/kernel/printk
8       4       1       7

完成此操作后,您应该能够在dmesg中看到调试打印。

备注:

  • 由于KERN_DEBUG等于'7‘,所以需要将当前日志级别设置为'8’,以便显示。
  • 还有一些其他设置可能会覆盖dmesg设置,因此在任何情况下/proc/kmsg都应该是查看调试消息的最佳选项。
  • 每次对'cat /proc/kmsg‘的调用都会刷新日志,因此在第二个调用中,如果没有新消息到达,则可能为空。

有关printk和打印级别的更多信息:https://elinux.org/Debugging_通过_printing#Log_级别

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/642666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档