printk仅输出时间戳未打印消息,请求故障排查线索
排查线索
修正printk调用语法:你代码里的printk调用格式错误,正确写法应该是:
printk(KERN_WARNING "AFTER: x:%u y:%u\n", x, y);KERN_WARNING是日志级别宏,需要和格式字符串直接拼接,不能作为独立参数传递。原写法会让内核把KERN_WARNING当成格式字符串,后续参数不匹配,导致无法正常输出消息内容。
查看内核日志缓冲区:执行
dmesg命令,检查你的printk消息是否存在于内核日志缓冲区中。如果dmesg能看到消息但控制台没显示,可能是控制台输出的刷新或级别问题;如果dmesg也没有,说明代码未执行或printk调用错误。验证日志级别配置:当前
/proc/sys/kernel/printk的控制台级别是7,KERN_WARNING的级别是4(<4>),理论上级别足够。可以临时调高控制台级别测试:echo 8 > /proc/sys/kernel/printk之后触发触摸操作,看控制台是否输出消息。
确认函数是否被执行:在
touchscreen_report_pos函数开头添加语法正确的printk测试:printk(KERN_INFO "touchscreen_report_pos is called\n");触发触摸后用dmesg查看是否有这条日志,确认函数是否被正常调用。
核对内核控制台相关配置:检查内核启动参数中的
console=设置,确认控制台设备正确;同时核对CONFIG_PRINTK、CONFIG_SERIAL_CONSOLE(如果是串口控制台)等配置是否正常启用,确保控制台输出通路正常。
内容的提问来源于stack exchange,提问作者gulpr
相关产品推荐
相关产品推荐

