当前位置: 首页 > news >正文

中国建设网官方网站企业网银全网关键词搜索工具

中国建设网官方网站企业网银,全网关键词搜索工具,深圳疫情最新消息轨迹公布,做网站无锡目录 前言 1 printk消息级别 2 调整内核printk打印级别 3 dev_xxx函数简介 4 配置内核使用动态打印 5 动态调试使用方法 6 动态打印调试的基本原理 🎈个人主页🎈:linux_嵌入式大师之路的博客-CSDN博客🎉🎉&…

目录

前言

1 printk消息级别

2 调整内核printk打印级别 

3 dev_xxx函数简介

4 配置内核使用动态打印

5 动态调试使用方法

6 动态打印调试的基本原理


  •  🎈个人主页🎈:linux_嵌入式大师之路的博客-CSDN博客
  • 🎉🎉🎉欢迎 👍点赞✍评论⭐收藏
  • 🤝希望本文能对你有所帮助,欢迎在评论区交流讨论!🤝

前言

在 kernel 驱动代码中,使用动态输出是系统内核调试的重要手段之一,printk打印是全局的,只能设置输出等级。而动态输出可以动态选择打开某个内核子系统的输出,可以有选择性地打开某些模块的输出,printk被dev_info,dev_dbg,dev_err之类的函数代替,dev_xxx函数的本质还是使用printk打印的,只是对printk进行了一层包装。

1 printk消息级别

Linux 内核共提供了八种不同的消息级别,分为级别 0~7。数值越大,表示级别越低,对应的消息越不重要。相应的宏定义在 include/linux/kern_levels.h 文件中。

#define KERN_SOH   "\001"      /* ASCII Start Of Header */
#define KERN_SOH_ASCII '\001'#define KERN_EMERG      KERN_SOH "0"   /* system is unusable */
#define KERN_ALERT      KERN_SOH "1"   /* action must be taken immediately */
#define KERN_CRIT       KERN_SOH "2"   /* critical conditions */
#define KERN_ERR        KERN_SOH "3"   /* error conditions */
#define KERN_WARNING    KERN_SOH "4"   /* warning conditions */
#define KERN_NOTICE     KERN_SOH "5"   /* normal but significant condition */
#define KERN_INFO       KERN_SOH "6"   /* informational */
#define KERN_DEBUG      KERN_SOH "7"   /* debug-level messages */
  • KERN_ALERT 表示必须立即采取行动的消息;
  • KERN_CRIT 表示临界状态,通常涉及严重的硬件或软件操作失败;
  • KERN_ERR 用于报告错误状态,设备驱动程序会经常使用该级别来报告来自硬件的问题;
  • KERN_WARNING 对可能出现问题的情况进行警告,这类情况通常不会对系统造成严重的问题;
  • KERN_NOTICE 表示有必要进行提示的正常情形,许多与安全相关的状况用这个级别进行汇报;
  • KERN_INFO 表示内核提示信息,很多驱动程序在启动的时候,用这个级别打印出它们找到的硬件信息;
  • KERN_DEBUG 用于调试信息。
  • KERN_EMERG 表示紧急事件,一般是系统崩溃之前提示的消息;

2 调整内核printk打印级别 

通过 /proc/sys/kernel/printk 文件可以调节 printk 的输出等级,该文件有 4 个数字值。例如,在 Ubuntu 上的值如下:

​​

 四个数值的含义如下:

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

默认的消息日志级别:将用该优先级来打印没有优先级的消息(即 printk 没有指定消息级别);

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

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

通过修改 /proc/sys/kernel/printk 中的值来改变内核打印效果。例如,屏蔽掉所有的内核 printk 打印,只需要把第一个数值调到最小值1或者0,指令如下:

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

3 dev_xxx函数简介

下面简述下这几个dev_xxx函数的基本使用规则,以及动态调试使用方式。

  • dev_info(): 启动过程、或者模块加载过程等 “通知类的” 信息等,一般只会通知一次,例如 probe 函数;
  • dev_dbg(): 一般使用在普通错误,如-EINVAL、-ENOMEM 等 errno 发生处,用于调试;
  • dev_err(): 一般使用在严重错误,尤其是用户无法得到 errno 的地方,或者程序员不容易猜测系统哪里出了问题的地方;

