一、触发panic
1.在内核中调用函数panic
内核配置
CONFIG_MAGIC_SYSRQ=y
程序触发panic
panic("kernel panic!");
2.命令行执行触发panic
命令行下执行
#设置内核panic
echo 1 > /proc/sys/kernel/panic_on_oops
#使能内核magic sysrq
echo 1 > /proc/sys/kernel/sysrq
#magic sysrq feature 触发panic
echo c > /proc/sysrq-trigger
二、panic源码
大部分省略
//kernel/kernel/panic.c
void panic(const char *fmt, ...)
{
local_irq_disable();
preempt_disable_notrace();
pr_emerg("Kernel panic - not syncing: %s\n", buf);
kgdb_panic(buf);
kmsg_dump(KMSG_DUMP_PANIC);
panic_print_sys_info();
if (_crash_kexec_post_notifiers)
__crash_kexec(NULL);
pr_emerg("---[ end Kernel panic - not syncing: %s ]---\n", buf);
/* Do not scroll important messages printe