Linux 下有多个内存转储分析工具,如 lcrash、Alicia、Crash。Crash 是一个由 Dave Anderson 开发并维护的内存转储分析工具,当前版本为5.0.0。在没有统一标准的内存转储文件格式的情况下,Crash 支持多种格式。
Crash 的命令格式如下:crash [OPTION]... NAMELIST MEMORY-IMAGE[@ADDRESS]其中,namelist 是用于调试版本内核的名称列表,通常需要自定义编译,或者从发行版网站下载包含内核的/usr/lib/debug/lib/moles/内核版本/vmlinux软件包。而memory-image是转存的某种格式的mp文件。
为了使用 Crash,需要安装相应的kernel-debuginfo和debug-info-common软件包,如 CentOS 8 下,可以从debuginfo.centos.org/8/...下载安装包。
使用 Crash 的命令提示符执行相关操作。Crash 内置命令用于查看寄存器值、调用堆栈等信息,这些命令与 gdb 相似。
例如,bt命令用于打印内核堆栈,可以列出所有内核堆栈或指定进程的堆栈。使用 bt + pid列出特定进程的堆栈,bt -f列出所有堆栈详细信息,bt -p仅打印崩溃线程的内核栈。
dmesg命令用于查看崩溃时的内核日志信息。
dis命令用于反汇编地址或函数,显示该地址对应的源码。例如,dis -l显示特定行号的源码。
rd命令用于读取内存内容。
mod命令用于查看、加载模块的符号调试信息。需要加载包含符号信息的模块。
x/FMT命令用于查看内存内容,FMT参数包括大小、格式和长度。
sym命令用于将虚拟地址转换为符号。
ps命令用于打印内核崩溃时的进程信息。
file命令用于打印指定进程的文件打开列表。
Crash 还支持如 vm [pid]查看进程的虚拟地址空间,task [pid]查看进程的task_struct和thread_info信息,以及kmem -I查看内存使用情况。
Crash 可以用于实际测试,如主动触发崩溃情况分析和分析空指针产生的 core mp 文件。在实验中,内核版本为 4.18.0-193.19.1.el8_2.x86_64,Crash 版本为 7.2.7-3.el8,且使用了 kexec-tool。
以上是 Crash 工具的主要功能和使用方法,通过这些命令,开发者可以深入分析内存转储文件,定位并解决潜在的内存错误。
㈡ Linux里面kmp是什么
mp 是 Linux Kernel 崩溃时的转储机制,简单理解就是在系统启动过程中如果 Kernel 因为某些原因崩溃了,kmp 就会负责记录日志以便排查原因。
㈢ 安装CentOS 7的时候出现dracut:/#求解决方法!
安装CentOS 7的时候出现“dracut:/#”解决方法:
1,这是因为安装程序未能找到安装文件,无法加载所致。
2,可以在随后出现的 dracut:/# 输入命令 cd /dev后找到安装文件所在的位置,重启后修改(在启动引导的地方输入 e 进入编辑状态)启动配置,将vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOSx207x20x86_64 rd.live.check quiet 改为:vmlinuz initrd=initrd.imginst.stage2=hd:/dev/sda quiet其中 /dev/sda 是安装文件所在U盘在系统中的设备号。然后继续回车,即可正常进入安装过程。