使用dev_dbg调试

首先内核要使能两个配置才可以使用。一般内核都是打开的。

CONFIG_DEBUG_FS=y
CONFIG_DYNAMIC_DEBUG=y

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

[root@localhost ~]# cat /sys/kernel/debug/dynamic_debug/control | grep infiniband
drivers/infiniband/core/uverbs_cmd.c:730 [ib_uverbs]ib_uverbs_reg_mr =_ "ODP support not available\012"
drivers/infiniband/core/umem_odp.c:458 [ib_uverbs]ib_umem_odp_map_dma_and_lock =_ "ib_umem_odp_map_dma_single_page failed with error %d\012"
drivers/infiniband/core/umem_odp.c:449 [ib_uverbs]ib_umem_odp_map_dma_and_lock =_ "%s: un-expected hmm_order %d, page_shift %d\012"
drivers/infiniband/core/verbs.c:2071 [ib_core]ib_reg_user_mr =_ "ODP support not available\012"
drivers/infiniband/core/cache.c:626 [ib_core]_ib_cache_gid_del =p "%s: can't delete gid %pI6 error=%d\012"
drivers/infiniband/core/cache.c:391 [ib_core]del_gid =p "%s port=%d index=%d gid %pI6\012"
drivers/infiniband/core/cache.c:328 [ib_core]store_gid_entry =p "%s port=%d index=%d gid %pI6\012"
drivers/infiniband/core/cache.c:244 [ib_core]free_gid_entry_locked =p "%s port=%d index=%d gid %pI6\012"
drivers/infiniband/core/mad.c:366 [ib_core]ib_register_mad_agent =_ "%s: QP %d not supported\012"
drivers/infiniband/core/mad.c:356 [ib_core]ib_register_mad_agent =_ "%s: Invalid port %d\012"
drivers/infiniband/core/mad.c:340 [ib_core]ib_register_mad_agent =_ "%s: Invalid GS QP type: class 0x%x\012"
drivers/infiniband/core/mad.c:330 [ib_core]ib_register_mad_agent =_ "%s: Invalid SM QP type: class 0x%x\012"
drivers/infiniband/core/mad.c:317 [ib_core]ib_register_mad_agent =_ "%s: RMPP version for non-RMPP class 0x%x\012"
drivers/infiniband/core/mad.c:308 [ib_core]ib_register_mad_agent =_ "%s: No OUI specified for class 0x%x\012"
drivers/infiniband/core/mad.c:297 [ib_core]ib_register_mad_agent =_ "%s: Invalid Mgmt Class 0\012"
drivers/infiniband/core/mad.c:287 [ib_core]ib_register_mad_agent =_ "%s: Invalid Mgmt Class 0x%x\012"
drivers/infiniband/core/mad.c:275 [ib_core]ib_register_mad_agent =_ "%s: no recv_handler\012"
drivers/infiniband/core/mad.c:270 [ib_core]ib_register_mad_agent =_ "%s: invalid Class Version %u\012"
drivers/infiniband/core/mad.c:260 [ib_core]ib_register_mad_agent =_ "%s: invalid RMPP Version %u\012"
drivers/infiniband/core/mad.c:253 [ib_core]ib_register_mad_agent =_ "%s: invalid QP Type %d\012"
drivers/infiniband/core/ib_core_uverbs.c:328 [ib_core]rdma_user_mmap_entry_insert_range =_ "mmap: pgoff[%#lx] npages[%#x] inserted\012"
drivers/infiniband/core/ib_core_uverbs.c:196 [ib_core]rdma_user_mmap_entry_free =_ "mmap: pgoff[%#lx] npages[%#zx] removed\012"
drivers/infiniband/core/ib_core_uverbs.c:141 [ib_core]rdma_user_mmap_entry_get_pgoff =_ "mmap: pgoff[%#lx] npages[%#zx] returned\012"

比如我们想打开rdma设备gid管理的相关日志。

打开整个文件的dev_dbg使用file关键字:

echo -n "file drivers/infiniband/core/cache.c +p" > /mnt/debug/dynamic_debug/control

打开一个函数的dev_dbg开关,使用func关键字:

echo -n "func del_gid -p" > /sys/kernel/debug/dynamic_debug/control

关闭日志,则使用-p:

echo -n "file drivers/infiniband/core/cache.c -p" > /mnt/debug/dynamic_debug/control

在/sys/kernel/debug/dynamic_debug/control的输出中,我们上面的操作都会体现出来。如果函数后面是“=p”,则说明开关打开。如果是“=_”,则说明开关关闭。

使能开关后,日志必须通过dmesg查看,前面会带有设备名称作为前缀:

与printk不同的是printk会打印到串口输出,但dev_dbg不会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1454222.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

个人学习算法总结的基础crud与算法思想数据结构解释

建议都从简单的crud入手,结合生活理解了结构与操作在去进阶更难的东西,做事有规划有步骤有时间限制这样比较好进步 跳转阅读

《征服数据结构》栈

摘要: 1,栈的介绍 2,栈的链表实现 3,栈的数组实现 1,栈的介绍 栈(stack)又称堆栈,是一种特殊的线性表,只能对栈顶添加和删除元素,它是一种后进先出(LIFO, Last In First Out)的数据结…

windows系统把桌面的文件重定向到电脑的其他分区盘

当我们使用windows系统的电脑时,很喜欢把一些常用的文件放到桌面上。而桌面上的文件默认都是设定在C盘下的。时间长了,C盘容易爆红(空间不足)。下面我将介绍一种比较简单快捷的办法来解决这种问题--就是把桌面的文件重定向到电脑的其他分区盘。 首先我们…

