内存转储分析方法可分为死锁分析法和不正常分析法两种。两种方法的不同之处在于,死锁
分析整个系统开始,不正常分析从特定不正常点开始。死锁现象体现出来,便是系统不响应现
象。死锁分析是全局的。这里的总体情况是整个操作系统,包括所有流程。我们从教科书、运
行程序中学到的,包括代码片段、数据片段和堆栈片段。使用这种方法来查看系统也是适当的
。系统的全貌实际上包括正在执行的代码(线程)和用于保存状态的数据(数据、堆栈)。
死锁的本质是系统中的部分或全部线程进入等待状态并相互依赖,使得进程执行的任务不能继
续。因此,分析这种现象的核心思想是分析系统中所有线程的状态及其依赖性,如图1所示。
线程的状态是相对性明确的信息。我们可以根据载入运行内存转储中的线程状态标示来得到
这类信息。依靠关系分析需要大量的技能和实践经验。最常用的分析方法是对物体的等待关
系、时间分析等。
续。因此,分析这种现象的核心思想是分析系统中所有线程的状态及其依赖性,如图1所示。
线程的状态是相对性明确的信息。我们可以根据载入运行内存转储中的线程状态标示来得到
这类信息。依靠关系分析需要大量的技能和实践经验。最常用的分析方法是对物体的等待关
系、时间分析等。
与死锁分析相比,不正常分析方法的关键是不正常。大家常常会碰到出现异常,比如清零实际
操作、不法命令实行、不正确的详细地址浏览,乃至是手机软件级別的非法操作。这些不正常
对操作系统级别反应,是不正常重启类停机的现象。不正常现象说到底是CPU执行了具体的指
令而开启的。换句话说,我们看到的现象必须是CPU跨越了不正常。所以我们需要从不正常点
开始,从而推导出代码执行的完整逻辑。
操作、不法命令实行、不正确的详细地址浏览,乃至是手机软件级別的非法操作。这些不正常
对操作系统级别反应,是不正常重启类停机的现象。不正常现象说到底是CPU执行了具体的指
令而开启的。换句话说,我们看到的现象必须是CPU跨越了不正常。所以我们需要从不正常点
开始,从而推导出代码执行的完整逻辑。
就经验而言,很少有工程师知道如何分析内存转储不正常,很少有人了解上述情况。许多工程
师对不正常重启现象进行了分析,基本上只是在不正常本身中,没有对这一现象背后的整个逻
辑进行推导。与死锁分析方法相比,异常分析方法不是很多固定规则,甚至很多次,由于现象
逻辑复杂,我们找不到根源。总体而言,不正常分析的基本逻辑是不断比较预期情况和非预期
情况,找出其背后的原因。例如,处理由执行错误指令开启的不正常,我们需要首先回答正常
执行指令应该是什么,以及为什么CPU得到错误指令。
师对不正常重启现象进行了分析,基本上只是在不正常本身中,没有对这一现象背后的整个逻
辑进行推导。与死锁分析方法相比,异常分析方法不是很多固定规则,甚至很多次,由于现象
逻辑复杂,我们找不到根源。总体而言,不正常分析的基本逻辑是不断比较预期情况和非预期
情况,找出其背后的原因。例如,处理由执行错误指令开启的不正常,我们需要首先回答正常
执行指令应该是什么,以及为什么CPU得到错误指令。