手动调整内核printk打印级别

Printk打印优先级设定 # cat /proc/sys/kernel/printk 7       4       1      7 上面显示的4个数据分别对应: 控制台日志级别:优先级高于该值的消息将被打印至控制台,数值越小,优先级越高。优先级定义见后。 默认的消息日志级别:将用该优先级来打印没有优先级的消息,直接调用printk,未显示标注优先级的打印,如printk("xxxxxxxx"); 最低的控制台 阅读详情
有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6     4              1              7

# cat /proc/sys/kernel/printk

7       4       1      7

#

该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据分别对应:

控制台日志级别:优先级[s1] 高于该值的消息将被打印至控制台

默认的消息日志级别:将用该优先级来打印没有优先级的消息

最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)

默认的控制台日志级别:控制台日志级别的缺省值

 [s1]数值越小,优先级越高

                其实这四个值是在kernel/printk.c 中被定义的,如下:

int console_printk[4] = {

                DEFAULT_CONSOLE_LOGLEVEL,       /* console_loglevel */

                DEFAULT_MESSAGE_LOGLEVEL,       /* default_message_loglevel */

                MINIMUM_CONSOLE_LOGLEVEL,     /* minimum_console_loglevel */

                DEFAULT_CONSOLE_LOGLEVEL,       /* default_console_loglevel */

};

 内核通过printk() 输出的信息具有日志级别,日志级别是通过在printk() 输出的字符串前加一个带尖括号的整数来控制的,如printk("<6>Hello, world!\n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。

#define KERN_EMERG  "<0>"   /* systemis unusable */

#define KERN_ALERT  "<1>"   /* actionmust be taken immediately */

#define KERN_CRIT    "<2>"   /*critical conditions */

#define KERN_ERR     "<3>"   /* errorconditions */

#define KERN_WARNING "<4>"   /* warning conditions */

#define KERN_NOTICE  "<5>"   /* normalbut significant */

#define KERN_INFO    "<6>"   /*informational */

#define KERN_DEBUG   "<7>"   /*debug-level messages */

所以printk() 可以这样用:printk(KERN_INFO"Hello, world!\n");。

未指定日志级别的printk() 采用的默认级别是DEFAULT_MESSAGE_LOGLEVEL,这个宏在kernel/printk.c 中被定义为整数4,即对应KERN_WARNING。

/* printk's without a loglevel use this.. */

#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */

 

了解了上面的这些知识后,我们就应该知道如何手动控制printk打印了。例如,我想屏蔽掉所有的内核printk打印,那么我只需要把第一个数值调到最小值1或者0。

# echo 1       4       1      7 > /proc/sys/kernel/printk

或者

# echo 0       4       0      7 > /proc/sys/kernel/printk

另外,/proc/sys/kernel/printk_ratelimit和/proc/sys/kernel/printk_ratelimit_burst也可以用来控制打印,具体有待研究。

内核开发调试printk 进行内核开发调试 在进行驱动开发的过程中往往要打印一些信息来查看是否正确类似于printf,以下将介绍在内核开发常用的调试方法。.(第一次写文章,内容可能不咋样勿喷呀) 内容 一、printk介绍 二、如何查看并修改消息级别 在应用程序采用printf打印调试、内核驱动采用printk打印调试。 printk函数打印数据到console缓冲区,打印的格式方类似printf。 printk函数说明 头文件:<linux/kernel.h> int printk(KERN_XXX const 阅读详情

相关推荐

Linux Kernel调试:强大的printk(三)

本文介绍了Linux内核调试中的dev_xxx系列函数和打印频率限制机制。主要内容包括:1. dev_xxx函数是printk的封装版本,增加了设备指针参数,能自动附加设备信息,便于问题定位,并支持动态调试功能;2. 通过示例代码演示了如何在驱动程序中调用dev_info、dev_dbg等函数;3. 介绍了printk_ratelimited机制,该机制通过时间间隔和最大打印次数限制来避免重复打印;4. 展示了pr_info_ratelimited的实际使用效果

u010826758的专栏 595

内核常用调试函数

内核常用调试函数 一、print_hex_dump() 该函数用来在内核打印二进制数据,还是非常好用的,不需要在驱动自己去实现。 /** * print_hex_dump - print a text hex dump to syslog for a binary blob of data * @level: kernel log level (e.g. KERN_DEBUG) * @prefix_str: string to prefix each line with; * caller sup

qq_42931917的博客 5301

高分影像批处理第三回——RPC文件与几何校正

前言 前面两章部分完成了图像的基本组织和大气校正,可是对于遥感影像地理相关数据,精确的地理坐标也是非常关键的。L1级数据,可惜,并没有帮我们处理地理坐标系统。无论是打开ENVI还是用gdal工具查看图像元数据,其坐标系统都是错误的或者说是未读入的。因此本章节来解决这个问题。

weixin_43762038的博客 1万+

printk打印不出信息可能的原因

1.printk打印的信息等级不够,被控制台屏蔽   echo “7” > /proc/sys/kernel/printk   dmesg | grep -i gpio_cst 2.设备和驱动根本就没匹配,检查两者的compatible属性

qq_45613171的博客 2125

利用ArcGIS的模型构建器实现批量投影栅格和批量克里金插值

博主要批量投影几百个栅格,但是ArcGIS中的投影栅格的批处理工具需要手动一条条设置参数,还是麻烦,因此学习了使用模型构建器(ModelBuilder)来批量投影栅格,可以导入需投影栅格的文件夹,然后迭代投影,并按栅格原名逐个输出到指定目录。 1.在工具箱里构建模型 在arctool box里右键点击空白处,选择【添加工具箱】,点击ArcGIS默认工作目录的工具箱进行添加,然后Toolbox就会被添加到ArcToolbox页面,右键点击Toolbox,选择“新建”-“模型” 2.编写模型 (1).

qq_36958801的博客 1万+

CFturbo 2024保姆级教程:从流量扬程到三维叶轮,手把手搞定离心泵水力设计

本文提供CFturbo 2024离心泵水力设计的全流程实战指南,从流量扬程参数输入到三维叶轮模型导出,详细解析设计步骤与优化技巧。涵盖叶轮尺寸确定、子午面型线设计、叶片角度调整等关键环节,帮助工程师高效完成CAE辅助的离心泵水力设计,提升设计质量与效率。

weixin_42569329的博客 927

printk打印无输出是的解决方法

1.基本解决方法(如果这种方法不行,结尾处说明另一种小众原因)用到的命令cat /proc/sys/kernel/printk,查看控制台日志级别echo 8 &gt; /proc/sys/kernel/printk 设置当前的日志级别使用printk时,Linux内核根据日志级别,可能把消息打印到当前控制台上,这个控制台是一个字符设备。这些消息从终端输出的前提是日志输出级别小于console_l...

wx601056818的博客 1万+

基于YOLOv8的农作物病虫害检测系统设计与实现

国内如中国农业大学的科研团队采用改进的Faster R-CNN模型对小麦病害进行检测,取得了较好的效果。农作物病虫害是影响农业生产的重要因素之一,每年因病虫害导致的农作物减产高达20%-40%。YOLO(You Only Look Once)系列算法作为目标检测领域的代表性模型,以其高效、准确的特点在众多领域得到广泛应用。YOLOv8作为该系列的最新版本,在精度和速度上都有显著提升,非常适合农作物病虫害检测这类需要实时处理的应用场景。然而,现有研究仍存在一些不足:一是模型复杂度高,难以部署到移动设备;

YOLO 794

手动调整内核printk打印级别 && 内核模块初始化入口函数的优先级

<br />      系统调用是linux用户态和内核态之间的一个桥梁,通过系统调用可以访问linux的众多核心功能。在使用上系统调用和库函数之间虽然并没有太大的区别,但是必须明确的是调用系统调用时,程序会进入内核态运行,而库函数始终是运行在用户态的。由于需要在用户态和内核态之间切换,系统调用的开销相对要大一些。<br />      strace这个工具可以在运行时跟踪程序使用系统调用的情况,这对于我们分析和调试程序的运行行为很有帮助。它的使用也很简单,只要在你运行的程序前加上strace即可。<br

zhandoushi的专栏 3249

某瓜数据app 获取达人直播商品信息接口 Sign

某瓜数据app 获取达人直播商品列表接口 Sign

自成背后的博客 6039

【突变检验方法一】MATLAB实现Pettitt突变检验

MATLAB实现Pettitt突变检验及贝叶斯突变检测等

WW、forever的博客 1万+

printk输出屏蔽

参考资料 [1]手动调整内核printk打印级别

OneSea 1570

C#面试题及详细答案120道(61-75)-- 多线程与异步

本文摘要了前后端面试题中关于线程与并发的核心知识点,包括线程与进程的区别(61题)、Thread/ThreadPool/Task的对比(62题)、线程安全实现方法(63题)、lock关键字的原理(64题)、Monitor类的进阶用法(65题)以及死锁的成因与避免(66题)。通过C#代码示例和表格对比,清晰展示了多线程编程的关键概念、应用场景及常见问题解决方案,适合开发者快速掌握面试高频考点。完整内容可访问专栏目录获取更多技术面试题解析。

大剑师兰特的GIS世界 1430

调整内核printk的打印级别

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6   4   1   7 # cat /proc/sys/kernel/printk 7       4       1      7 该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上

wjflyhigh的专栏 1万+

【异常】Cursor报错We‘re having trouble connecting to the model provider. This might be temporary

在使用Cursor编辑器进行AI交互操作时,界面弹出如下报错提示,导致无法正常调用模型服务,影响使用流程:We’re having trouble connecting to the model provider. This might be temporary - please try again in a moment. 该报错核心含义为Cursor编辑器无法正常连接至背后的AI模型服务提供商(如OpenAI、Anthropic等),属于连接类异常,并非编辑器本身运行故障。经排查,该报错不具备破坏性,仅

奶爸的编程之路,也就一周冷个三天 1691

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux设置printk打印级别,内核printk打印等级

为了确认内核打印等级以及prink 参数对打印的分级,在led驱动初始化代码【以及exit出口】加入如下代码。每次insmod 、rmmod led模块时,根据打印等级的设置,得到不同的打印结果:static int __init s3c24xx_leds_init(){int ret ;int minor = 0 ;printk(KERN_EMERG " 1111111 KERN_EMERG\n...

weixin_42137723的博客 2676

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

linux关闭内核打印,调整内核printk打印级别--减少启动时的打印信息

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6417# cat /proc/sys/kernel/printk7417该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据...

weixin_39608657的博客 1947

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

syslog打印不带等级_调整内核printk打印级别--减少启动时的打印信息

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6417# cat /proc/sys/kernel/printk7417该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据...

weixin_35676977的博客 516

Linux:printk与printf的区别、echo 0 > /proc/sys/kernel/printk

1、printk与printf的区别 内核层使用printk打印,应用层调用C库的printf打印。在内核层是调用不了文件系统中C库的printf只能用printk。两者之间的一个显著区别在于printk允许通过指定一个标志来设置优先级(在include/linux/kern_levels.h中定义),不写则默认为级别4(MESSAGE_LOGLEVEL_DEFAULT),级别高于设定的输出级别才可以显示(可在include/linux/printk.h修改宏CONSOLE_LOGLEVEL_DEFAULT

weixin_44498318的博客 2958

linux内核 printk实现,linux内核的打印printk的级别

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6417# cat /proc/sys/kernel/printk7417该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据...

weixin_35652867的博客 290

如何调整内核printk的打印log级别

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。 默认设置是7 4 1 7 # cat /proc/sys/kernel/printk 7 4 1 7 该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请谷歌一下。上面显示的4个数据分别对应: 控制台日志级别:优先级高于该值的消息将被打印至控...

清风徐来jrb的博客 2892

修改内核printk打印级别

在内核启动的cmdline中添加如下变量: loglevel=3

温柔一刀 2348
上一篇: JAVA应用程序如何打印出自己的回溯栈
下一篇: git:branch is published (but not merged) and is now commits behind
gracioushe
博客等级 码龄25年 62粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值