我试图使用trace-cmd
来收集有关我看到的内核崩溃的更多信息。不幸的是,内核因“内核恐慌 - 不同步”消息而崩溃(即不刷新套接字和文件缓冲区,因此崩溃时在缓冲区中的任何内容都不可避免地丢失)。使用trace-cmd/ftrace在发生panic()之前获取function_graph
有没有办法来:
- 力
trace-cmd
进程刷新其缓冲区文件系统或插座?或 - 使trace-cmd/ftrace避免缓冲(即在场景后面调用printk()并使用netconsole)?
因为我运行的是,在虚拟化环境中trace-cmd
命令,然后我不在乎硬盘驱动器可能会偶尔出现了问题,因为我可以简单地恢复到持续良好的快照或重新部署的VM。
这并没有解决问题,因为我相信ftrace和trace-cmd之间还有另一个缓冲区。 unbuffer只能解开STDOUT,对吧? –
当然可以。这种方法只是尝试减少缓冲。 另一种方法是尽量避免恐慌,并让内核工作时间更长,但结果不可预知。 您可以禁用多种情况下的恐慌。查看“/ proc/sys/kernel/*文档”(https://www.kernel.org/doc/Documentation/sysctl/kernel.txt)中的“panic_on_ *”设置。 – MrCryo