以下方案

A :采用内存特定段记录问题

B :采用core文件

C:syslog虽然有时没有同步到存储介质上去,串口的打印会有作用?

D:不是所有的cpu同时挂,可否借助其它cpu记录故障内存映像?

分析

A方案将什么内容写至内存中,会有很多种情况会引起宕机,如何控制?;

若为已知的触发条件,添加自己的打印注入到内存中去?;

 

若产生了问题,创建什么标志提示用户查看内存中的log?(有的是重启了,但有的是正常reboot重启的也会在/proc/last_kmsg中产生打印);

内存中的东西如何写入和查看,如何创建高效查看的API?(是不是/proc/last_kmsg ?);

 内存确实不会掉电?

 

B方案主要涉及控制core文件占用空间大小的问题

 //资料

ram_console注册到printk输出的console_list中去;所以printk会时时向ram_console中输出kernel log

 

//手动触发宕机

https://blog.csdn.net/qq_41961459/article/details/109127592  

echo 1 > /proc/sys/kernel/sysrq

echo c > /proc/sysrq-trigger # 或者Alt+SysRq+c    然后等一段时间(可能有点长,因为要把内存镜像写入到/var/crash然后就会自动重启,重启完了之后到/var/crash下就可以看到保存下来的dmesg了

 

//RAM Console 

https://blog.csdn.net/wh_19910525/article/details/78145542

 Android系统中(driver/staging/android/ram_console.c),Ram Console驱动系统能用一段物理内存虚拟出一个console设备,这样prink输出时可以把调试信息写入RAM块中,最后通过/proc/last_kmsg输出,

//kdump

 https://blog.csdn.net/wh_19910525/article/details/78145542