第十八章 调试 一、调试开始前的准备 1.准备开始 成功调试的关键在于能否将错误重现 2.内核中的bug 其产生原因无数,表象变化也多种多样。从隐藏在源代码中的错误到出现的bug,可能是由一系列连锁反应触发的。 二、通过打印调试 1.健壮性 printk()函数的健壮性特质使得任何时候、任何地方都能
分类:
系统相关 时间:
2016-03-23 19:41:39
阅读次数:
186
1、查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4 4 1 7 其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息 2、修改打印 echo "新的打印级别 4 1 7" >/proc/sys/...
分类:
其他好文 时间:
2016-03-11 16:56:12
阅读次数:
153
驱动中pr_debug定义在kernel/include/linux/printk.h /* If you are writing a driver, please usedev_dbg instead */ #if defined(CONFIG_DYNAMIC_DEBUG) /* dynamic_
分类:
其他好文 时间:
2016-03-05 18:55:01
阅读次数:
154
我尝试各种办法,wm8960始终不能得到声音输出。调试过程如下:首先,打开电源使能脚: ret=gpio_request(SABRESD_CODEC_PWR_EN,"audio_pwr_en"); if (!ret){ printk("Turn on audio(wm8962)power!(1:en
分类:
其他好文 时间:
2016-03-02 11:01:36
阅读次数:
305
我们的线上web服务器在访问量很大时,就会出现网络连接丢包的问题,通过dmesg命令查看日志,发现如下信息:kernel:ip_conntrack:tablefull,droppingpacket.
kernel:printk:1messagessuppressed.
kernel:ip_conntrack:tablefull,droppingpacket.
kernel:printk:2messagessuppres..
分类:
其他好文 时间:
2016-01-22 18:25:22
阅读次数:
262
Kernel API Logging within the kernel is performed using the printk function int printk( const char * fmt, ... );The kernel code simply defines the log...
2.6内核1>改动linux-source-2.6.31/kernel/sys.c文件,在文件末尾加入系统响应函数。函数实现例如以下:asmlinkage int sys_mycall(int number){ printk("这是我加入的第一个系统调用"); return number;}2>在l...
分类:
系统相关 时间:
2015-12-20 17:19:35
阅读次数:
235
Linux调试内核代码是非常麻烦。它们一般加printk, 或者使用JTAG调试。这里的方法是使用QEMU为了调试Linux核心。由于QEMU自己实现gdb server, 它可以容易地使用gdb要调整内核。也很有帮助。为了尽量不多花时间在QEMU设置上,这里直接使用下面的内核image:http:...
分类:
系统相关 时间:
2015-12-15 14:01:57
阅读次数:
158
hello.c#include#include#include int init_module(){ printk("hello world!\n"); return 0; }void cleanup_module(){ printk("godbye"); } MODULE...
分类:
其他好文 时间:
2015-12-05 22:42:38
阅读次数:
205
1,新建hello.c#include#includeMODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello,init the module!"); return 0;}static v...
分类:
系统相关 时间:
2015-11-02 13:54:29
阅读次数:
165