0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux内核动态输出调试

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 15:45 次阅读

动态输出可以动态选择打开某个内核子系统的输出,可以有选择性地打开某些模块的输出。

配置内核编译选项要使用动态输出,必须在配置内核时打开CONFIG_DYNAMIC_DEBUG宏。内核代码里使用大量pr_debug()/dev_dbg()函数来输出信息,这些就使用了动态输出。

需要打开的内核配置选项:

CONFIG_DEBUG_FS=yCONFIG_DYNAMIC_DEBUG=y

图片

CONFIG_DYNAMIC_DEBUG是配置动态输出,它依赖于CONFIG_DEBUG_FS,而CONFIG_DEBUG_FS是debugfs文件系统。

打开内核配置后,我们还需要挂载debugfs文件系统。

debugfs文件系统挂载动态输出在debugfs文件系统中有一个control文件节点,这个文件节点记录了系统中所有使用动态输出技术的文件名路径、输出所在的行号、模块名字和要输出的语句。

debugfs默认会挂载到/sys/kernel/debug,如果没有挂载,可以执行以下命令挂载:

mount -t debugfs none /sys/kernel/debug/

挂载debugfs文件系统后,可以查看control节点内容:

cat /sys/kernel/debug/dynamic_debug/control

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1309

    浏览量

    39846
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 子系统
    +关注

    关注

    0

    文章

    100

    浏览量

    12264
收藏 人收藏

    评论

    相关推荐

    Linux内核学习笔记:printk调试

    很多内核开发者喜欢的调试工具是printk,在Linux内核中,使用printk()函数来打印信息,它与C库的printf()函数类似。
    发表于 06-01 15:14 636次阅读

    Linux内核学习笔记:动态输出调试

    上篇说到printk调试,但printk是全局的,只能设置输出等级。而动态输出可以动态选择打开某个内核
    发表于 06-01 15:16 324次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>学习笔记:<b class='flag-5'>动态</b><b class='flag-5'>输出调试</b>

    请问linux内核怎么调试

    问个问题,怎么调试linux内核,百度了一下,结果还是不会使用gdb调试内核。希望大虾帮忙指点一下。
    发表于 02-25 07:32

    怎样使用STM32CubeMX串口输出调试信息呢

    怎样使用STM32CubeMX串口输出调试信息呢?STM32CubeMX串口如何接收不定长的数据呢?
    发表于 12-08 06:45

    嵌入式开发为什么需要输出调试信息?

    嵌入式开发为什么需要输出调试信息? 因为输出调试信息是嵌入式开发中一项非常重要的实践,它有助于保证软件的可靠性、稳定性和性能,也是故障排查的关键工具之一。 嵌入式开发输出调试信息主要有以下
    发表于 11-28 16:46

    如何配置和使用Linux内核printk功能

    了解如何配置和使用Linux内核printk功能,包括其动态调试功能。 这样可以选择性地打印调试消息,而无需重新编译
    的头像 发表于 11-27 06:40 2877次阅读

    学会Linux内核调试方法!

    内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试
    发表于 05-07 11:01 2179次阅读

    你知道Linux内核调试关键技术之一的printk?

    内核调试技术之中,最简单的就是printk的使用了,它的用法和C语言应用程序中的printf使用类似,在应用程序中依靠的是stdio.h中的库,而在linux内核中没有这个库,所以在
    发表于 05-10 11:18 1598次阅读

    Linux:QEMU调试内核的步骤

    Linux:QEMU调试内核的步骤
    的头像 发表于 06-23 09:03 2888次阅读
    <b class='flag-5'>Linux</b>:QEMU<b class='flag-5'>调试</b><b class='flag-5'>内核</b>的步骤

    Linux开发中如何同时输出调试信息到终端及文件

    Linux下的开发中,printf打印调试信息默认输出到标准输出 stdout (即屏幕/终端)中。我们也可以使用输出重定向技术
    的头像 发表于 11-04 16:40 7073次阅读
    <b class='flag-5'>Linux</b>开发中如何同时<b class='flag-5'>输出调试</b>信息到终端及文件

    嵌入式LINUX系统内核内核模块调试教程

    本文档的主要内容详细介绍的是嵌入式LINUX系统内核内核模块调试教程。
    发表于 11-06 17:32 21次下载
    嵌入式<b class='flag-5'>LINUX</b>系统<b class='flag-5'>内核</b>和<b class='flag-5'>内核</b>模块<b class='flag-5'>调试</b>教程

    嵌入式LINUX系统内核内核模块调试

    嵌入式LINUX系统内核内核模块调试(嵌入式开发和硬件开发)-嵌入式LINUX系统内核
    发表于 07-30 13:55 9次下载
    嵌入式<b class='flag-5'>LINUX</b>系统<b class='flag-5'>内核</b>和<b class='flag-5'>内核</b>模块<b class='flag-5'>调试</b>

    使用动态输出打印内核的DEBUG信息

    printk()是很多嵌入式开发者喜欢用的调试手段之一,但是,使用printk()每次都要重新编译内核,很不方便。使用动态输出在不需要重新编译内核
    的头像 发表于 01-06 10:46 573次阅读

    APM飞控固件的两种输出调试信息的方法

    在无人机飞控固件开发过程中,我们经常需要实时输出一些调试信息(如一些变量的值、状态机切换提示等),在APM固件中有如下两种常用的输出调试信息的方法。
    的头像 发表于 07-02 17:33 1162次阅读
    APM飞控固件的两种<b class='flag-5'>输出调试</b>信息的方法

    Linux内核基础:动态输出使用

    动态输出使用 打开svcsock.c文件中所有的动态输出语句 # echo 'file svcsock.c +p' > /sys/ kernel /debug/ dynamic_deb
    的头像 发表于 09-27 15:51 257次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>基础:<b class='flag-5'>动态</b><b class='flag-5'>输出</b>使用