CN103106132B - Linux系统崩溃时内核函数调用栈分析调试方法 - Google Patents
Linux系统崩溃时内核函数调用栈分析调试方法 Download PDFInfo
- Publication number
- CN103106132B CN103106132B CN201310069706.9A CN201310069706A CN103106132B CN 103106132 B CN103106132 B CN 103106132B CN 201310069706 A CN201310069706 A CN 201310069706A CN 103106132 B CN103106132 B CN 103106132B
- Authority
- CN
- China
- Prior art keywords
- function
- kernel
- linux system
- stack
- collapse
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种Linux系统崩溃时内核函数调用栈分析调试方法,包括:读取带调试信息的内核和崩溃时的内核转储文件;读取崩溃时函数栈指针寄存器r29的值,根据r29获取指向系统崩溃时正在运行函数的函数返回地址;判断当前程序计数器所指向的指令是否满足操作码是daddiu指令且源和目的操作数均是r29,若判断为满足则对当前指令中immediate字段immediate字段进行符号扩展,将扩展后immediate字段的与r29的值相减得出函数栈帧的大小;将根据r29值得到当前函数的上一个函数的地址。本发明能够在系统崩溃时即使不分配帧指针寄存器也能够快速分析崩溃时栈空间中的函数调用关系。
Description
技术领域
本发明涉及Linux操作系统内核技术、编译器技术和MIPS体系结构技术,具体地,说涉及一种MIPS构架下Linux系统崩溃时内核函数调用栈分析调试方法。
背景技术
随着国家对自主可控的不断重视,MIPS构架的龙芯处理器得到越来越深入的推广,解决其软件支持和调试能力的问题显得越来越重要,特别是支持在其上运行Linux操作系统。现有的crash调试工具不能很好地支持在国产MIPS构架的龙芯服务器下实现崩溃内核函数调用分析与调试功能。在不能对系统崩溃时的函数调用栈进行分析的情况下,内核开发人员找出并解决系统的崩溃原因的详细信息将是十分困难的。
在传统技术中,会根据函数调用时被保存到帧指针寄存器中的栈指针寄存器的内容、以及在栈空间中保存的用于保存栈指针寄存器的内容之前帧指针寄存器的内容,来对系统崩溃时的函数调用栈进行分析。这样就能够找出函数调用关系(参考图3示出的带帧指针函数调用栈结构示意图)。然而,为了节省一个寄存器,MIPS构架下龙芯内核编译时gcc可以不分配帧指针寄存器,这样可以在寄存器分配时节省一个寄存器,提高系统性能,但却使得不能通过帧指针来分析栈空间中的函数调用关系。如何在即使不分配帧指针寄存器时也能够准确快速地分析栈空间中的函数调用关系,是一个推动MIPS架构处理器发展的关键的技术问题。
具体地,在传统的函数调用栈分析调试中使用了帧指针寄存器,在函数调用时,将帧指针寄存器保存的栈空间中,可以得到一个函数帧的大小,但是这样会浪费一个寄存器,这样会导致性能下降,GCC编译器有一个功能omit-frame-pointer,不使用帧寄存器,这样就可以节约一个寄存器,可以提高系统性能,但是在分析函数调用栈时就不好找到函数的帧。因此,研究崩溃内核函数调用栈是一件很有实用价值和意义的工作。
发明内容
本发明所要解决的技术问题之一是需要提供一种能够在系统崩溃时即使不分配帧指针寄存器也能够快速分析栈空间中的函数调用关系的Linux系统崩溃时内核函数调用栈分析调试方法。
为了解决上述技术问题,本发明提供了一种Linux系统崩溃时内核函数调用栈分析调试方法。该方法包括:
读取带调试信息的内核和Linux系统崩溃时的内核转储文件;
读取Linux系统崩溃时函数栈指针寄存器r29的值,根据栈指针寄存器r29获取指向系统崩溃时正在运行的函数的函数返回地址;
判断当前程序计数器所指向的指令是否满足操作码是daddiu指令且源和目的操作数均是栈指针寄存器r29,若判断为满足,则解析出该当前指令中的immediate字段,并对immediate字段进行符号扩展,将扩展后immediate字段的与栈指针寄存器r29的值相减,得出函数栈帧的大小;
将栈指针寄存器r29中的值与所得出的函数栈帧的大小相减,得到当前函数的上一个函数的地址。
进一步,对函数调用栈进行分析调试的处理包括:根据函数的函数返回地址,查找带调试信息的内核中的符号表,得到当前函数的名称;根据函数的名称确定函数的参数;以及根据所确定的函数的参数,从函数调用栈中读取传递给函数的参数。
进一步,在读取带调试信息的内核和Linux系统崩溃时的内核转储文件之前,还包括:
在Linux系统崩溃时,利用kdump转储内核并通过makedumpfile对所转储的内核进行压缩,得到所述内核转储文件。
进一步,所述Linux系统不使用帧寄存器。
进一步,所述Linux系统具体为MIPS构架下的Linux系统。
进一步,所述Linux系统具体为安装于龙芯平台的MIPS构架下的Linux系统。
此外,所述读取Linux系统崩溃时函数栈指针寄存器r29的值的步骤进一步包括:通过读取崩溃进程的thread_info结构中的kpc成员来读取栈指针寄存器r29的内容。
进一步,该方法还可包括:若判断为不满足,则将程序计数器加4,继续判断当前程序计数器所指向的指令是否满足操作码是daddiu指令且源和目的操作数均是栈指针寄存器r29。
其中,所述Linux系统是进行了如下编译选项设置而编译得到的Linux系统:
选中了CONFIG_KEXEC_CRASH、CONFIG_KEXEC、CONFIG_SYSFS、CONFIG_DEBUG_INFO选项。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
当MIPS构架的例如龙芯服务器正在运行的Linux系统突然崩溃时,能够通过本发明方法就可对系统崩溃时的整个函数调用栈等信息进行分析和调试,崩溃内核函数调用栈分析对于内核级别的错误分析有很大的帮助,它可以在系统第一次发生故障时就找出问题的所在,而不用去重现这个问题。
根据本发明,能够在系统崩溃时即使不分配帧指针寄存器也能够快速分析栈空间中的函数调用关系,使内核开发人员快速准确的定位系统崩溃的原因,提高了内核开发人员进行内核调试的效率和实用性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1示出了一个MIPS架构下的函数调用栈结构示意图;
图2示出了makedumpfile压缩的内核文件的格式例子;
图3示出的带帧指针函数调用栈结构示意图;
图4是说明根据本发明实施例的Linux系统崩溃时内核函数调用栈分析调试方法流程图;
图5是根据本发明实施例函数调用栈进行分析调试的处理流程图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是说明根据本发明实施例的Linux系统崩溃时内核函数调用栈分析调试方法的流程图。下面参考图1和图4来说明根据本发明实施例的Linux系统崩溃时内核函数调用栈分析调试方法。
步骤S41,读取带调试信息的内核和Linux系统崩溃时的内核转储文件。更具体地,可以通过使用一些现有的crash工具来读取带调试信息的内核和崩溃时的内核转储文件。例如,对于MIPS架构的龙芯处理器,可通过现有的crash工具来读取带调试信息的内核和崩溃时的内核转储文件。系统崩溃时可利用kdump转储内核并通过makedumpfile对所转储的内核进行压缩,得到内核转储文件。图2示出了makedumpfile压缩的内核文件的格式例子。优选地,崩溃时的内核版本与带调试信息的内核版本相一致。
步骤S42,读取Linux系统崩溃时函数栈指针寄存器r29的值,根据栈指针寄存器r29获取指向系统崩溃时正在运行的函数(简称当前函数)的函数返回地址,以及读取崩溃进程的内核栈空间中的数据。r29寄存器保存指向栈空间的指针,栈空间中保存了函数的返回地址。进程崩溃时,例如函数调用关系、以及数据、函数返回地址等进程运行时的状态信息都是放在栈空间,因此读取栈空间中的数据,就能知道进程为什么崩溃。
图1示出了一个MIPS架构下的函数调用栈结构示意图。可以看出,函数栈指针寄存器r29指向栈中的函数返回地址。特别地,对于采用MIPS架构的龙芯平台,无法直接读取龙芯的pc寄存器(程序计数寄存器),而是在程序崩溃时将pc寄存器自动转存到thread_info的kpc成员中。因此,对于龙芯平台,可以通过读取崩溃进程的thread_info结构中的kpc成员来读取Linux系统崩溃时寄存器r29的值。由于函数栈指针寄存器r29的值是指向当前函数的函数返回地址指针,因此,可根据寄存器r29获取指向系统崩溃时正在运行的函数(简称当前函数)的函数返回地址。
步骤S43,崩溃时,解析程序计数器所指向的当前指令,判断是否满足当前程序计数器所指向的指令的操作码是否是daddiu指令且其源和目的操作数是不是均为栈指针寄存器r29。如果判断为满足,则进入步骤S45,反之,进入步骤S44。
步骤S44,如果判断为不满足,那么将程序计数器加4,继续解析程序计数器所指向的当前指令,以判断是否满足当前程序计数器所指向的指令的操作码是否是daddiu指令且其源和目的操作数是不是均为栈指针寄存器r29。
步骤S45,根据当前指令中的immediate字段计算函数栈帧的大小,更具体地,解析出该当前指令中的immediate字段,并对immediate字段进行符号扩展(即,如果immediate的高位是1,就将其高位补1,如果是0,就补0),将扩展后immediate字段的与栈指针寄存器r29的值相减,得出函数栈帧的大小。
更具体地,由于龙芯是RISC架构,其指令是定长的,每次从vmcore中崩溃进程的代码段中PC寄存器所指向地址读取32-bit长的数据。因此,如果操作码是daddiu并且rst是r29,则将扩展后immediate字段的与栈指针寄存器r29的值相减,便可得出函数栈帧的大小。进入步骤S46。
步骤S46,将寄存器r29中的值与步骤S45中得出的函数栈帧的大小相减,能得到当前函数的上一个函数的地址。这样,便可以对上一个函数的函数调用栈进行分析调试。
进一步,结合图5来进一步说明对函数调用栈进行分析调试的处理。
步骤S51,根据函数的函数返回地址,查找带调试信息的内核中的符号表,得到当前函数的名称。例如,可调用gdb接口查找带调试信息的内核中的符号表。
步骤S52,根据函数的名称确定函数的参数。
步骤S53,根据函数的参数,从函数调用栈中读取传递给函数的参数。这样依次回溯就得到了函数调用栈以对函数调用栈进行分析调试。
下面介绍本发明方法中可以用到的一些工具。
Kexec-tools工具包:Kexec是一个内核到内核的启动加载器,它可以在一个正在运行的内核的空间中启动另外一个新的内核而不用通过BIOS。本质上,kexec预先加载一个新的内核并把这个内核存放在内存中。存储新的内核映像的内存不要求是连续的,kexec保存新内核存储内存的页的跟踪信息。在重启的时候,kexec把新的内核映像拷贝到它将要被运行的位置,接着执行一些设置代码,然后kexec将控制权交给新的内核。
Kexec主要被分为两部分:内核空间部分和用户空间部分。内核空间部分实现了一个新的系统调用kexecload(),它用来帮助对新内核进行预先加载。用户空间部分,也被成为kexec工具,负责解析内核映像,准备合适的参数段和设置代码段并且通过一个最新实现的系统调用将这些数据传递给正在运行的内核。Crash分析工具的工作流程一般为先通过kexec-tools将内核崩溃时的内存镜像抓取下来,然后makedumpfile进行压缩,最后由crash工具进行分析。
Makedumpfile工具包:makedumpfile工具分析standardkernel的运行环境和内存空间并将这些信息存储到磁盘文件中,以便内核开发人员根据文件中存储的内存信息来分析系统崩溃的原因。
crash工具包:crash工具被设计成与具体的内核版本无关。crash可以通过升级来获得对影响crash功能的新的内核代码的支持。crash用于内核核心分析的命令有所有处理器的内核堆栈跟踪,源代码反汇编,格式化内核数据结构和变量显示,虚拟内存数据,列表显示等。另外还包括几个与特定内核子系统相关的命令。同时,crash通过gdb的模块扩展来支持gdb的命令。
crash工具被设计成与具体的内核版本无关。crash可以通过升级来获得对影响crash功能的新的内核代码的支持。
Gdb工具包:通过gdb的接口gdb_main_entry来获得内核结构体数据类型以及相应的成员偏移值。
特别地,本发明尤其适用于安装于龙芯平台的MIPS构架下的Linux系统,例如loongson3a单双路服务器等MIPS构架下龙芯平台。
下面以龙芯平台为例来说明上述内核崩溃函数调用栈分析调试方法涉及的内核映像文件。
Standardkernel(系统内核)MIPS构架的龙芯服务器上运行的Linux系统内核,为了使之支持kdump机制以更方便转储,编译时可选中CONFIG_KEXEC_CRASH、CONFIG_KEXEC、CONFIG_SYSFS、CONFIG_DEBUG_INFO等选项。
Crashkernel(转储捕捉):此内核为系统崩溃运行的第二内核,makedumpfile工具在该内核下对第一内核的运行环境和内存信息进行分析转储。Crashkernel是一个vmlinux格式的映像,即就是一个未压缩的ELF映像文件。可以去掉Linux内核编译时的CONFIG_NUMA、CONFIG_SMP选项的支持,加上CONFIG_CRASH_DUMP选项的支持,这样能够更好地支持MIPS64构架的龙芯处理器的平台。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (8)
1.一种Linux系统崩溃时内核函数调用栈分析调试方法,其特征在于,包括:
读取带调试信息的内核和Linux系统崩溃时的内核转储文件;
读取Linux系统崩溃时函数栈指针寄存器r29的值,根据栈指针寄存器r29获取指向系统崩溃时正在运行的函数的函数返回地址;
判断当前程序计数器所指向的指令是否满足操作码是daddiu指令且源和目的操作数均是栈指针寄存器r29,若判断为满足,则解析出当前指令中的immediate字段,并对immediate字段进行符号扩展,将扩展后immediate字段的与栈指针寄存器r29的值相减,得出函数栈帧的大小;
将栈指针寄存器r29中的值与所得出的函数栈帧的大小相减,得到当前函数的上一个函数的地址;
对函数调用栈进行分析调试的处理包括:
根据函数的函数返回地址,查找带调试信息的内核中的符号表,得到当前函数的名称;
根据函数的名称确定函数的参数;以及
根据所确定的函数的参数,从函数调用栈中读取传递给函数的参数。
2.根据权利要求1所述的方法,其特征在于,在读取带调试信息的内核和Linux系统崩溃时的内核转储文件之前,还包括:
在Linux系统崩溃时,利用kdump转储内核并通过makedumpfile对所转储的内核进行压缩,得到所述内核转储文件。
3.根据权利要求1所述的方法,其特征在于,所述Linux系统不使用帧寄存器。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述Linux系统具体为MIPS构架下的Linux系统。
5.根据权利要求4所述的方法,其特征在于,所述Linux系统具体为安装于龙芯平台的MIPS构架下的Linux系统。
6.根据权利要求5所述的方法,其特征在于,所述读取Linux系统崩溃时函数栈指针寄存器r29的值的步骤进一步包括:通过读取崩溃进程的thread_info结构中的kpc成员来读取栈指针寄存器r29的内容。
7.根据权利要求1至3中任一项所述的方法,其特征在于,还包括:若判断为不满足,则将程序计数器加4,继续判断当前程序计数器所指向的指令是否满足操作码是daddiu指令且源和目的操作数均是栈指针寄存器r29。
8.根据权利要求5所述的方法,其特征在于,所述Linux系统是进行了如下编译选项设置而编译得到的Linux系统:
选中了CONFIG_KEXEC_CRASH、CONFIG_KEXEC、CONFIG_SYSFS、CONFIG_DEBUG_INFO选项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310069706.9A CN103106132B (zh) | 2013-03-05 | 2013-03-05 | Linux系统崩溃时内核函数调用栈分析调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310069706.9A CN103106132B (zh) | 2013-03-05 | 2013-03-05 | Linux系统崩溃时内核函数调用栈分析调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103106132A CN103106132A (zh) | 2013-05-15 |
CN103106132B true CN103106132B (zh) | 2016-03-16 |
Family
ID=48314010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310069706.9A Active CN103106132B (zh) | 2013-03-05 | 2013-03-05 | Linux系统崩溃时内核函数调用栈分析调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103106132B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191837B2 (en) | 2016-06-23 | 2019-01-29 | Vmware, Inc. | Automated end-to-end analysis of customer service requests |
US10268563B2 (en) | 2016-06-23 | 2019-04-23 | Vmware, Inc. | Monitoring of an automated end-to-end crash analysis system |
US10331508B2 (en) | 2016-06-23 | 2019-06-25 | Vmware, Inc. | Computer crash risk assessment |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559123B (zh) * | 2013-10-24 | 2016-02-10 | 烽火通信科技股份有限公司 | 基于VxWorks操作系统的函数调用栈分析方法及装置 |
CN106294095A (zh) * | 2015-05-13 | 2017-01-04 | 苏州简约纳电子有限公司 | 一种跟踪嵌入式系统函数调用轨迹的方法 |
CN104899111B (zh) * | 2015-06-09 | 2018-03-20 | 烽火通信科技股份有限公司 | 一种处理家庭网关系统内核崩溃的方法及系统 |
CN104915292B (zh) * | 2015-06-12 | 2018-01-09 | 浪潮电子信息产业股份有限公司 | 一种linux内核模块动态打桩的系统 |
CN105242981A (zh) * | 2015-10-30 | 2016-01-13 | 浪潮电子信息产业股份有限公司 | 一种Kdump的配置方法及计算机设备 |
CN105786680B (zh) * | 2016-02-17 | 2018-06-05 | 北京飞杰信息技术有限公司 | 内核崩溃后内存预分析方法及其系统 |
CN105975356A (zh) * | 2016-04-28 | 2016-09-28 | 乐视控股(北京)有限公司 | 内存错误检测方法、内存管理系统和装置、以及服务器 |
US10365959B2 (en) | 2016-06-23 | 2019-07-30 | Vmware, Inc. | Graphical user interface for software crash analysis data |
US10338990B2 (en) * | 2016-06-23 | 2019-07-02 | Vmware, Inc. | Culprit module detection and signature back trace generation |
CN107818034B (zh) * | 2016-09-14 | 2021-02-12 | 华为技术有限公司 | 监测计算机设备中的进程的运行空间的方法以及装置 |
CN106649089B (zh) * | 2016-10-09 | 2019-07-09 | 武汉斗鱼网络科技有限公司 | 一种程序崩溃分析方法及系统 |
CN107943520B (zh) * | 2016-10-11 | 2020-10-30 | 腾讯科技(深圳)有限公司 | 应用堆栈信息获取方法及装置、堆栈信息解析方法及装置 |
CN108874448B (zh) * | 2017-05-09 | 2021-10-08 | 阿里巴巴集团控股有限公司 | 实现在coredump文件中定位对象的方法及设备 |
CN107832166A (zh) * | 2017-11-27 | 2018-03-23 | 郑州云海信息技术有限公司 | 一种Linux服务器宕机故障分析系统及方法 |
CN107967192B (zh) * | 2017-12-20 | 2022-03-11 | 北京奇虎科技有限公司 | 一种智能终端的系统崩溃处理方法和装置 |
CN110262918B (zh) * | 2019-06-19 | 2023-07-18 | 深圳市网心科技有限公司 | 进程崩溃分析方法及装置、分布式设备及存储介质 |
CN110362503B (zh) * | 2019-06-26 | 2021-03-26 | 中国科学院信息工程研究所 | 链式哈希栈的优化方法及优化系统 |
CN110489165B (zh) * | 2019-08-02 | 2021-10-15 | 北京字节跳动网络技术有限公司 | 获取调用栈栈帧指令偏移的方法、装置、介质和设备 |
CN110865898B (zh) * | 2019-10-12 | 2023-09-05 | 北京字节跳动网络技术有限公司 | 崩溃调用栈聚合的方法、装置、介质和设备 |
CN111352842A (zh) * | 2020-02-28 | 2020-06-30 | 成都金诺信高科技有限公司 | 基于嵌入式的软件调试方法 |
CN111813664B (zh) * | 2020-06-19 | 2024-02-13 | 北京字节跳动网络技术有限公司 | 一种崩溃信息收集方法、装置、介质和设备 |
CN112905381B (zh) * | 2021-03-22 | 2022-12-06 | 北京字节跳动网络技术有限公司 | 用于获取调用栈中栈帧信息的方法、装置、设备和介质 |
CN113806233A (zh) * | 2021-10-11 | 2021-12-17 | 成都觅瑞科技有限公司 | 程序崩溃信息的获取方法、装置、电子设备及存储介质 |
CN115061837B (zh) * | 2022-08-16 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 一种调度跟踪和获取用户空间调用栈的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
CN101719090A (zh) * | 2009-12-25 | 2010-06-02 | 珠海市君天电子科技有限公司 | 对计算机软件系统崩溃原因进行自动分析的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467447A (zh) * | 2010-11-16 | 2012-05-23 | 鸿富锦精密工业(深圳)有限公司 | 驱动程序调试系统及方法 |
-
2013
- 2013-03-05 CN CN201310069706.9A patent/CN103106132B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
CN101719090A (zh) * | 2009-12-25 | 2010-06-02 | 珠海市君天电子科技有限公司 | 对计算机软件系统崩溃原因进行自动分析的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191837B2 (en) | 2016-06-23 | 2019-01-29 | Vmware, Inc. | Automated end-to-end analysis of customer service requests |
US10268563B2 (en) | 2016-06-23 | 2019-04-23 | Vmware, Inc. | Monitoring of an automated end-to-end crash analysis system |
US10331546B2 (en) | 2016-06-23 | 2019-06-25 | Vmware, Inc. | Determination of a culprit thread after a physical central processing unit lockup |
US10331508B2 (en) | 2016-06-23 | 2019-06-25 | Vmware, Inc. | Computer crash risk assessment |
Also Published As
Publication number | Publication date |
---|---|
CN103106132A (zh) | 2013-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103106132B (zh) | Linux系统崩溃时内核函数调用栈分析调试方法 | |
US11609840B2 (en) | Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction | |
RU2668973C2 (ru) | Отладка машинного кода путем перехода от исполнения в собственном режиме к исполнению в интерпретируемом режиме | |
Luk et al. | Pin: building customized program analysis tools with dynamic instrumentation | |
US20080127113A1 (en) | Method and system for implementing watchpoints | |
US10169199B2 (en) | Automatic model-specific debugger extensions | |
US9772925B2 (en) | Storage access debugging with disassembly and symbol entries | |
US8701088B2 (en) | Generating backtracing information for software debugging of software programs running on virtual machines | |
US8756584B2 (en) | Code instrumentation method and code instrumentation apparatus | |
US7240334B1 (en) | Methods, systems, and computer program products for deferred computer program tracing | |
CN103077112A (zh) | 一种软件调试的方法和系统 | |
CN102722438B (zh) | 一种内核调试的方法和设备 | |
WO2020123184A1 (en) | Improving emulation and tracing performance using compiler-generated emulation optimization metadata | |
Chachmon et al. | Simulation and analysis engine for scale-out workloads | |
Lowther et al. | Morello MicroPython: A Python Interpreter for CHERI | |
Kyle et al. | Efficiently parallelizing instruction set simulation of embedded multi-core processors using region-based just-in-time dynamic binary translation | |
Lin et al. | Preliminary report: Initial evaluation of StdPar implementations on AMD GPUs for HPC | |
Nybäck | Improving the support for ARM in the IgProf profiler | |
CN113312262B (zh) | 一种程序调试方法、计算设备及储存介质 | |
RU2390821C1 (ru) | Способ динамической инструментации | |
Zilles et al. | Master/slave speculative parallelization with distilled programs | |
Verma | Implementing array bytecode in MicroJIT | |
Akinshin et al. | Diagnostic Tools | |
CN114265779A (zh) | 定位程序宕机位置的方法、装置、电子设备、存储介质 | |
CN116009879A (zh) | 重定位表恢复方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |