使用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.mzph.cn/pingmian/28912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌发布Infini-Transformer模型—无限注意力机制长度,超越极限

Transformer 是一种基于自注意力机制的深度学习模型,最初应用于自然语言处理领域,现已扩展到图像、音频等多个领域。与传统的循环神经网络 (RNN) 不同,Transformer 不依赖于顺序数据处理,能够并行计算,从而显著提高效率…

Havoc工具

Team端 客户端 打开后需要生成监听器和agent 监听 生成payload 最后上线 HTTPS流量 HTTP流量 心跳

【ARMv8/ARMv9 硬件加速系列 3.3 -- SVE LD2D 和 ST2D 使用介绍】

文章目录 SVE 多向量操作LD2D(加载)LD2D 操作说明LD2D 使用举例ST2D(存储)ST2D 使用举例ST2D 存储示例代码ld2d 和 st2d 小结SVE 多向量操作 在ARMv8/9的SVE (Scalable Vector Extension) 指令集中,st2d和ld2d指令用于向量化的存储和加载操作,具体地,它们允许同时对两个…

物联边缘网关如何助力工厂实现智能化生产?以某智能制造工厂为例-天拓四方

随着工业4.0的深入推进,智能制造工厂成为了工业发展的重要方向。在这个背景下,物联边缘网关以其独特的优势在智能制造工厂中发挥着越来越重要的作用。以下将通过一个具体的智能制造工厂应用案例,来阐述物联边缘网关如何助力工厂实现智能化生产…

超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名

该系统完全在linux下运行,不存在使用第三方收费工具,市面上很多系统都是使用的是第三方收费系统,例如:某心签名工具,某测侠等,不开源而且需要每年交费,这种系统只是在这些工具的基础上套了一层壳…

java文件传输小工具 java17+springboot3+thymeleaf

背景 在和同事工作中经常需要传输文件,但是公网传输太慢,业务方不是计算机专业直接用命令行沟通麻烦。 本小工具通过页面可视化方便用户使用,端口9090,启动默认展示当前登陆本机用户的桌面。 代码开源: https://git…

522. 最长特殊序列 II

题目 给定字符串列表 strs ,返回其中最长的特殊序列的长度。如果最长特殊序列不存在,返回 -1。 特殊序列定义如下:该序列为某字符串独有的子序列(即不能是其他字符串的子序列)。 字符串 s 的子序列可以通过删去字符…

antd的表格组件错乱问题

环境 react:17.0.2 antd:3.26.20 问题 表格头列宽度和表格体列宽度不一致,表格错乱 解决 针对这个问题官方github仓库里面有专门的issues https://github.com/ant-design/ant-design/issues/13825 里面给出了几种解决方案&#xff1a…

C++类对象模型、类对象的存储方式、this指针、this指针的引出、this指针的特性、C语言和C++实现Stack的对比等的介绍。

文章目录 前言一、C类对象模型1. 类对象的存储方式2. 结构体内存对齐规则 二、this指针1. this指针的引出2. this指针的特性3. C语言和C实现Stack的对比 总结 前言 C类对象模型、类对象的存储方式、this指针、this指针的引出、this指针的特性、C语言和C实现Stack的对比等的介绍…

2024中国应急(消防)品牌巡展成都站成功召开!

汇聚品牌力量,共同相聚成都。6月14日,由中国安全产业协会指导,中国安全产业协会应急创新分会、应急救援产业网联合主办,四川省消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-成都站成功举办。该巡展旨在展示中国应…

VMware虚拟机linux无法使用ifconfig的解决方法

在有些linux系统中,输入ifconfig会报错,这是为什么呢? 如果出现 那是说明,你的linux内没有对应的命令。 具体可输入 ls /sbin 查看,发现其中确实没有ifconfig命令 这个解决很简单,在命令行输入 sudo apt-get inst…

Cesium源码解析六(3dtiles属性获取、建筑物距离计算、建筑物着色及其原理分析)

快速导航 Cesium源码解析一(搭建开发环境) Cesium源码解析二(terrain文件的加载、解析与渲染全过程梳理) Cesium源码解析三(metadataAvailability的含义) Cesium源码解析四(metadata元数据拓展…

Arcgis投影问题

今天下载数据,右键查看属性,发现只有地理坐标系,在arcgis里面进行展示有点丑 怎么变成下面的? 步骤1:加载数据 打开ArcGIS Pro或ArcMap。在目录窗口中,右键点击“文件夹连接”或“文件夹”选项&#xff0c…

前沿观察|工业元宇宙时代下的CAE畅想

工业元宇宙,作为“元宇宙”概念的一个分支,标志着工业数字化转型迈向新纪元。在GTC大会上,NVIDIA黄仁勋展示了工业元宇宙如何通过先进的模拟技术、AI驱动的数字孪生技术和Omniverse平台,加速企业数字化转型,推动未来工…

Selenium - 启动后报org.openqa.selenium.InvalidArgumentException: invalid argument错

● 出现的异常: Build info: version: 3.141.59, revision: e82be7d358, time: 2018-11-14T08:25:48 System info: host: DESKTOP-H7TOMMO, ip: 192.168.64.1, os.name: Windows 10, os.arch: amd64, os.version: 10.0, java.version: 1.8.0_131 Driver info: dr…

标准立项 | 给水中试基地建设导则

结合近几年在已设计、建设和运维的不同规模的给水中试基地,凝练建设实践中所获得的实际经验和关键指标及参数,编制《给水中试基地建设导则》,以填补标准空白,统一建设标准。

Android Studio 2024.1.1(Koloa)版本 Profiler 工具变动

在 Android Studio 2024.1.1 (Koloa) 版本当中,Profiler 工具终于迎来了重大 UI 更新(太感动了,因为之前的 Profiler 工具连接得慢,收集 Trace 信息还很卡,步骤繁琐等,这次更新有了很大的优化) …

DY-34/60C电压继电器 带板前底座 约瑟JOSEF

系列型号: DY-32电压继电器;DY-36电压继电器; DY-33电压继电器;DY-37电压继电器; DY-34电压继电器;DY-38电压继电器; DY-31电压继电器;DY-35电压继电器; DY-32/60C电…

关于从大平台跳转各个应用,更新应用前端包后,显示的仍是旧的内容,刷新应用页面后方才显示新的内容的问题的排查和解决

我们从绿洲物联平台跳转智能锁应用, 如下,我们可以看到,我们是通过a标签去跳转应用的。但是我们打开控制台的话,因为a标签是另外新开一个页面,我们看不到新页面的html文档的加载情况。 我们可以临时把_blank改成_sel…

动力学笔记01——共振频率和共振带的数学定义

文章目录 0、背景描述1、正文2. 位移、速度、加速度的共振频率并不相同 0、背景描述 过去一年,我基本都在考虑塔架(尤其是混塔)频率仿真/模态分析的问题。关于这个问题,不仅有地基刚度,还有塔筒本身以及其他影响频率的…