Steven Rostedt本周发布了一些有趣的Linux内核补丁,这些补丁虽然是实验性的,但支持在重启或崩溃过程中工作的持久跟踪。
试探性补丁允许在重新启动或崩溃时映射环形缓冲区实例,而不会丢失在调试问题中有用的信息。Rostedt解释了最初的内核补丁:
“这是一种在重启时映射环形缓冲区实例的方法。要求你有一个不被擦除的内存区域。我在Debian服务器上的QEMU上运行的Debian VM上测试了这一点,甚至在运行Fedora的裸金盒上测试了它。我很惊讶它在裸金盒上能工作,但它出人意料地始终如一地工作。”
..。
最后,这仍然是一个概念的证明。如何创建这种内存映射还没有决定。在这个补丁集中,我只是入侵了kexec崩溃代码,并硬编码了一个地址,适用于我的一台机器(对于另一台机器,我不得不四处寻找另一个地址)。也许我们可以添加一个内核命令行参数,让人们决定,或者一个选项,它可能会在ACPI(英特尔)表来拿出自己的地址。无论如何,我计划使用它进行调试,因为它已经很有特色了,但还有更多的事情可以做。
基本上,你需要做的就是:
ECHO 1;/sys/kernel/tracing/instances/boot_mapped/events/enable
做任何你想做的事情,系统就会崩溃(并引导到同一个内核)。然后:
CAT/sys/kernel/tracing/instances/boot_mapped/trace
它会有痕迹的。
我相信这里仍然有一些陷阱,这就是为什么这目前仍然只是一个POC。“
看见本补丁系列 for this interesting work that will hopefully evolve and at some point make it into the mainline Linux kernel.