From 13dd4bdf6e2800875aeb493257f4cee1d830665e Mon Sep 17 00:00:00 2001 From: gatieme Date: Sat, 1 Apr 2017 21:34:22 +0800 Subject: [PATCH] kernel debug... --- study/debug/README.md | 11 ++- study/debug/modules/printk/Makefile | 76 ++++++++++++++++++ study/debug/modules/printk/README.md | 11 ++- .../printk/cat_proc_sys_kernel_printk.png | Bin 0 -> 21176 bytes study/debug/modules/printk/test.c | 44 ++++++++++ 5 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 study/debug/modules/printk/Makefile create mode 100644 study/debug/modules/printk/cat_proc_sys_kernel_printk.png create mode 100644 study/debug/modules/printk/test.c diff --git a/study/debug/README.md b/study/debug/README.md index 3646b5b..925d159 100644 --- a/study/debug/README.md +++ b/study/debug/README.md @@ -3,15 +3,18 @@ Linux内核调试的方式以及工具集锦 | CSDN | GitHub | |:----:|:------:| -| [Linux内核调试的方式以及工具集锦](http://blog.csdn.net/gatieme/article/details/61623891) | [`AderXCoding/system/tools/you-get`](https://github.com/gatieme/AderXCoding/tree/master/system/tools/you-get) | +| [Linux内核调试的方式以及工具集锦](http://blog.csdn.net/gatieme/article/details/68948080) | [`LDD-LinuxDeviceDrivers/study/debug`](https://github.com/gatieme/LDD-LinuxDeviceDrivers/tree/master/study/debug) |
知识共享许可协议 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作 +因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 也欢迎大家提供一些其他好的调试工具以供收录, 鄙人在此谢谢啦
+ + ```cpp "调试难度本来就是写代码的两倍. 因此, 如果你写代码的时候聪明用尽, 根据定义, 你就没有能耐去调试它了." --Brian Kernighan @@ -479,5 +482,7 @@ KGTP在Linux内核 2.6.18到upstream 上都被测试过。
- -知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作. +知识共享许可协议 +本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作 +因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 也欢迎大家提供一些其他好的调试工具以供收录, 鄙人在此谢谢啦 +
diff --git a/study/debug/modules/printk/Makefile b/study/debug/modules/printk/Makefile new file mode 100644 index 0000000..a5ef6ee --- /dev/null +++ b/study/debug/modules/printk/Makefile @@ -0,0 +1,76 @@ +# ------------------------------------------------------------------------------ +# +# Makefile for the LDD-LinuxDeviceDrivers. +# +# Author: gatieme +# Create: 2016-07-29 15:50:46 +# Last modified: 2016-07-29 16:10:29 +# Description: +# This program is loaded as a kernel(v2.6.18 or later) module. +# Use "make install" to load it into kernel. +# Use "make remove" to remove the module out of kernel. +# +# ------------------------------------------------------------------------------ + + +# my driver description +DRIVER_VERSION := "1.0.0" +DRIVER_AUTHOR := "Gatieme @ AderStep Inc..." +DRIVER_DESC := "Linux input module for Elo MultiTouch(MT) devices" +DRIVER_LICENSE := "Dual BSD/GPL" + + +MODULE_NAME := test +#EXTRA_CFLAGS += -I$(SRC) + + + + + + +ifneq ($(KERNELRELEASE),) + + + + +obj-m := $(MODULE_NAME).o #print_vmarea.o + +else + +KERNELDIR ?= /lib/modules/$(shell uname -r)/build + +PWD := $(shell pwd) + +modules: + make -C $(KERNELDIR) M=$(PWD) modules + +modules_install: + make -C $(KERNELDIR) M=$(PWD) modules_install + + + +insmod: + sudo insmod $(MODULE_NAME).ko + +reinsmod: + sudo rmmod $(MODULE_NAME) + sudo insmod $(MODULE_NAME).ko + +github: + cd $(ROOT) && make github + +rmmod: + sudo rmmod $(MODULE_NAME) + + +clean: + make -C $(KERNELDIR) M=$(PWD) clean + rm -f modules.order Module.symvers Module.markers + +.PHNOY: + modules modules_install clean + + + +endif + diff --git a/study/debug/modules/printk/README.md b/study/debug/modules/printk/README.md index 6ae5ec2..b8fbb26 100644 --- a/study/debug/modules/printk/README.md +++ b/study/debug/modules/printk/README.md @@ -162,10 +162,10 @@ EXPORT_SYMBOL(printk); ```cpp // http://lxr.free-electrons.com/source/kernel/printk/printk.c?v=4.10#L59 int console_printk[4] = { - CONSOLE_LOGLEVEL_DEFAULT, /* console_loglevel, 默认控制台日志级别 */ + CONSOLE_LOGLEVEL_DEFAULT, /* console_loglevel, 控制台日志级别 */ MESSAGE_LOGLEVEL_DEFAULT, /* default_message_loglevel, 默认日志级别 */ CONSOLE_LOGLEVEL_MIN, /* minimum_console_loglevel, 最低的控制台日志级别 */ - CONSOLE_LOGLEVEL_DEFAULT, /* default_console_loglevel, 默认的 */ + CONSOLE_LOGLEVEL_DEFAULT, /* default_console_loglevel, 默认控制台日志级别 */ }; ``` @@ -254,11 +254,16 @@ syslog和kern.log一般情况下可以得到所有的系统输出值,而messag 我们在进行有关编程的时候,若使用到printk()这个函数,一般查看信息是在messages和虚拟终端下进行查看,而对于syslog和kern.log下是用来检验所有信息的输出情况。 -通过读写 `/proc/sys/kernel/printk`文件可读取和修改控制台的日志级别. + ##3.2 修改日志级别 ------- +通过读写 `/proc/sys/kernel/printk`文件可读取和修改控制台的日志级别. + +![日志运行级别](cat_proc_sys_kernel_printk.png) + + [linux内核printk调试](http://blog.csdn.net/catamout/article/details/5380562) diff --git a/study/debug/modules/printk/cat_proc_sys_kernel_printk.png b/study/debug/modules/printk/cat_proc_sys_kernel_printk.png new file mode 100644 index 0000000000000000000000000000000000000000..06ccddd15a38f4a8a96321b4cf6f2697451891a3 GIT binary patch literal 21176 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 +#include +#include + +MODULE_LICENSE("Dual BSD/GPL"); + + +static void print_loglevel(void) +{ + printk("console_loglevel = %d\n", console_loglevel); + printk("default_message_loglevel = %d\n", default_message_loglevel); + printk("minimum_console_loglevel = %d\n", minimum_console_loglevel); + printk("default_console_loglevel = %d\n", default_console_loglevel); +} + +static void print_loginfo(void) +{ + + printk(KERN_EMERG "EMERG = %s\n", KERN_EMERG); + printk(KERN_ALERT "ALERT = %s\n", KERN_ALERT); + printk(KERN_CRIT "CRIT = %s\n", KERN_CRIT); + printk(KERN_ERR "ERR = %s\n", KERN_ERR); + printk(KERN_WARNING "WARNING= %s\n", KERN_WARNING); + printk(KERN_NOTICE "NOTICE = %s\n", KERN_NOTICE); + printk(KERN_INFO "INFO = %s\n", KERN_INFO); + printk(KERN_DEBUG "DEBUG = %s\n", KERN_DEBUG); +} + + +static int book_init(void) +{ + //print_loglevel(); + print_loginfo(); + return 0; +} + +static void book_exit(void) +{ + printk(KERN_ALERT "Book module exit\n"); +} + + +module_init(book_init); +module_exit(book_exit);