c - linux内核 panic 消息在哪里?

标签 c linux-kernel panic

我不知道它是否与SO有关。我知道当我使用Linux内核时 panic 函数,它的工作是卡住我的系统,但它需要一个参数,一条消息。如果我的系统完全卡住并且我通过按住电源关闭按钮强制关闭我的电脑,我实际上在哪里可以看到该消息?
main.c

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h> // panic

MODULE_LICENSE("GPL");

static int __init initialization_function(void)
{
    panic("Module: my message!\n");
    return 0;
}

static void __exit cleanup_funcion(void)
{    
    printk(KERN_INFO "Module: Cleanup done, exiting.\n");
}

module_init(initialization_function);
module_exit(cleanup_funcion);
顺便说一句,我不知道如何才能看到实际的 oops 消息,在哪里以及如何看到它?

最佳答案

它进入内核控制台,与 printk() 相同的位置。消息去。 Wikipedia article on kernel panic中有截图:
enter image description here
通常,如果内核崩溃发生在引导时,您将能够看到它。
至于如果你有一个正在运行的桌面系统会发生什么,不幸的是我不记得了。要么你看不到它,要么 X/Wayland 服务器会崩溃,你会在控制台中看到它的消息。

关于c - linux内核 panic 消息在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64099710/

相关文章:

Go:从 defer 中返回

rust - 如何修复 `definition of unknown language item ' panic_fmt'`?

c - 同一个管道的多个读取进程都可以读取同一条消息

java - 如何通过从 C++ 中的文件中读取来拆分 ByteArray?

c - "use of undeclared identifier"将 void 指针类型转换为结构指针时

c - 如何在 C 中读取字符数组并通过错误检查将其转换为整数?

c - 是否有 linux (gcc) 上使用的所有用户数据结构的引用

docker - 如果 docker 更新它的 linux 内核,它会破坏现有的 docker 镜像吗?

linux - 基于Linux内核的Windows?

Android:内核崩溃后如何获取内核日志?