深度解析响应式异步编程模型

上一篇文章中我们聊了一下线程池,基于线程池的多线程编程是我们在高并发场景下提升系统处理效率的有效手段,但却不是唯一的。今天我们来看一下另一种异步开发的常用手段-响应式编程模型 传统多线程模型的缺陷 多线程模型是目前应用最为广泛的并发编程手段,但凡遇到什么性能…

MySQL之优化服务器设置(六)

操作系统状态 操作系统会提供一些帮助发现操作系统和硬件正在做什么的工具。其中包括最常用的工具iostat和vmstat。如果系统不能提供它们中的任何一个,有可能提供了相似的替代品。当然目的不是让大家熟练使用iostat和vmstat,而是告诉大家用类似的工具诊…

Redis 管道

Redis的消息交互 当我们使用客户端对Redis进行一次操作时,如下图所示,客户端将请求传送给服务器,服务器处理完毕后,再将响应回复给客户端,这要花费一个网络数据包来回的时间。 如果连续执行多条指令,那就会…

YOLOv10项目-服务器上运行

1、前言 2、运行YOLOv10代码流程(超详细) (3)根据下面步骤安装: (4)数据集和其他配置 (5)测试训练(很详细) 1、前言 由于一些事情&#xff0…

RAG与Langchain简介

RAG与Langchain简介 什么是RAGRAG解决的问题RAG工作流程RAG调优策略LangChain简介 什么是RAG 检索增强生成(Retrieval-Augmented Generation),主要是通过从外部给大模型补充一些知识,相当于给模型外挂了一个知识库,让…

vue项目——前端CryptoJS加密、解密

1、vue项目需要安装CryptoJS安装包 npm install crypto-js 2、在项目中引入CryptoJS import CryptoJS from crypto-js 3、使用,代码如下 // 此处key为16进制let key jiajiajiajiajiajiajiajia;console.log(密钥:, key);// key格式化处理key Crypt…

【效率提升】倍速插件Global Speed

global speed插件可以控制网页在线视频,能够应用在Edge和Google浏览器中,只需要在插件商店中下载并配置即可。这款插件的配置选项有很多,支持视频倍速(最低0.25倍速,最高16倍速),固定标签页&…

如何通过Appium连接真机调试

1、打开appium,点击启动appium服务器(如图1) 2、appium启动成功后,点击放大镜启动检查会话(如图2) 3、填写真机设备信息和APP的package、activity,点击启动会话(如图3) 4、打开运行A…

中文翻译藏语的软件都有哪些?分享3款实用的!

在数字化时代,语言不再是沟通的障碍。随着科技的飞速发展,中文翻译藏语的软件层出不穷,为那些对藏族文化感兴趣或需要在藏区工作、旅行的人们提供了极大的便利。本文将为您盘点几款热门的中文翻译藏语软件,助您轻松跨越语言鸿沟。…

Python基础用法 之 转义字符

将两个字符进⾏转义 表示⼀个特殊的字符 \n ---> 换⾏,回⻋ \t ---> 制表符, tab键 注意: print( end\n): print() 函数中默认有⼀个 end\n, 所以,每个 print 结束之后, 都会输出⼀ 个换行。 未完待续。

Postgresql配置SSL连接

1、系统需要有openssl、openssl-devel包 yum -y install openssl openssl-devel 2、查看当前数据库是否使用openssl编译 pg_config|grep CONFIGURE 如果没有重新编译 make clean make && make install 3、服务器端证书配置 服务器端需生成三个文件: root.crt(根证…

电感的本质是什么

什么是电感? 电感器件一般是指螺线圈,由导线圈一圈靠一圈地绕在绝缘管上,绝缘管可以是空心的,也可以包含铁芯或磁粉芯。 为什么把’线’绕成’圈’就是电感? 电感的工作原理非常抽象,为了解释什么是电感…

销售如何提高回复客户消息的速度?

在如今竞争激烈的商业环境中,能够快速回复客户消息是维护客户关系和提升用户体验的重要一环。尤其是对于很多企业或是销售客服人员来说,及时回复客户的咨询和反馈,能够有效增强客户的粘性和满意度。 那么怎样才能快速回复客户消息呢&#xf…

网线不通?瞅瞅这里----关于交叉网线的原理。

最近搞了个项目,UDP对接UDP,死活对接不上。 最后发现是交叉网线的事情,在此记录交叉网线的原理。 先说结论:不同设备用直连,相同设备用交叉网线 细说说 1.原理 网线的原理实际就是TX与RX对接。 正常一个设备同时有…

【蜂窝物联】物联网智能控制器助力各种自动化控制领域科学管控

【蜂窝物联】4G远程温湿度传感器科学管理利器,应用无处不在 2024-06-17 14:09 发布于:福建省 随着信息化的不断推进,对各行各业都是一次现代化升级的契机,比如工厂的温湿度监测工作,完全可以由无线温湿度监控方案…

长期保存红酒的挑战与应对策略

云仓酒庄雷盛红酒,以其卓着的品质和口感,赢得了无数葡萄酒爱好者的喜爱。然而,对于那些希望长期保存这些珍贵佳酿的人来说,如何确保红酒的品质和风味不受时间的影响,却是一项充满挑战的任务。 长期保存红酒的大挑战来自…

网站改成HTTPS方法

网站改成HTTPS只要网站没有特殊性的要求,绝大部分网站很轻松的就可以完成,尤其是CMS类似的网站系统或者自助搭建的网站(比如:这种网站可以在网站后台一次性安装并且生效)。 基本要求 将网站改成HTTPS有2个前提&#…