一 调试前的准备
二 内核中的bug
三 内核调试配置选项
1 内核配置
2 调试原子操作
四 引发bug并打印信息
1 BUG()和BUG_ON()
2 dump_stack()
五 printk()
1 printk函数的健壮性
2 printk函数脆弱之处
3 LOG等级
4 记录缓冲区
5 syslogd/klogd
6 dmesg...
分类:
系统相关 时间:
2016-05-18 19:25:24
阅读次数:
365
最简单的内核模块#include
#include
static int __init hello_init(void) //内核初始化函数
{
printk("hello world!\n"); //打印函数,和prinft类似
return 0;
}
static void __exit...
分类:
系统相关 时间:
2016-05-13 00:23:07
阅读次数:
170
Printk与Printf对比: 相同点: 打印信息 不同点: Printk在内核中使用,Printf在应用程序中使用 Printk允许根据严重程度,通过附加不同的“优先级”来对消息分类。 在<linux/kernel.h>中定义了8种记录级别。按照优先级递减的顺序分别是: KERN_EMERG “ ...
分类:
其他好文 时间:
2016-05-04 21:01:21
阅读次数:
130
1、基本原理 (1)在UBOOT里设置console=ttySAC0或者console=tty1 这里是设置控制终端,tySAC0 表示串口, tty1 表示lcd(2)内核用printk打印 内核就会根据命令行参数来找到对应的硬件操作函数,并将信息通过对应的硬件终端打印出来! 2、printk的使 ...
分类:
其他好文 时间:
2016-04-20 20:08:08
阅读次数:
150
首先我们需要弄清楚proc机制,来看看fs/proc/proc_misc.c这个文件,从入口函数开始看: proc_misc_init(void) #ifdef CONFIG_PRINTK { struct proc_dir_entry *entry; entry = create_proc_ent ...
分类:
其他好文 时间:
2016-04-20 19:57:08
阅读次数:
217
上一节的程序很振奋人心,我们自己实现了一个myprintk打印函数。但是这个函数存在一个致命的缺陷,那就是只能使用一次cat /proc/mymsg命令来读取mylog_buf的值。这是因为读到最后会出现:mylog_r == mylog_w,表示缓冲区为空,下一次就不能在读到数据了。在本节里面我们 ...
分类:
其他好文 时间:
2016-04-20 19:48:37
阅读次数:
149
自定义模块lib\test.pyintaintbdefadd(a,b)k=a+b
returnkk=add(a,d)printk参数传递
>>>a=5>>>b=6>>>test.add(a,b)11
分类:
编程语言 时间:
2016-04-09 17:16:45
阅读次数:
196
linux内核打印数据到串口控制台问题 原文来源:http://i.cnblogs.com/EditPosts.aspx?opt=1 1、查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4 4 1 7 其中第一个“4”表示内核打印函数printk的打印级别,只有级别 ...
分类:
系统相关 时间:
2016-04-01 14:44:06
阅读次数:
253
这段时间复习了一下内核调试系统,注意看了一下printk的实现以及内核日志的相关知识,这里做一下总结。 一、printk概述 对于做Linux内核开发的人来说,printk实在是再熟悉不过了。内核启动时显示的各种信息大部分都是通过她来实现的,在做内核驱动调试的时候大部分 时候使用她就足矣。她之所以用 ...
分类:
系统相关 时间:
2016-03-29 12:30:27
阅读次数:
315
输出LOG不光是内核调试, 即使是在用户态程序的调试中, 也是经常使用的一个调试手段. 通过在可疑的代码周围加上一些LOG输出, 可以准确的了解bug发生前后的一些重要信息. linux内核中输出LOG的函数是 printk (语法和printf几乎雷同, 唯一的区别是printk可以指定日志级别) ...
分类:
系统相关 时间:
2016-03-24 16:20:37
阅读次数:
226