使用dev_dbg调试

news2024/11/24 1:20:39

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

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.coloradmin.cn/o/1831984.html

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

相关文章

在线预览多类型文件_全栈

目录 一、下载运行项目 二、项目功能 三、前端项目引用 四、文件预览样式更改 在做项目时经常用到在线预览文件,给大家介绍一个好用的在线预览文件项目。使用技术是后端Java,前端Freemarker模板。 FreeMarker 特别适应与 MVC 模式的 Web 应用&#x…

从“产品的RFM分析”看如何探索“职业方向”

我们在做产品分析时,经常会用到一种方法“产品的RFM分析”,它是一种客户细分和价值评估的常用方法,广泛应用于电子商务、零售和其他众多行业,它可以帮助企业和产品团队更好地理解用户行为,优化营销策略,提升…

解禁日大涨,爱玛科技的投资前景值得信任吗?

6月17日,爱玛迎来6.28亿股、金额超190亿元的解禁,占总股本72.91%。不过,爱玛股价在巨量解禁中反而迎来涨势,因为这部分股票中,创始人张剑持有的限售股数量几乎就占了爱玛总股本的七成。某种意义上,市场认为…

【产品经理】订单处理4-拆单策略

上次讲解了订单的促销策略,本次讲解下订单处理过程中的拆单策略。 订单拆单策略分为自动拆单、手动拆单,拆单时机也分为订单未被审核前拆单、订单审核后因仓库/快递情况的拆单,本次主要讲解订单未被审核前拆单、订单审核后快递超重的拆单&am…

ollama模型CPU轻量化部署

一、定义 ollama 定义环境部署demo加载本地模型方法基本指令关闭开启ollamaollama 如何同时 运行多个模型, 多进程ollama 如何分配gpu修改模型的存储路径 二、实现 ollama 定义 ollama 是llama-cpp 的进一步封装,更加简单易用,类似于docker. 模型网址…

SFNC —— 标准特征命名约定(一)

系列文章目录 SFNC —— 标准特征命名约定(一) 文章目录 系列文章目录1、介绍1.1 约定(Conventions)功能名称和接口(Feature Name and Interface)功能类别(Feature Category)功能级别…

菜单栏(骆驼书)

代码如下: 效果图:

使用宝塔面板部署Django应用(不成功Kill Me!)

使用宝塔面板部署Django应用 文章目录 使用宝塔面板部署Django应用 本地操作宝塔面板部署可能部署失败的情况 本地操作 备份数据库 # 备份数据库 mysqldump -u root -p blog > blog.sql创建requirements # 创建requirements.txt pip freeze > requirements.txt将本项目…

揭示SOCKS5代理服务器列表的重要性

在复杂的网络安全领域中,SOCKS5代理在保护在线活动方面发挥着关键作用。本文深入探讨了SOCKS5代理服务器列表的细节,探讨了它们的应用、优势以及在增强在线安全和隐私方面不可或缺的功能。 一、理解SOCKS5代理服务器列表 作为在客户端和服务器之间进行通…

522. 最长特殊序列 II

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

Plonky3和Binius中的Brakedown多项式承诺协议解析及优化(3)

3.2 Expander Graph and Linear-Time Encodable Linear Code 线性时间编码是线性纠错码的一种,核心是扩展图(Expander Graph),如下图所示: Figure 3 Expander Graph Expander Graph是一种具有强连通性的稀疏图&#…

ensp防火墙web密码重置(前提通过console可以登录)

客户电脑是命令行没有用户名直接输入密码就可以登录了,但是web端不知道admin的密码 前两天遇到运维单位的一台防火墙web网页不知道用户名密码,默认的登录不了,但是通过console可以登录命令行,今天就记录下如何通过命令行修改web页…

iOS 18 照片应用程序增加了新分类用于查找二维码、收据、插图等

苹果照片应用 苹果在iOS 18的照片应用中引入了全新的设计,将图库和推荐部分合并为一个更集成的多合一视图。重新设计的实用工具部分经过全面改造,使得查找不同类型的图片更加容易。 实用工具 在iOS 17中,照片应用的实用工具部分只包括导入…

单调队列总结

单调队列的介绍 由于现在我也没接触过正经的单调队列的定义,因而引申为介绍, 单调队列,类似与单调栈,存储在单调队列里面的元素理应都是单调的,单调队列的基础使用deque(双端队列)去实现的&am…

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

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

6.17作业

//主函数 #include "widget.h" #include "from.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();From f;QObject::connect(&w,&Widget::my_jump,&f,&From::jump_slot);…

如何下载mmwave_automotive_toolbox?

摘要&#xff1a;mmwave_automotive_toolbox已经没有下载连接了&#xff0c;因为它已经和radar_toolbox集成到一起了&#xff0c;本文介绍下载方法。 链接如下 Corner Radar Overview (ti.com) 本文发布的时间时2024年6月17日&#xff0c;如果上面这个链接已经无法访问&#…

如何监控员工浏览网址(有效方法分享)

在数字化办公日益普及的今天&#xff0c;合理监控员工浏览网址成为了企业管理中的一个重要议题。 这不仅关乎工作效率的提升&#xff0c;更涉及到企业信息安全与合规管理。 以下是一些有效监控员工浏览网址的方法分享&#xff0c;旨在帮助企业管理者在保障隐私的前提下&#x…

探索AI绘画工具的前沿:创新科技与艺术的无缝融合

在科技和艺术交织的时代&#xff0c;AI绘画工具以其独特的魅力引领着创作的新潮流。本文将带您深入了解AI绘画工具的前沿技术&#xff0c;并通过最新例子展示其实际应用和潜力。 AI绘画工具概述 AI绘画工具通过集成深度学习、自然语言处理等技术&#xff0c;实现了从文字描述…

在 Selenium 中更改 User-Agent | 步骤与最佳实践

在 Selenium 中更改 User Agent 是许多网页抓取任务中的关键步骤。它有助于将自动化脚本伪装成常规浏览器&#xff0c;从而避免被网站检测到。本指南将带您了解如何在 Selenium 中更改 Google Chrome 的 User Agent&#xff0c;并提供最佳实践以确保您的网页抓取任务顺利进行。…