内核调试工具printkprintk的输出格式

描述

很多内核开发者喜欢的调试工具是printk,在Linux内核中,使用printk()函数来打印信息,它与C库的printf()函数类似。

printk()与printf()的一个重要区别是: printk()提供输出等级 。内核会根据这个等级来判断是否在终端或者串口中输出。

printk的输出格式

在实际调试中,printk()可以和printf()一样,直接输出一条字符串。

不过为了更好的显示一些调试信息,可以加上函数名字(__func__)和代码行号(__LINE__),例如:

printk(KERN_EMERG"figo:%s, %d", __func__, __LINE__);

在双引号""前加上输出等级KERN_EMERG,代表输出等级为0

另外,在使用printk()的时候需要注意输出格式,否则在编译时会出现很多的警告。printk的输出格式:

数据类型printk格式符
int%d或%x
unsigned int%u或%x
long%ld或%lx
long long%lld或%llx
unsigned long long%llu或%llx
size_t%zu或%zx
size_t%zd或%zx
函数指针%pf
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分