首页 > 其他分享 >Kernel之debug调试信息

Kernel之debug调试信息

时间:2023-11-09 16:35:37浏览次数:41  
标签:Kernel defined fmt dbg DEBUG 调试信息 dev debug printk

Kernel之debug调试信息
背景
平时我们在调试内核或驱动的时候,需要打开或增加调试信息,最常见的比如dev_dbg()、pr_debug()等
以内核v5.15为例,我们先来看一下上面2个日志打印函数在内核里面的大致定义:

dev_dbg() [include/linux/dev_printk.h]
C

#if defined(CONFIG_DYNAMIC_DEBUG) || \
    (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE))
#define dev_dbg(dev, fmt, ...)                        \
    dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
#elif defined(DEBUG)
#define dev_dbg(dev, fmt, ...)                        \
    dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
#else
#define dev_dbg(dev, fmt, ...)                        \
({                                    \
    if (0)                                \
        dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \
})
#endif

pr_debug() [include/linux/printk.h]

作者: Shell

标签:Kernel,defined,fmt,dbg,DEBUG,调试信息,dev,debug,printk
From: https://blog.51cto.com/winter91/8284414

相关文章

  • Kernel之通知链
    Kernel之通知链背景最近在调触摸屏,看代码时偶然看到了通知链相关的代码,加上之前刚好了解了一点通知链相关的东东,所以特此记录下。在触摸屏驱动中的主要功能就是在开关屏的时候通知TP进行resume和suspend操作,大致的伪代码如下,以我看的elan的TP驱动为例:C.../*通知链的事件回调......
  • 从FrameDebugger看Unity渲染
    Unity如何渲染一个3D+2D的游戏画面,今天通过FrameDebugger来看下Unity内置渲染管线的渲染策略,后续再出一些URP渲染管线相关的文章。 Unity渲染场景的几个主要部分 Unity内置渲染管线是基于摄像机来进行渲染的,每个摄像机按照摄像机的渲染顺序来依次渲染,渲染完一个摄像机,再......
  • openEuler22.03操作系统 Linux内核Kernel 5.10 应该选择哪个版本的mysql安装包下载?
    对于openEuler22.03操作系统和Linux内核Kernel5.10,你应该选择与该操作系统和内核版本兼容的MySQL安装包进行安装。在确定适合的MySQL版本时,你可以考虑以下几点:MySQL官方支持:查看MySQL官方网站中的文档或支持页面,确认其是否支持openEuler22.03操作系统和Kernel5.......
  • 如何debug
    如何debug写在前面本节课介绍的内容是基于我个人的经验和网上搜集的资料,可供各位参考,希望大家有所收获;讲授的内容是方法论,提高debug能力的最快方式就是多写多练;debug不是我们的目的,重要的是要吸取教训,不要在同一个地方跌倒两次;最好的debug方式就是少写bug。这需要:......
  • Debug - MySQL - Err 1062 duplicate entry xxxx for key xxx
    可能原因1脏数据存在 可能原因2当你手动刷sql修改表结构时,可能这张表正有写库操作。一边写库一边修改表结构,就会出现这种错误。。。原因未知,猜测和锁表有关系 两次错误提示:详细的数据是不一样的....而且日期是今天的,说明不是脏数据  等待写库程序结束,再刷表就没......
  • 饮冰三年-人工智能-Django淘宝拾遗-86- Django Debug Toolbar调试工具
       在开发Django应用程序时,调试是不可或缺的一部分。DjangoDebugToolbar是一个强大的调试工具,可以帮助开发者深入了解应用程序的性能和执行细节。本文将介绍DjangoDebugToolbar的安装步骤以及如何在Django应用程序中使用该工具。项目使用的是github上开源的项目......
  • PHP:ThinkPHP6.0打开debug调试模式
    文档:https://www.kancloud.cn/manual/thinkphp6_0/1037484根目录下新建环境变量文件:.envAPP_DEBUG=true......
  • dotnet 探究 SemanticKernel 的 planner 的原理
    在使用SemanticKernel时,我着迷于SemanticKernel强大的plan能力,通过plan功能可以让AI自动调度拼装多个模块实现复杂的功能。我特别好奇SemanticKernel里的planner的原理,好奇底层具体是如何实现的。好在SemanticKernel是完全开源的,通过阅读源代码,我理解了SemanticK......
  • 配置rhel系统kdump安装RHEL的debuginfo软件包
    7.1.1.关于kdumpKdump是一种内核碰撞倾销机制,可将系统内存的内容保存以供以后分析。它依赖于kexec,它可以用来从另一个内核的上下文中启动Linux内核,绕过BIOS,并保留第一个内核内存的内容,否则会丢失。在系统崩溃的情况下,kdump使用kexec启动到第二个内核(捕获内核)。第二......
  • 从FrameDebugger看Unity渲染
     Unity如何渲染一个3D+2D的游戏画面,今天通过FrameDebugger来看下Unity内置渲染管线的渲染策略, 后续再出一些URP渲染管线相关的文章。    Unity渲染场景的几个主要部分    Unity内置渲染管线是基于摄像机来进行渲染的,每个摄像机按照摄像机的渲染顺序来依次渲染,渲......