在这里插入图片描述
4.勾中左边的所有选项,然后点击Scan for Issues,然后点击右边的Review selected Issues…这个是清理注册表中所有未关联项目的。
Crash工具用于解析Vmcore文件,Vmcore文件为通过kdump等手段收集的 *** 作系统core dump信息,在不采用压缩的情况下,其相当于整个物理内存的镜像,所以其中包括了最全面、最完整的信息,对于分析定位各种疑难问题有极大的帮助。配置kdump后,在内核panic后,会自动进入kump流程,搜集Vmcore。Crash工具即为专门用于分喊改析vmcore文件的工具,其中提供了大量的实用分析命令,喊渗蚂极大的提高了vmcore的分析效率。
在分析vmcore的过程中,常常需要解析内核某个流程中的关键变量的值,以便确认故障当时系统的状态,本文主要介绍变量的解析方法,主要分全局变量和局部变量两种情况。
1、全局变量解析非常简单,可通过在crash中直接p <变量名>打印,如:
点击(此处)折叠或打开
crash>p jiffies
jiffies = $3 = 5540265294
2、局部变量的解析比较复杂。
Vmcore搜集的仅为故障当时内存使用情况的一个快照,是静态信息,无法进行动态调试(虽然听说可以,但没见过~~),对于某个进程而言,在Vmcore中能发掘的进程上下文信息,通常只有堆栈和寄存器的值。而我们了解,通常局部变量在栈中分配,但也可能直接使用寄存器保存,所以可以(也只能)通过“寻找局部变量跟堆栈郑埋或寄存器的关系”来解析局部变量的值。所以这里分两种情况:
1)位于栈中的局部变量
这种情况比较常见,此时,局部变量必然位于某一级函数的堆栈中,该局部变量可能通过指针一级级向底层函数传递,所以可能位于多个函数的堆栈中,可以从不同的函数堆栈中解析。但解析会比较困难,难点在于难以确认相关变量在堆栈中的具体位置,解析方法很灵活,需要结合相关源代码,仔细分析流程,找到关键的点,更多的取决于分析者的经验和代码理解能力。
如下以实例说明解析过程:
vmcore中某阻塞的进程有如下的堆栈
有三种方法
1、使用快照功能备份系统 打开虚拟机,点开虚拟机-快照-拍摄快照。填写快照名称和描述,方便记忆,点击拍摄快照。 等待结束。如裤弯果需要恢复,点击虚拟机-快照-管理快照。
2、虚拟机克隆功能 导航栏中找到‘虚拟机’并进入,在‘管理’中找到‘克隆’,点击进去。(克隆功能需关闭当前使用的虚拟机) 出现克隆虚衡轮拟机向导,点击下一步,创建完整克隆,填写一个名字,然后选择克隆虚拟机存放的位置。等待克隆结束,结束后会在虚拟机中多出一个刚才生成克隆系统。
3、直接复制.vmx 这种方法比较简单,直接将虚拟机生成的.vmx文件复制一份到其他目录。 需咐纯信要时复制回来即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)