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 ,可以查看开机内核打印的信息。