回答
不会有核心文件。 你应该在内核消息中跟踪堆栈跟踪。键入dmesg以查看它。
正常情况下,无论何时生成芯核,它都会声明“核心转储”。这可能是确认是否生成了coredump的高级别简单方法,但仅凭此语句无法保证coredump文件的可用性。生成coredump的位置通过core_pattern通过sysctl指定给内核。您需要检查系统core_pattern中的信息。另外,请注意,在Ubuntu的情况下,默认情况下coredump文件大小保持为零,这将避免生成coredump。因此,您可能需要检查核心文件大小ulimit并将其更改为'ulimit -c unlimited',如果它为零。手册页http://man7.org/linux/man-pages/man5/core.5.html解释了由于Coredump不能生成而导致的各种原因。
但是,根据你的解释,看起来你正面临着'kernel oops',因为即使特定模块被恐慌/死亡,内核仍然处于不稳定状态。在这种情况下,内核将打印一个oops消息。请参阅链接https://www.kernel.org/doc/Documentation/oops-tracing.txt,其中包含有关内核oops消息的信息。
从链路摘要:通常情况下,哎呀文本由klogd的和 移交到syslogd其写入系统日志文件,通常 的/ var/log/messages中(内核缓冲区读取取决于/等/ syslog.conf内容)。有时klogd 死亡,在这种情况下,您可以运行dmesg> file从 内核缓冲区读取数据并保存。或者你可以cat/proc/kmsg>文件,然而 你必须打入来停止转移,kmsg是一个“永无止境的 文件”。
printk用于生成oops消息。 printk通过不同的日志级别/优先级来标记严重性,并允许根据消息的严重程度对消息进行分类。 (不同的优先级在文件linux/kernel.h或linux/kern_levels.h中定义,以KERN_EMERG,KERN_ALERT,KERN_CRIT等宏的形式定义)。因此,您可能需要使用cat/proc/sys/kernel/printk并根据您的要求进行更改。另外,请检查日志守护进程是否已启动,并确保您想要调试内核,并确保使用CONFIG_DEBUG_INFO编译内核。
到使用GDB的方法寻找到内核恐慌或在Ubuntu oopsed的位置是在连接https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks可以是可以由你来调试内核oops中所使用的方法之一。
- 1. Linux内核和我的内核模块
- 2. 配置Linux内核,模块,应用Makefiles生成汇编文件
- 3. 使用gcc与内核头文件编译Linux内核模块
- 4. Linux内核模块编程
- 5. Linux内核模块调试
- 6. Linux内核模块编译
- 7. Linux内核模块ABI(x86)
- 8. 安装Linux内核模块
- 9. 从Linux内核模块
- 10. Linux内核模块配置
- 11. Linux内核模块编译
- 12. 关于linux内核模块
- 13. 剖析Linux内核模块
- 14. 谁生成核心转储文件?内核还是glibc?
- 15. Magento核心模块事件
- 16. Azure Powershell模块 - Linux(.NET核心)支持
- 17. 编译包含非内核头文件的linux内核(2.6)模块
- 18. Linux内核模块中的内核线程之间的通信
- 19. RPC核心生成
- 20. linux内核模块内存检查器
- 21. 不同内核补丁之间的Linux内核模块
- 22. Linux内核模块(内核3.5)中的系统调用拦截
- 23. 其他内核的Linux内核模块开发编译
- 24. 启动时内核模块在Linux内核中的状态
- 25. Linux内核模块的权限
- 26. 基本的linux内核模块
- 27. 什么引发的linux内核模块
- 28. 构建Linux内核模块的问题
- 29. linux内核模块的缺点?
- 30. Linux内核模块的位置