Linux内核调试

1.控制台优先级配置
cat /proc/sys/kernel/printk
6 4 1 7
6是控制台的优先级,打印信息的优先级要比它高才能打印出。
4是默认的优先级
cat /var/log/messages 不管你的打印信息有没有打印,这个文件中都有记录

修改日志方法:https://blog.csdn.net/tonywgx/article/details/17504001

# cat /proc/sys/kernel/printk
7 4 1 7

该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。
上面显示的4个数据分别对应:
控制台日志级别:优先级高于该值的消息将被打印至控制台
默认的消息日志级别:将用该优先级来打印没有优先级的消息
最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)
默认的控制台日志级别:控制台日志级别的缺省值

#define KERN_EMERG KERN_SOH "0" /* system is unusable */
#define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */
#define KERN_CRIT KERN_SOH "2" /* critical conditions */
#define KERN_ERR KERN_SOH "3" /* error conditions */
#define KERN_WARNING KERN_SOH "4" /* warning conditions */
#define KERN_NOTICE KERN_SOH "5" /* normal but significant condition */
#define KERN_INFO KERN_SOH "6" /* informational */
#define KERN_DEBUG KERN_SOH "7" /* debug-level messages */

echo 7 4 1 7 > /proc/sys/kernel/printk

在console_printk中静态指定的
int console_printk[4] = {
CONSOLE_LOGLEVEL_DEFAULT, /*7: console_loglevel */ 将其改为8,KERN_DEBUG等级的也可以打印出来!
MESSAGE_LOGLEVEL_DEFAULT, /*4: default_message_loglevel */
CONSOLE_LOGLEVEL_MIN, /*1: minimum_console_loglevel */
CONSOLE_LOGLEVEL_DEFAULT, /*7: default_console_loglevel */
};
将其改为6 3 1 6,然后再/proc/sys/kernel/printk中的就是6 3 1 6了

2.反汇编命令
arm-linuc-objdump –D –S holle.ko –>log.txt  可用于debug oops

原文地址:https://www.cnblogs.com/hellokitty2/p/9433452.html