《Linux Device Drivers》第四章 调试技术——note

本文介绍了Linux内核调试的各种技术,包括内核配置选项如CONFIG_DEBUG_SLAB,使用printk进行日志打印,通过/proc文件系统进行查询,利用syslogd记录信息,以及strace、gdb等工具进行系统跟踪和调试。还提到了内核Oops消息、SysRq魔法键以及kgdb等高级调试方法。
摘要由CSDN通过智能技术生成
1.本章知识点
  • 内核中和调试相关的选项
    • CONFIG_DEBUG_KERNEL
    • CONFIG_DEBUG_SLAB
    • CONFIG_DEBUG_PAGEALLOC
    • CONFIG_DEBUG_SPINLOCK
    • CONFIG_DEBUG_SPINLOCK_SLEEP
    • CONFIG_INIT_DEBUG
    • CONFIG_DEBUG_INFO
    • CONFIG_MAGIC_SYSRQ
    • CONFIG_DEBUG_STACKOVERFLOW
    • CONFIG_DEBUG_STACK_USAGE
    • CONFIG_KALLSYMS
    • CONFIG_IKCONFIG
    • CONFIG_IKCONFIG_PROC
    • CONFIG_ACPI_DEBUG
    • CONFIG_DEBUG_DRIVER
    • CONFIG_SCSI_CONSTANTS
    • CONFIG_INPUT_EVBUG
    • CONFIG_PROFILING

  • 通过打印调试
    • printk
      • 通过附加不同日志级别,可让printk对消息进行分类
      • <linux/kernel.h>
        • KERN_EMERG
        • KERN_ALERT
        • KERN_CRIT
        • KERN_ERR
        • KERN_WARNING
        • KERN_NOTICE
        • KERN_INFO
        • KERN_DEBUG
      • 默认级别是DEFAULT_MESSAGE_LOGLEVEL
        • 2.6.10内核中,默认级别是KERN_WARNING
      • /proc/sys/kernel/printk
        • 4个整数值
        • 当前的日志级别、未明确指定日志级别时的默认消息级别、最小允许的日志级别以及引导时的默认日志级别
    • 重定向控制台消息
    • 消息如何被记录
      • printk函数将消息写到一个长度为__LOG_BUF_LEN字节的循环缓冲区中
      • 唤醒正在等待消息的进程,或者正在读取/proc/kmsg的进程
      • 可以在任何地方调用printk,甚至在中断处理函数里也可以调用,而且对数据量的大小没有限制
      • klogd
      • syslogd
      • /etc/syslog.conf
    • 开启及关闭消息
      • 定义一个宏,在需要时,这个宏展开为一个printk(printf)调用
        • 可以通过在宏名字中删除或增加一个字母来启用或禁用每一条打印语句
        • 在编译前修改CFLAGS变量,则可以一次禁用所有消息
        • <
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值