//pr_debug 的定义在文件 include/linux/printk.h/* If you are writing a driver, please use dev_dbg instead */#ifdefined(CONFIG_DYNAMIC_DEBUG)#include<linux/dynamic_debug.h>/* dynamic_pr_debug() uses pr_fmt() interna
那如果不开启CONFIG_DYNAMIC_DEBUG,将不会产生/sys/kernel/debug/dynamic_debug目录, 是不能进行动态打印的。 1.2.1 开启dynamic debug echo"module xxx_mipi_rx +p"> /sys/kernel/debug/dynamic_debug/control echo"file xxx_vip_cif.c +p">/sys/kernel/debug/dynamic_debug/control 这两种方式都是开dynamic...
dynamic debug 的使用 pr_debug pr_devel 总结 前言 动态输出是内核子系统最喜欢的输出手段之一。在系统运行时,可以由系统维护者动态打开和关闭指定的printk()输出,也可以有选择地打开某些模块的输出,而printk 打印是全局的,只能设置输出等级,而且使用 printk 每次都要重新编译内核,很不方便。而动态输出可以在不需要...
CONFIG_DYNAMIC_DEBUG=y 挂载debugfs CONFIG_DYNAMIC_DEBUG 是配置动态输出,它依赖于 CONFIG_DEBUG_FS,而 CONFIG_DEBUG_FS 是debugfs 文件系统。debugfs 默认会挂载到 /sys/kernel/debug,如果没有挂载,可以执行以下命令挂载: $ mount -t debugfs none /sys/kernel/debug dynamic debug 的使用 这里我讲 pr_debug...
支持打印模块信息、dev信息 支持动态调试(dynamic debug)方式 下面简述下这几个dev_xxx函数的基本使用规则,以及动态调试使用方式。 dev_info():启动过程、或者模块加载过程等“通知类的”信息等,一般只会通知一次,例如probe函数; dev_dbg():一般使用在普通错误,如-EINVAL、-ENOMEM等errno发生处,用于调试; dev_err...
linux dynamic debug Linux动态调试是Linux系统上一个非常有用的调试工具,通过动态调试技术可以实时获取程序运行时的信息,进行错误定位和性能优化。 红帽公司作为Linux领域的领导者,也推出了自己的动态调试工具——Red Hat Dynamic Debug(简称DD)。DD是一款高效、强大的调试工具,能够帮助开发人员快速定位和解决软件中的...
CONFIG_DYNAMIC_DEBUG=y CONFIG_DYNAMIC_DEBUG是配置动态输出,它依赖于CONFIG_DEBUG_FS,而CONFIG_DEBUG_FS是debugfs文件系统。 打开内核配置后,我们还需要挂载debugfs文件系统。 debugfs文件系统挂载 动态输出在debugfs文件系统中有一个control文件节点,这个文件节点记录了系统中所有使用动态输出技术的文件名路径、输出所在的...
首先内核选项CONFIG_DYNAMIC_DEBUG应该被设置。所有通过pr_debug()/dev_debug()打印的信息都可以动态地显示或不显示。 可以通过简单的查询语句来筛选需要显示的信息。 - 源文件名 - 函数名 - 行号(包括指定范围的行号) - 模块名 - 格式化字符串 将要打印信息的格式写入/dynamic_debug/control中。
支持动态调试(dynamic debug)方式 下面简述下这几个dev_xxx函数的基本使用规则,以及动态调试使用方式。 dev_info():启动过程、或者模块加载过程等“通知类的”信息等,一般只会通知一次,例如probe函数; dev_dbg():一般使用在普通错误,如-EINVAL、-ENOMEM等errno发生处,用于调试; ...
CONFIG_DEBUG_KERNEL=y CONFIG_KLLSYMS=y CONFIG_SPINLOCK_SLEEP=y 四 引发bug并打印信息 1 BUG()和BUG_ON() 一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。 定义在中: #ifndef HAVE_ARCH_BUG#defineBUG() do {printk("BUG: failure at %s:%d/%s()!", __...