开启dev_dbg方法

开启dev_dbg方法

简介

在 Linux 内核开发和调试过程中,调试日志是定位问题的重要工具。dev_dbg 是内核中常用的调试接口,但默认情况下其输出是关闭的,开发者需要根据需求启用相关功能。本篇文章将详细介绍如何通过动态调试机制启用 dev_dbg,以及在特定情况下通过其他方式实现调试信息输出。

通过动态调试

动态调试(Dynamic debug)是 Linux 内核提供的一种机制,可以在运行时启用或禁用调试日志。

确保内核启用了动态调试支持

编译内核时,确保以下配置项被启用:

CONFIG_DYNAMIC_DEBUG=y

在运行时启用 dev_dbg

通过动态调试接口,可以有选择性地启用调试信息。

  1. 查看支持动态调试的接口:

    cat /sys/kernel/debug/dynamic_debug/control
    

    该接口可以打印所有支持动态调试的驱动和打印语句,信息比较多,可以用 grep 进行过滤,下面以 phy-rockchip-inno-usb2.c 这个驱动为例,读出来的是 phy-rockchip-inno-usb2.c 驱动里面所有的 dev_dbg 语句,每一行的信息内容依次是:

    驱动文件路径+行数+模块名+函数+日志信息。

    在这里插入图片描述

  2. 启用指定模块的 dev_dbg

    echo 'module <module_name> +p' > /sys/kernel/debug/dynamic_debug/control
    

    该语句可以打印指定模块所有的 dev_dbg,从前面读到的支持动态调试的接口就可以查询到所有支持动态调试的驱动对应的模块信息,还是以 phy-rockchip-inno-usb2.c 为例,它的模块名字为 phy_rockchip_inno_usb2,因此这里实际执行的语句是:

    echo 'module phy_rockchip_inno_usb2 +p' > /sys/kernel/debug/dynamic_debug/control
    
  3. 启用指定文件的 dev_dbg

    echo 'file <filename> +p' > /sys/kernel/debug/dynamic_debug/control
    

    该语句可以打印指定驱动文件内所有的 dev_dbg,以 phy-rockchip-inno-usb2.c 为例,这里实际执行的语句是:

    echo 'file phy-rockchip-inno-usb2.c +p' > /sys/kernel/debug/dynamic_debug/control
    
  4. 启用指定函数的 dev_dbg

    echo 'func func_name +p' > /sys/kernel/debug/dynamic_debug/control
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值