Linux内核调试打印

内核编译

以jetson nano为例

配置环境环境变量

export CROSS_COMPILE=aarch64-linux-gnu-
export LOCALVERSION=-tegra

选择deconfig配置文件,deconfig在arch/arm64/configs下

make ARCH=arm64  tegra_defconfig

编译

make ARCH=arm64 -j4

内核调试打印

调试信息级别宏,文件在根目录下 include/linux/kern_levels.h

include/linux/printk.h

内核调试打印,使用printk(KERN_INFO “\n INFO Level \n”); //指定打印的级别 (数字越小,优先级越高。

怎么让内核打印都输出文件名、函数和行号?

pr_info(“zhao-debug: %s, %s,%d —\n”, FILE,func,LINE);

怎么自定义宏调试?修改底层打印函数,并添加所在的文件、函数和行号。

#define yh_notice(fmt, ...) \
    do { printk(KERN_NOTICE pr_fmt(fmt),##__VA_ARGS__); \
    printk(KERN_DEBUG "zhao-debug notice:%s %s %d",__FILE__,__func__,__LINE__); } while (0)

输入 dmesg ,可以查看开机内核打印的信息。