- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.2.1. printk
#include printk(KERN_CRITerror %s,%i,__FILE__,__LINE__);注:1). printk函数中能够指定优先级,假如printk没有指定优先级,采用默认优先级,DEFAULT_MESSAGE_LEVEL,其值在kernel/printk.c.??? 头文档linux/printk.h中宏定义了8个级别,0-8从高到低分别是:??? KERN_EMERG, KERNEL_ALERT, KERN_CRIT, KERN_ERR, KERN_WARNING, KERN_NOTICE, KERN_INFO, KERN_DEBUG2). 当printk指定的优先级小于指定的控制台优先级console_loglevel时,调试消息就显示在控制台虚拟终端。?? 缺省的console_loglevel值是DEFAULT_CONSOLE_LOGLEVEL。?? .也能够使用系统调用sys_syslog或klogd -c来修改console_loglevel值。?? .在新版本中,也能够直接通过文档/proc/sys/kernel/printk修改,这个文档包含4个整数值,前两个表示系统当前的优先级和缺省优先级。??? 能够直接echo 8 /proc/sys/kernel/printk?? .也能够指定显示在其他控制台,通过调用ioctl(TIOCLINUX)或shell命令setconsole来配置。?? .假如运行了klogd和syslogd,则printk打印到var/log/messages。 . 用打印调试 最常用的调试技术是监视, 在应用程序编程当中是通过在合适的地方调用 printf 来实现. 在你调试内核代码时, 你可以通过 printk 来达到这个目的.
一个不同是 printk 允许你根据消息的严重程度对其分类, 通过附加不同的记录级别或者优先级在消息上. 你常常用一个宏定义来指示记录级别. 例如, KERN_INFO, 我们之前曾在一些打印语句的前面看到过, 是消息记录级别的一种可能值. 记录宏定义扩展成一个字串, 在编译时与消息文本连接在一起; 这就是为什么下面的在优先级和格式串之间没有逗号的原因. 这里有 2 个 printk 命令的例子, 一个调试消息, 一个紧急消息:
printk(KERN_DEBUG Here I am: %s:%i/n, __FILE__, __LINE__);
printk(KERN_CRIT Im trashed; giving up on %p/n, ptr);
有 8 种可能的记录字串, 在头文件 linux/kernel.h 里定义; 我们按照严重性递减的顺序列出它们:
KERN_EMERG 用于紧急消息, 常常是那些崩溃前的消息.
KERN_ALERT 需要立刻动作的情形.
KERN_CRIT 严重情况, 常常与严重的硬件或者软件失效有关.
KERN_ERR 用来报告错误情况; 设备驱动常常使用 KERN_ERR 来报告硬件故障.
KERN_WARNING 有问题的情况的警告, 这些情况自己不会引起系统的严重问题.
KERN_NOTICE 正常情况, 但是仍然值得注意. 在这个级别一些安全相关的情况会报告.
KERN_INFO 信息型消息. 在这个级别, 很多驱动在启动时打印它们发现的硬件的信息.
KERN_DEBUG 用作调试消息.
每个字串( 在宏定义扩展里 )代表一个在角括号中的整数. 整数的范围从 0 到 7, 越小的数表示越大的优先级.
一条没有指定优先级的 printk 语句缺省是 DEFAULT_MESSAGE_LOGLEVEL, 在 kernel/printk.c 里指定作为一个整数. 在 2.6.10 内核中, DEFAULT_MESSAGE_LOGLEVEL 是 KERN_WARNING, 但是在过去已知是改变的.
基于记录级别, 内核可能打印消息到当前控制台, 可能是一个文本模式终端, 串口, 或者是一台并口打印机. 如果优先级小于整型值 console_loglevel, 消息被递交给控制台, 一次一行( 除非提供一个新行结尾, 否则什么都不发送 ). 如果 klogd 和 syslogd 都在系统中运行, 内核消息被追加到 /var/log/messages (或者另外根据你的 syslogd 配置处理), 独立于 console_loglevel. 如果 klogd 没有运行, 你只有读 /proc/kmsg ( 用 dmsg 命令最易做到 )将消息取到用户空间. 当使用 klogd 时, 你应当记住, 它不
您可能关注的文档
最近下载
- 迅达3300AP电气原理图(中文精简版).pdf VIP
- (精品)《雨人》中英文台词剧本完整版.docx VIP
- 2025-2026学年初中美术八年级上册(2024)岭南版(2024)教学设计合集.docx
- 上市公司应对证券民事索赔100问.pdf VIP
- 【继续教育】水质PH(每日一练).pdf VIP
- Lenovo联想 服务器 ThinkServer TS560 说明书.pdf
- Q/GDW 364-2009《单相智能电能表技术规范》及编制说明.doc VIP
- 社会保障学 高教版 第16章--扶贫开发.ppt VIP
- 《2和5的倍数的特征》省公开课一等奖全国示范课微课金奖PPT课件.pptx VIP
- 甜梦口服液与丁螺环酮治疗广泛性焦虑症的疗效对比.PDF VIP
文档评论(0)