更改printk打印级别


1、查看当前控制台的打印级别
 cat /proc/sys/kernel/printk
 4    4    1    7
 其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息

2、修改打印
 echo "新的打印级别  4    1    7" >/proc/sys/kernel/printk


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

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

或者

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


3、不够打印级别的信息会被写到日志中可通过dmesg 命令来查看

 4、printk的打印级别


#define KERN_EMERG        "<0>" /* system is unusable */
#define KERN_ALERT         "<1>" /* action must be taken immediately */
#define KERN_CRIT            "<2>" /* critical conditions */
#define KERN_ERR             "<3>" /* error conditions */
#define KERN_WARNING   "<4>" /* warning conditions */
#define KERN_NOTICE       "<5>" /* normal but significant condition */
#define KERN_INFO            "<6>" /* informational */
#define KERN_DEBUG       "<7>" /* debug-level messages */


在 /proc/sys/kernel/printk 会显示4个数值(可由 echo 修改),分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。当 printk() 中的消息日志级别小于当前控制台日志级别时,printk 的信息(要有/n符)就会在控制台上显示。但无论当前控制台日志级别是何值,通过 /proc/kmsg (或使用dmesg)总能查看。另外如果配置好并运行了 syslogd 或 klogd,没有在控制台上显示的 printk 的信息也会追加到 /var/log/messages.log 中。


5、printk函数的使用

      printk(打印级别  “要打印的信息”)

       打印级别  既上面定义的几个宏

char myname[] = "chinacodec/n";
printk(KERN_INFO "Hello, world %s!/n", myname);


在linux图形界面下,是无法在命令行下显示的,尝试切换到命令行模式下就可以在终端显示了


切换方法:

不同的linux系统切换方式会稍有一点差别
从图形界面切换到字符界面:Alt+F(1-6) 或者 Alt+Ctrl+Shift+F(1-6)
从字符界面切换回图形界面:Alt+F7 
字符界面启动到图形界面使用:startx 或者 init5
 
(开机为文本界面,由文本界面切换到图形界面:
    方法1:运行命令
          #startx , 需要先配置图形界面信息,(暂时不会~) ;
    方法2:修改/etc/inittab文件中的 
          id:3:initdefault , 将3改为5 ,重新启动系统;

真机环境中,在图形界面和文本界面间切换:
    Ctrl+Alt+F(n) , 其中F(n)为F1-F6 ,为6个控制台;
    Ctrl+ALT+F7 ;

虚拟机环境,在图形界面和文本界面间切换:
  VMWare虚拟机下,由图形界面切换到文本界面,和虚拟机设置有关,默认VM占用Ctrl+Alt为热键,所以由图形界面切换到文本界面的组合键为:
    Ctrl+Alt+Shift+F(n) ,其中F(n)为F1-F6 ;
  由文本界面切换回图形界面的组合键为:
    Alt+F7 ;
  在文本界面不同控制台界面之间切换:
    Alt+F(n) , 其中F(n)为F1-F6,为6个控制台)
 
 



安卓平台下的printk函数是Linux内核提供的一个函数,用于在内核中打印信息。它与printf函数类似,可以进行格式化输出,并且可以指定打印级别。在标准的Linux内核开发过程中,可以使用printk函数打印内核消息,将信息保存到/proc/kmsg日志中,并使用cat命令查看这些信息。 在安卓平台下调试内核时,可以利用adb工具与printk函数打印内核消息。通过adb工具连接到设备后,可以使用adb shell命令进入设备的shell环境,然后使用echo命令修改打印级别。例如,可以使用以下命令将打印级别设置为4: echo "新的打印级别 4 1 7" >/proc/sys/kernel/printk 这样就可以通过printk函数打印内核消息,并在设备的日志中查看这些消息。请注意,对于安卓平台,可能需要root权限才能修改打印级别和查看内核消息。 总结起来,安卓平台下的printk函数是用于在内核中打印信息的函数,可以通过adb工具与printk函数配合使用来调试内核,并可以通过修改打印级别来控制打印的信息量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Android系统开发中log的使用方法及简单的原理](https://download.csdn.net/download/weixin_38731075/14883422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [基于adb工具与printk函数调试Android内核](https://blog.csdn.net/whj1317141989/article/details/84799415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值