4 配置内核使用动态打印

  • 打开内核动态调试开关,打开内核配置选项CONFIG_DEBUG_FS=y,CONFIG_DYNAMIC_DEBUG=y
  • debugfs默认会挂载到/sys/kernel/debug,如果没有挂载,可以执行以下命令挂载: 

        mount -t debugfs none /sys/kernel/debug

5 动态调试使用方法

  • 使用下面方式控制你想输出 dev_dbg() 信息
控制某个文件所有 dev_dbg():
echo -n "file xxx.c +p" > /mnt/dbg/dynamic_debug/control控制某个函数所有 dev_dbg():
echo -n "func xxx +p" > /mnt/dbg/dynamic_debug/control
  • 运行程序,使用 dmesg 则可以看到相应 dev_dbg() 的输出信息
  • 当调试结束,不再想输出 dev_dbg() 信息了,使用下面命令关闭即可
echo -n "file xxx.c -p" > /sys/kernel/debug/dynamic_debug/controlecho -n "func xxx -p" > /sys/kernel/debug/dynamic_debug/control

例子:

echo -n "file ca_dsc_core.c +p" > /sys/kernel/debug/dynamic_debug/control 则打印ca_dsc_core.c所有的 dev_dbg() 信息
echo -n "func ca_dsc_read +p" > /sys/kernel/debug/dynamic_debug/control 则打印ca_dsc_read()函数所有 dev_dbg() 

上面是打开动态输出语句的例子,除了能输出pr_debug()/dev_dbg()函数中定义的输出信息外,还能输出一些额外信息,如函数名、行号、模块名字以及线程ID等

  • p:打开动态输出语句(可以是某个文件,某个模块,某个函数,或者文件路径包含某个关键字的文件里所有的动态打印语句)
  • f:输出函数名
  • l:输出行号
  • m:输出模块名字
  • t:输出线程ID

另外,还可以在各个子系统的Makefile中添加ccflags来打开动态输出语句

Makefile:
ccflags-y += -DDEBUG
ccflags-y += -DVERBOSE_DEBUG

6 动态打印调试的基本原理

当编译选项CONFIG_DYNAMIC_DEBUG打开的时候,在编译阶段,kernel 会把所有使用 dev_dbg() 的信息记录在一个 table 中,这些信息我们可以从/sys/kernel/debug/dynamic_debug/control解析出来:

# cat /sys/kernel/debug/dynamic_debug/control

http://www.mmbaike.com/news/70796.html

相关文章:

  • 个人未授权做的网站电工培训学校
  • 做网站需求百度公司电话
  • 南京个人网站建设百度竞价冷门产品
  • 沈阳优化网站厦门seo屈兴东
  • 做网站哪个语言快网络营销类型有哪些
  • 网站上如何做跳转页面宁波seo外包推广平台
  • 企业门户网站的建设费用直播营销的优势有哪些
  • 厦门企业官方网站建设游戏代理0加盟费
  • 刚做的网站怎么四川旅游seo整站优化站优化
  • 做网站那个平台网络推广需要什么
  • 新手学做网站txt下载厦门百度推广开户
  • 揭阳网站建设工作竞价排名什么意思
  • wordpress设置ssl证书长沙seo外包
  • 南昌网站关键词推广长沙网站seo报价
  • 网络投注网站是怎么建设建立网站需要什么
  • 接网站 建设新闻头条
  • 个人免费开店的网站seo关键词排优化软件
  • ubuntu做网站开发广告设计自学教程
  • 网站内做营销活动使用工具免费b站推广网站在线
  • 网站建设人群沈阳高端关键词优化
  • 农业科技公司网站建设上海比较大的优化公司
  • 网站服务器租赁费用表格故事式的软文广告例子
  • 浅析图书馆门户网站建设网站seo策划方案
  • 电商网站开发文献汇总宁波关键词网站排名
  • 陆良网站建设湖南百度seo
  • 做一个招聘网站需要多少钱合肥优化
  • 用KEGG网站做通路富集分析网络推广员压力大吗
  • 天津品牌网站制作宁波网络推广优化方案
  • flash xml网站模板中超最新积分榜
  • 网站建设相关的工作凡科建站收费价目表