CN106484608A - 一种内核错误定位方法、装置及计算机 - Google Patents
一种内核错误定位方法、装置及计算机 Download PDFInfo
- Publication number
- CN106484608A CN106484608A CN201510553667.9A CN201510553667A CN106484608A CN 106484608 A CN106484608 A CN 106484608A CN 201510553667 A CN201510553667 A CN 201510553667A CN 106484608 A CN106484608 A CN 106484608A
- Authority
- CN
- China
- Prior art keywords
- address
- function
- respect
- functional module
- play amount
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000004807 localization Effects 0.000 title claims abstract description 20
- 230000006870 function Effects 0.000 claims abstract description 429
- 238000012545 processing Methods 0.000 claims description 8
- 230000008030 elimination Effects 0.000 claims description 3
- 238000003379 elimination reaction Methods 0.000 claims description 3
- 230000005055 memory storage Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 description 8
- 238000011068 loading method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种内核错误定位方法、装置及计算机,涉及计算机软件领域,可以提高故障定位效率。具体方案为:在软件系统崩溃后,获取软件系统崩溃前所述功能模块中一已知函数的运行地址和软件系统崩溃时弹出的出错内存地址;获取已知函数的运行地址相对于功能模块的程序运行入口的偏移量;根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量,从功能模块的所有函数中确定出出错函数,并计算得到出错地址相对于出错函数的运行地址的偏移量;根据出错地址相对于出错函数的运行地址的偏移量,从出错函数中定位出出错代码行。本发明用于软件系统崩溃后的内核错误定位的过程中。
Description
技术领域
本发明涉及计算机软件领域,尤其涉及一种内核错误定位方法、装置及计算机。
背景技术
计算机软件开发过程中,不可避免的会出现各种bug,业界一般可以通过跟踪调试bug的方法进行故障定位。具体的,程序开发人员可以根据其从业经验,在软件程序中可能出现bug的地方添加打印,用以捕捉程序异常,在程序运行过程中生成日志文件。
但是有的bug(即内核错误-kernel panic,如对地址的非法调用)会直接引起软件系统的崩溃。当出现此类bug时,软件系统在弹出出错内存地址后,则会直接退出,此时,开发人员根据打印出的日志文件不能分析出系统发生崩溃的原因。
针对上述问题,开发人员往往会在可能引发系统崩溃的代码块前后添加打印,以便于可以分析系统崩溃前生成的日志文件,定位出引发系统崩溃的代码块。但是采用这种方法进行故障定位效率较低,而且往往依赖于开发人员的主观判断才能够准确定位出故障所在,要求开发人员具备较强的故障处理能力,人力成本较高。
发明内容
本发明的实施例提供一种内核错误定位方法、装置及计算机,可以准确定位出引发系统崩溃的内核错误所在的出错函数,以及出错函数中的具体出错代码行,提高了故障定位效率。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明实施例的第一方面,提供一种内核错误定位方法,应用于软件系统中,所述软件系统加载并运行一功能模块,所述方法包括:
在所述软件系统崩溃后,获取所述软件系统崩溃前所述功能模块中一已知函数的运行地址和所述软件系统崩溃时弹出的出错内存地址;所述出错内存地址包括出错地址,所述出错地址为出错函数的运行地址空间中的一个地址,所述已知函数为所述功能模块中的一个函数;
获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量;
根据所述出错地址相对于所述出错函数的运行地址的偏移量,从所述出错函数中定位出出错代码行。
本发明实施例的第二方面,还提供一种内核错误定位装置,软件系统加载并运行一功能模块,所述内核错误定位装置包括:
获取模块,用于在所述软件系统崩溃后,获取所述软件系统崩溃前所述功能模块中一已知函数的运行地址和所述软件系统崩溃时弹出的出错内存地址;所述出错内存地址包括出错地址,所述出错地址为出错函数的运行地址空间中的一个地址,所述已知函数为所述功能模块中的一个函数;获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
计算模块,用于根据所述获取模块获取的所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量;
定位模块,用于根据所述计算模块计算得到的所述出错地址相对于所述出错函数的运行地址的偏移量,从所述出错函数中定位出出错代码行。
本发明实施例的第三方面,还提供一种计算机,所述计算机运行一软件系统,所述软件系统加载并运行一功能模块,所述计算机包括:
存储器,用于存储一组程序代码;
处理器,用于根据所述存储器存储的一组程序代码,执行如下操作:
在所述软件系统崩溃后,获取所述软件系统崩溃前所述功能模块中一已知函数的运行地址和所述软件系统崩溃时弹出的出错内存地址;所述出错内存地址包括出错地址,所述出错地址为出错函数的运行地址空间中的一个地址,所述已知函数为所述功能模块中的一个函数;
获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量;
根据所述出错地址相对于所述出错函数的运行地址的偏移量,从所述出错函数中定位出出错代码行。
本发明的实施例提供的内核错误定位方法、装置及计算机,应用于软件系统中,该软件系统加载并运行一功能模块,在该软件系统崩溃后,获取软件系统崩溃前功能模块中一已知函数的运行地址和软件系统崩溃时弹出的出错内存地址;出错内存地址包括出错地址,出错地址为出错函数的运行地址空间中的一个地址,已知函数为功能模块中的一个函数;获取已知函数的运行地址相对于功能模块的程序运行入口的偏移量;根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量,从功能模块的所有函数中确定出出错函数,并计算得到出错地址相对于出错函数的运行地址的偏移量;根据出错地址相对于出错函数的运行地址的偏移量,从出错函数中定位出出错代码行。
本方案在进行内核错误定位时,并不需要开发人员根据其从业经验通过主观判断的方式定位故障所在,而是在软件系统崩溃后,根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量通过计算,从功能模块的所有函数中定位出引发系统崩溃的内核错误所在的出错函数,以及出错函数中的具体出错代码行,提高了故障定位的准确性和效率,并且可以降低故障定位的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内核错误定位方法的流程示意图;
图2为本发明实施例提供的另一种内核错误定位方法的流程示意图;
图3为本发明实施例提供的另一种内核错误定位方法的流程示意图;
图4为本发明实施例提供的另一种内核错误定位方法的流程示意图;
图5为本发明实施例提供的另一种内核错误定位方法的流程示意图;
图6为本发明实施例提供的一种内核错误定位装置的结构组成示意图;
图7为本发明实施例提供的另一种内核错误定位装置的结构组成示意图;
图8为本发明实施例提供的一种计算机的结构组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种内核错误定位方法、装置及计算机,可以应用于软件系统崩溃后的内核错误(kernel panic,如对地址的非法调用)定位的过程中。
本发明实施例提供的指令块加载方法的执行主体可以为内核错误定位装置或者运行软件系统的计算机,内核错误定位装置可以为上述计算机的中央处理器(Central Processing Unit,CPU)或者可以为上述计算机中的控制单元或者模块。
下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供的一种内核错误定位方法、装置及计算机进行详细地说明。
实施例一
本发明实施例提供一种内核错误定位方法,可以应用于软件系统中,该软件系统加载并运行一功能模块,如图1所示,该内核错误定位方法包括:
S101、内核错误定位装置在软件系统崩溃后,获取软件系统崩溃前功能模块中一已知函数的运行地址和软件系统崩溃时弹出的出错内存地址。
其中,如果在程序运行前已添加了某个函数的运行地址打印,当程序运行到这个函数时,软件系统就会输出包含该函数(已知函数)运行地址的打印信息。软件系统在崩溃时会弹出一条打印信息,该打印信息中包含出错内存地址。
其中,出错内存地址包括出错地址,出错地址为出错函数的运行地址空间中的一个地址,已知函数为所述功能模块中的一个函数。
示例性的,以下为一个“test”驱动示例程序:
软件系统在运行上述驱动程序代码(即加载test.ko模块:(test.ko由test_main.c、test_pointer.c两个文件编译链接生成)并运行)时,由于在test_mian.c文件中,test_init()函数里传给fun_of_pointer()函数一个空指针,导致软件系统崩溃,在软件系统在崩溃时则可以输出如下所示的打印信息:
test_init:c12d6020
Hello,test is begin!
CPU 0 Unable to handle kernel paging request at virtual address
00000000,epc==c12d60d8,ra==c12d6090
需要说明的是,由于在软件系统崩溃之前,执行了“printk(KERN_ALERT"%s:%p\n",“test_init”,test_init)”,因此,可以输出打印信息“test_init:c12d6020”,即test_init函数的运行地址为:0xc12d6020。
由于在test_mian.c文件中,test_init()函数里传给fun_of_pointer()函数一个空指针,导致软件系统崩溃,软件系统在崩溃前则可以输出打印信息“CPU 0Unable to handle kernel pagingrequest at virtual address 00000000,epc==c12d60d8,ra==c12d6090”,该打印信息中的“epc==c12d60d8”即为出错地址。
基于上述实例,内核错误定位装置可以从软件系统在崩溃前输出的打印信息中获得一已知函数的运行地址(test_init:0xc12d6020)和该软件系统崩溃前弹出的出错内存地址(出错地址epc:0xc12d60d8)。
S102、内核错误定位装置获取已知函数的运行地址相对于功能模块的程序运行入口的偏移量。
示例性的,内核错误定位装置可以使用反汇编工具objdump的“-h”参数打印得到软件系统运行的功能模块中所有函数的运行地址相对于功能模块的程序运行入口的偏移量。
具体的,程序源代码被编译链接后,主要可以分为程序指令和程序数据两部分内容。objdump工具的参数“-h”可用于打印可执行文件(由程序源代码编译、链接产生)的段表信息,该段表信息包括:软件系统运行的功能模块中所有函数的运行地址相对于功能模块的程序运行入口的偏移量。
基于上述实例,内核错误定位装置可以使用反汇编工具objdump的“-h”参数打印得到如下所示,可执行文件的段表信息:
其中,内核错误定位装置在使用objdump工具的参数“-h”打印得到上述所示的段表信息后,可以从上述段表信息中获得已知函数(test_init)的运行地址(0xc12d6020)相对于功能模块的程序运行入口的偏移量File off=0x00000090。
S103、内核错误定位装置根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量,从功能模块的所有函数中确定出出错函数,并计算得到出错地址相对于出错函数的运行地址的偏移量。
具体的,内核错误定位装置可以根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量,计算得到出错地址相对于功能模块的程序运行入口的偏移量epc_offset1;然后根据出错地址相对于功能模块的程序运行入口的偏移量,从上述功能模块的所有函数中确定出出错函数;再根据出错地址相对于功能模块的程序运行入口的偏移量和出错函数的运行地址相对于功能模块的程序运行入口的偏移量,计算出错地址相对于出错函数的运行地址的偏移量。
S104、内核错误定位装置根据出错地址相对于出错函数的运行地址的偏移量,从出错函数中定位出出错代码行。
其中,内核错误定位装置在获知出错地址和出错地址相对于出错函数的运行地址的偏移量后,则可以根据出错地址相对于出错函数的运行地址的偏移量定位出出错代码行在出错函数中的位置,即从出错函数中定位出出错代码行。
示例性的,内核错误定位装置在确定出出错函数后,还可以使用反汇编工具objdump的“-S”参数打印得到每个函数中各代码行相对于该函数的运行地址的偏移量;然后找出出错函数中各代码行相对于该函数的运行地址的偏移量;再根据出错地址相对于出错函数的运行地址的偏移量(偏移量1),从出错函数中各代码行相对于该函数的运行地址的偏移量中查找与(偏移量1)相同的偏移量(偏移量2),该偏移量2所对应的代码行即为出错代码行。
需要说明的是,在本发明实施例中,函数的运行地址即为该函数的入口地址。
本发明的实施例提供的内核错误定位方法,在进行内核错误定位时,并不需要开发人员根据其从业经验通过主观判断的方式定位故障所在,而是在软件系统崩溃后,根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量通过计算,从功能模块的所有函数中定位出引发系统崩溃的内核错误所在的出错函数,以及出错函数中的具体出错代码行,提高了故障定位的准确性和效率,并且可以降低故障定位的成本。
进一步的,如图2所示,S103具体可以包括S103a-S103d:
S103a、内核错误定位装置根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的功能模块的程序运行入口的偏移量,计算出错地址相对于功能模块的程序运行入口的偏移量。
基于上述实例,内核错误定位装置可以根据出错地址(epc:0xc12d60d8)、已知函数的运行地址(0xc12d6020)以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量(0x00000090),计算得到出错地址相对于功能模块的程序运行入口的偏移量epc_offset_1(epc_offset_1=0xc12d60d8-0xc12d6020+0x00000090=0x00000148)。
S103b、内核错误定位装置根据出错地址相对于功能模块的程序运行入口的偏移量,从功能模块的所有函数中确定出出错函数。
示例性的,当内核错误定位装置计算得到出错地址相对于功能模块的程序运行入口的偏移量时,内核错误定位装置可以查询上述实例中可执行文件的段表信息,根据段表信息中各函数的运行地址相对于功能模块的程序运行入口的偏移量,以从功能模块的所有函数中确定出出错函数。
例如,若内核错误定位装置计算得到出错地址相对于功能模块的程序运行入口的偏移量epc_offset_1=0x00000148,内核错误定位装置可以从上述段表信息中得到函数fun_of_pointer的运行地址相对于功能模块的程序运行入口的偏移量为“0x00000140”,并且,函数fun_of_pointer的运行地址的地址空间长度Size为“0x00000058”;从而内核错误定位装置可以确定:出错地址0xc12d60d8为函数fun_of_pointer的运行地址的地址空间中的一个地址,即函数fun_of_pointer为出错函数。
S103c、内核错误定位装置获取出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量。
其中,内核错误定位装置获取出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量的方法与S102中内核错误定位装置获取已知函数的运行地址相对于功能模块的程序运行入口的偏移量的方法类似,本发明实施例这里不再赘述。
示例性的,当内核错误定位装置确定函数fun_of_pointer为出错函数时,出错函数的运行地址相对于功能模块的程序运行入口的偏移量即为函数fun_of_pointer的运行地址相对于功能模块的程序运行入口的偏移量,由上述段表信息可以得出:出错函数(fun_of_pointer)的运行地址相对于功能模块的程序运行入口的偏移量File off=0x00000140。
S103d、内核错误定位装置根据出错地址相对于功能模块的功能模块的程序运行入口的偏移量和出错函数的运行地址相对于功能模块的程序运行入口的偏移量,计算出错地址相对于出错函数的运行地址的偏移量。
内核错误定位装置可以根据出错地址相对于功能模块的功能模块的程序运行入口的偏移量(epc_offset_1=0x00000148)和出错函数的运行地址相对于功能模块的程序运行入口的偏移量(0x00000140),计算出错地址相对于出错函数的运行地址的偏移量(epc_offset_2=0x00000148-0x00000140=0x00000008)。
示例性的,这里基于上述驱动程序,以出错地址相对于出错函数的运行地址的偏移量为epc_offset_2=0x00000008为例,对S104中“内核错误定位装置根据出错地址相对于出错函数的运行地址的偏移量,从出错函数中定位出出错代码行”的方法进行说明:
内核错误定位装置可以使用反汇编工具objdump的“-S”参数,对函数fun_of_pointer()所在的test_pointer.o目标文件反编译,以从出错函数中定位出出错代码行。
内核错误定位装置对函数fun_of_pointer()所在的test_pointer.o目标文件进行反编译,可以得到以下代码段:
其中,内核错误定位装置计算得到出错地址相对于出错函数的运行地址的偏移量epc_offset_2=0x00000008,那么从函数fun_of_pointer的运行地址(即函数fun_of_pointer的入口地址)开始,偏移epc_offset_2=0x00000008后的代码行,即出错代码行,则为“a=++(*p)”。
进一步的,出错内存地址还包括函数返回地址,函数返回地址为调用出错函数后的返回地址。
示例性的,上述实例中,软件系统在崩溃前输出打印信息“CPU 0Unable to handle kernel paging request at virtual address 00000000,epc==c12d60d8,ra==c12d6090”,该打印信息中的“ra==c12d6090”即为函数返回地址,即调用出错函数后的返回地址。
相应的,如图3所示,在内核错误定位装置获取已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量(即S102)之后,本发明实施例的方法还可以包括S105-S106:
S105、内核错误定位装置根据函数返回地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的功能模块的程序运行入口的偏移量,从功能模块的所有函数中确定出调用出错函数后返回的函数,并计算函数返回地址相对于返回的函数的运行地址的偏移量。
具体的,如图4所示,S105具体可以包括S105a-S105d:
S105a、内核错误定位装置根据函数返回地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的功能模块的程序运行入口的偏移量,计算函数返回地址相对于功能模块的程序运行入口的偏移量。
基于上述实例,内核错误定位装置可以根据函数返回地址(ra:0xc12d6090)、已知函数的运行地址(0xc12d6020)以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量(0x00000090),计算得到出错地址函数返回地址相对于功能模块的程序运行入口的偏移量ra_offset_1(ra_offset_1=0x c12d6090-0xc12d6020+0x00000090=0x00000100)。
S105b、内核错误定位装置根据函数返回地址相对于功能模块的功能模块的程序运行入口的偏移量,从功能模块的所有函数中确定出调用出错函数后返回的函数。
示例性的,当内核错误定位装置计算得到函数返回地址相对于功能模块的程序运行入口的偏移量时,内核错误定位装置可以查询上述实例中可执行文件的段表信息,根据段表信息中各函数的运行地址相对于功能模块的程序运行入口的偏移量,以从功能模块的所有函数中确定出调用出错函数后返回的函数。
例如,当内核错误定位装置计算得到函数返回地址相对于功能模块的程序运行入口的偏移量ra_offset_1=0x00000100,内核错误定位装置可以从上述段表信息中得到函数test_init的运行地址相对于功能模块的程序运行入口的偏移量为“0x00000090”,并且,函数test_init的运行地址的地址空间长度Size为“0x000000b0”;从而内核错误定位装置可以确定:函数返回地址0xc12d6090为函数test_init的运行地址的地址空间中的一个地址,即函数test_init为调用出错函数后返回的函数。
S105c、内核错误定位装置获取返回的函数的运行地址相对于功能模块的程序运行入口的偏移量。
其中,内核错误定位装置获取返回的函数的运行地址相对于功能模块的程序运行入口的偏移量的方法与S102中内核错误定位装置获取已知函数的运行地址相对于功能模块的程序运行入口的偏移量的方法类似,本发明实施例这里不再赘述。
示例性的,当内核错误定位装置确定函数test_init为返回的函数时,返回的函数的运行地址相对于功能模块的程序运行入口的偏移量即为函数test_init的运行地址相对于功能模块的程序运行入口的偏移量,由上述段表信息可以得出:返回的函数(test_init)的运行地址相对于功能模块的程序运行入口的偏移量File off=0x00000090。
S105d、内核错误定位装置根据函数返回地址相对于功能模块的程序运行入口的偏移量和返回的函数的运行地址相对于功能模块的程序运行入口的偏移量,计算函数返回地址相对于返回的函数的运行地址的偏移量。
内核错误定位装置可以根据函数返回地址相对于功能模块的程序运行入口的偏移量(ra_offset_1=0x00000100)和返回的函数的运行地址相对于功能模块的程序运行入口的偏移量(0x00000090),计算函数返回地址相对于返回的函数的运行地址的偏移量(ra_offset_2=0x00000100-0x00000090=0x00000070)。
S106、内核错误定位装置根据函数返回地址相对于返回的函数的运行地址的偏移量,从返回的函数中定位出调用出错函数后返回的调用代码行。
示例性的,内核错误定位装置可以使用反汇编工具objdump的“-S”参数,对函数test_init()所在的test_main.o目标文件反编译,以从返回的函数中定位出调用出错函数后返回的调用代码行。
内核错误定位装置对函数test_init()所在的test_main.o目标文件进行反编译,可以得到入一下代码段:
其中,函数返回地址相对于返回的函数的运行地址的偏移量ra_offset_2=0x00000070,那么可以确定调用代码行为“ret=fun_of_pointer(pointer)”。
进一步的,在内核错误定位装置定位出出错代码行和调用代码行(即执行S104和S106)之后,内核错误定位装置则可以对出错代码行和所述调用代码行进行debug,然后重新加载经过debug后的功能模块,即如图5所示,本发明实施例的方法还可以包括S107-S108:
S107、内核错误定位装置在定位出出错代码行和调用代码行之后,对出错代码行和调用代码行进行debug。
其中,内核错误定位装置根据定位出的出错代码行和调用代码行,结合打印信息“CPU 0Unable to handle kernel paging request atvirtual address 00000000”,可以判断得到:导致软件系统崩溃的原因是:test_init()函数里传给fun_of_pointer()函数一个空指针,即非法访问了一个空指针。为了解决这个问题,则需要在调用fun_of_pointer()函数之前,给pointer指针赋值(即对出错代码行和调用代码行进行debug)。
示例性的,可以采用以下程序代码为pointer指针赋值:
int a=1;
int*pointer=NULL;
pointer=&a;
S108、内核错误定位装置重新加载经过debug后的功能模块。
本发明的实施例提供的内核错误定位方法,在进行内核错误定位时,并不需要开发人员根据其从业经验通过主观判断的方式定位故障所在,而是在软件系统崩溃后,根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量通过计算,从功能模块的所有函数中定位出引发系统崩溃的内核错误所在的出错函数,以及出错函数中的具体出错代码行,提高了故障定位的准确性和效率,并且可以降低故障定位的成本。
并且,可以在定位出出错代码行和调用代码行后,对其进行debug,然后加载经过debug后的功能模块,即可以避免软件系统再次加载上述功能模块时,同一故障引发该软件系统的再次崩溃。
实施例二
本发明实施例提供一种内核错误定位装置,软件系统加载并运行一功能模块,如图6所示,该内核错误定位装置包括:获取模块31、计算模块32和定位模块33。
获取模块31,用于在所述软件系统崩溃后,获取所述软件系统崩溃前所述功能模块中一已知函数的运行地址和所述软件系统崩溃时弹出的出错内存地址;所述出错内存地址包括出错地址,所述出错地址为出错函数的运行地址空间中的一个地址,所述已知函数为所述功能模块中的一个函数;获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量。
计算模块32,用于根据所述获取模块31获取的所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量。
定位模块33,用于根据所述计算模块32计算得到的所述出错地址相对于所述出错函数的运行地址的偏移量,从所述出错函数中定位出出错代码行。
进一步的,所述出错内存地址,还包括函数返回地址,所述函数返回地址为调用所述出错函数后的返回地址。
所述计算模块32,还用于在所述获取模块31获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量之后,根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数,并计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量。
所述定位模块33,还用于根据所述函数返回地址相对于所述返回的函数的运行地址的偏移量,从所述返回的函数中定位出调用所述出错函数后返回的调用代码行。
进一步的,所述计算模块,具体用于:
根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数;
获取所述出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址相对于所述功能模块的程序运行入口的偏移量和所述出错函数的运行地址相对于所述功能模块的功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述出错函数的运行地址的偏移量。
进一步的,所述计算模块,具体用于:
根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述功能模块的程序运行入口的偏移量;
根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数;
获取所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量和所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量。
进一步的,如图7所示,该内核错误定位装置还可以包括:调试模块34。
调试模块34,用于在所述定位模块定位出所述出错代码行和所述调用代码行之后,对所述出错代码行和所述调用代码行进行故障消除debug。
所述加载模块33,还用于重新加载经过所述调试模块debug后的功能模块。
需要说明的是,本发明实施例提供的内核错误定位装置中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
本发明的实施例提供的内核错误定位装置,在进行内核错误定位时,并不需要开发人员根据其从业经验通过主观判断的方式定位故障所在,而是在软件系统崩溃后,根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量通过计算,从功能模块的所有函数中定位出引发系统崩溃的内核错误所在的出错函数,以及出错函数中的具体出错代码行,提高了故障定位的准确性和效率,并且可以降低故障定位的成本。
并且,可以在定位出出错代码行和调用代码行后,对其进行debug,然后加载经过debug后的功能模块,即可以避免软件系统再次加载上述功能模块时,同一故障引发该软件系统的再次崩溃。
实施例三
本发明实施例提供一种计算机,所述计算机运行一软件系统,所述软件系统加载并运行一功能模块,如图8所示,该计算机包括:存储器41和处理器42。
存储器41,用于存储一组程序代码。
处理器42,用于根据所述存储器存储的一组程序代码,执行如下操作:
在所述软件系统崩溃后,获取所述软件系统崩溃前所述功能模块中一已知函数的运行地址和所述软件系统崩溃时弹出的出错内存地址;所述出错内存地址包括出错地址,所述出错地址为出错函数的运行地址空间中的一个地址,所述已知函数为所述功能模块中的一个函数;
获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量;
根据所述出错地址相对于所述出错函数的运行地址的偏移量,从所述出错函数中定位出出错代码行。
进一步的,所述出错内存地址,还包括函数返回地址,所述函数返回地址为调用所述出错函数后的返回地址。
所述处理器42,还用于在获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量之后,根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数,并计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量;根据所述函数返回地址相对于所述返回的函数的运行地址的偏移量,从所述返回的函数中定位出调用所述出错函数后返回的调用代码行。
所述处理器42,还用于根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述功能模块的程序运行入口的偏移量;根据所述出错地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数;获取所述出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量;根据所述出错地址相对于所述功能模块的程序运行入口的偏移量和所述出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述出错函数的运行地址的偏移量。
所述处理器42,还用于根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述功能模块的程序运行入口的偏移量;根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数;获取所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量;根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量和所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量。
进一步的,所述处理器42,还用于在定位出所述出错代码行和所述调用代码行之后,对所述出错代码行和所述调用代码行进行debug;重新加载经过debug后的功能模块。
需要说明的是,本发明实施例提供的计算机中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
本发明的实施例提供的计算机,在进行内核错误定位时,并不需要开发人员根据其从业经验通过主观判断的方式定位故障所在,而是在软件系统崩溃后,根据出错地址、已知函数的运行地址以及已知函数的运行地址相对于功能模块的程序运行入口的偏移量通过计算,从功能模块的所有函数中定位出引发系统崩溃的内核错误所在的出错函数,以及出错函数中的具体出错代码行,提高了故障定位的准确性和效率,并且可以降低故障定位的成本。
并且,可以在定位出出错代码行和调用代码行后,对其进行debug,然后加载经过debug后的功能模块,即可以避免软件系统再次加载上述功能模块时,同一故障引发该软件系统的再次崩溃。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种内核错误定位方法,其特征在于,应用于软件系统中,所述软件系统加载并运行一功能模块,所述方法包括:
在所述软件系统崩溃后,获取所述软件系统崩溃前所述功能模块中一已知函数的运行地址和所述软件系统崩溃时弹出的出错内存地址;所述出错内存地址包括出错地址,所述出错地址为出错函数的运行地址空间中的一个地址;
获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量;
根据所述出错地址相对于所述出错函数的运行地址的偏移量,从所述出错函数中定位出出错代码行。
2.根据权利要求1所述的方法,其特征在于,所述出错内存地址,还包括函数返回地址,所述函数返回地址为调用所述出错函数后的返回地址;
在所述获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量之后,所述方法还包括:
根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数,并计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量;
根据所述函数返回地址相对于所述返回的函数的运行地址的偏移量,从所述返回的函数中定位出调用所述出错函数后返回的调用代码行。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量,包括:
根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数;
获取所述出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址相对于所述功能模块的程序运行入口的偏移量和所述出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述出错函数的运行地址的偏移量。
4.根据权利要求2所述的方法,其特征在于,所述根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数,并计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量,包括:
根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述功能模块的程序运行入口的偏移量;
根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数;
获取所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量和所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在定位出所述出错代码行和所述调用代码行之后,对所述出错代码行和所述调用代码行进行故障消除debug;
重新加载经过debug后的功能模块。
6.一种内核错误定位装置,其特征在于,软件系统加载并运行一功能模块,所述内核错误定位装置包括:
获取模块,用于在所述软件系统崩溃后,获取所述软件系统崩溃前所述功能模块中一已知函数的运行地址和所述软件系统崩溃时弹出的出错内存地址;所述出错内存地址包括出错地址,所述出错地址为出错函数的运行地址空间中的一个地址,所述已知函数为所述功能模块中的一个函数;获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
计算模块,用于根据所述获取模块获取的所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数,并计算得到所述出错地址相对于所述出错函数的运行地址的偏移量;
定位模块,用于根据所述计算模块计算得到的所述出错地址相对于所述出错函数的运行地址的偏移量,从所述出错函数中定位出出错代码行。
7.根据权利要求6所述的装置,其特征在于,所述出错内存地址,还包括函数返回地址,所述函数返回地址为调用所述出错函数后的返回地址;
所述计算模块,还用于在所述获取模块获取所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量之后,根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数,并计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量;
所述定位模块,还用于根据所述函数返回地址相对于所述返回的函数的运行地址的偏移量,从所述返回的函数中定位出调用所述出错函数后返回的调用代码行。
8.根据权利要求6或7所述的装置,其特征在于,所述计算模块,具体用于:
根据所述出错地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出所述出错函数;
获取所述出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述出错地址相对于所述功能模块的程序运行入口的偏移量和所述出错函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述出错地址相对于所述出错函数的运行地址的偏移量。
9.根据权利要求7所述的装置,其特征在于,所述计算模块,具体用于:
根据所述函数返回地址、所述已知函数的运行地址以及所述已知函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述功能模块的程序运行入口的偏移量;
根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量,从所述功能模块的所有函数中确定出调用所述出错函数后返回的函数;
获取所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量;
根据所述函数返回地址相对于所述功能模块的程序运行入口的偏移量和所述返回的函数的运行地址相对于所述功能模块的程序运行入口的偏移量,计算所述函数返回地址相对于所述返回的函数的运行地址的偏移量。
10.根据权利要求7所述的装置,其特征在于,还包括:
调试模块,用于在所述定位模块定位出所述出错代码行和所述调用代码行之后,对所述出错代码行和所述调用代码行进行故障消除debug;
所述加载模块,还用于重新加载经过所述调试模块debug后的功能模块。
11.一种计算机,其特征在于,所述计算机运行一软件系统,所述软件系统加载并运行一功能模块,所述计算机包括:
存储器,用于存储一组程序代码;
处理器,用于根据所述存储器存储的一组程序代码,执行权利要求1-5中任一项所述的内核错误定位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510553667.9A CN106484608B (zh) | 2015-09-01 | 2015-09-01 | 一种内核错误定位方法、装置及计算机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510553667.9A CN106484608B (zh) | 2015-09-01 | 2015-09-01 | 一种内核错误定位方法、装置及计算机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484608A true CN106484608A (zh) | 2017-03-08 |
CN106484608B CN106484608B (zh) | 2019-04-16 |
Family
ID=58237904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510553667.9A Active CN106484608B (zh) | 2015-09-01 | 2015-09-01 | 一种内核错误定位方法、装置及计算机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484608B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109255233A (zh) * | 2018-09-28 | 2019-01-22 | 北京明朝万达科技股份有限公司 | 一种漏洞检测方法及装置 |
CN111027072A (zh) * | 2019-12-20 | 2020-04-17 | 北京安天网络安全技术有限公司 | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 |
CN111124730A (zh) * | 2019-12-20 | 2020-05-08 | 浪潮商用机器有限公司 | 一种服务器的错误定位方法、装置及计算机存储介质 |
CN111125015A (zh) * | 2019-12-20 | 2020-05-08 | 北京百度网讯科技有限公司 | 用于dump文件分类的方法、装置、终端和介质 |
CN113238883A (zh) * | 2021-04-30 | 2021-08-10 | 烽火通信科技股份有限公司 | 一种堆栈回溯的方法及装置 |
CN113342563A (zh) * | 2021-04-27 | 2021-09-03 | 武汉深之度科技有限公司 | 程序运行错误时定位源代码的方法、装置及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015864A1 (en) * | 2001-06-05 | 2004-01-22 | Boucher Michael L. | Method and system for testing memory operations of computer program |
CN102768639A (zh) * | 2012-06-11 | 2012-11-07 | 北京奇虎科技有限公司 | 操作系统内核级错误定位方法及装置 |
CN104536886A (zh) * | 2014-12-23 | 2015-04-22 | 浪潮电子信息产业股份有限公司 | 一种选择内核进行调试的方法 |
-
2015
- 2015-09-01 CN CN201510553667.9A patent/CN106484608B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015864A1 (en) * | 2001-06-05 | 2004-01-22 | Boucher Michael L. | Method and system for testing memory operations of computer program |
CN102768639A (zh) * | 2012-06-11 | 2012-11-07 | 北京奇虎科技有限公司 | 操作系统内核级错误定位方法及装置 |
CN104536886A (zh) * | 2014-12-23 | 2015-04-22 | 浪潮电子信息产业股份有限公司 | 一种选择内核进行调试的方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109255233A (zh) * | 2018-09-28 | 2019-01-22 | 北京明朝万达科技股份有限公司 | 一种漏洞检测方法及装置 |
CN109255233B (zh) * | 2018-09-28 | 2020-09-25 | 北京明朝万达科技股份有限公司 | 一种漏洞检测方法及装置 |
CN111027072A (zh) * | 2019-12-20 | 2020-04-17 | 北京安天网络安全技术有限公司 | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 |
CN111124730A (zh) * | 2019-12-20 | 2020-05-08 | 浪潮商用机器有限公司 | 一种服务器的错误定位方法、装置及计算机存储介质 |
CN111125015A (zh) * | 2019-12-20 | 2020-05-08 | 北京百度网讯科技有限公司 | 用于dump文件分类的方法、装置、终端和介质 |
CN111125015B (zh) * | 2019-12-20 | 2023-04-14 | 北京百度网讯科技有限公司 | 用于dump文件分类的方法、装置、终端和介质 |
CN111124730B (zh) * | 2019-12-20 | 2024-01-23 | 浪潮商用机器有限公司 | 一种服务器的错误定位方法、装置及计算机存储介质 |
CN111027072B (zh) * | 2019-12-20 | 2024-02-27 | 北京安天网络安全技术有限公司 | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 |
CN113342563A (zh) * | 2021-04-27 | 2021-09-03 | 武汉深之度科技有限公司 | 程序运行错误时定位源代码的方法、装置及计算设备 |
CN113342563B (zh) * | 2021-04-27 | 2024-07-19 | 武汉深之度科技有限公司 | 程序运行错误时定位源代码的方法、装置及计算设备 |
CN113238883A (zh) * | 2021-04-30 | 2021-08-10 | 烽火通信科技股份有限公司 | 一种堆栈回溯的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106484608B (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106484608A (zh) | 一种内核错误定位方法、装置及计算机 | |
US10586053B2 (en) | Method for automatically detecting security vulnerability based on hybrid fuzzing, and apparatus thereof | |
US20070283104A1 (en) | Concurrent Hardware Selftest for Central Storage | |
Xu | Directed test suite augmentation | |
US8930912B2 (en) | Method and system for performing software verification | |
US8214192B2 (en) | Resource remapping in a hardware emulation environment | |
US8566647B2 (en) | Debugger presentation of parallel application threads | |
US7401322B1 (en) | Software debugging tool | |
US20070234310A1 (en) | Checking for memory access collisions in a multi-processor architecture | |
DE102007046475A1 (de) | Überwachen eines Ausführungsmusters eines Target-Agents auf einem VT-fähigen System | |
Gore et al. | Statistical debugging with elastic predicates | |
EP3819770B1 (en) | System and method for software verification | |
CN111045927A (zh) | 性能测试评估方法、装置、计算机设备及可读存储介质 | |
CN107688537A (zh) | 测试方法、装置及前置机 | |
CN107392018A (zh) | 应用程序脱壳方法及装置 | |
Segall et al. | Simplified modeling of combinatorial test spaces | |
CN104615471A (zh) | 一种终端的系统升级方法及装置 | |
CN110287123A (zh) | 一种绕过ios系统调试检测的方法及装置 | |
Jaffuel et al. | LEIRIOS test generator: Automated test generation from B models | |
Tselonis et al. | The functional and performance tolerance of gpus to permanent faults in registers | |
CN104750611B (zh) | 实现测试任务提交的方法及装置 | |
Bakita | Scaling up: The validation of empirically derived scheduling rules on NVIDIA GPUs | |
CN207302034U (zh) | 处理器芯片仿真器 | |
CN111045891B (zh) | 基于java多线程的监控方法、装置、设备以及存储介质 | |
CN102880457B (zh) | 一种对数据进行处理的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 266555 Qingdao economic and Technological Development Zone, Shandong, Hong Kong Road, No. 218 Patentee after: Hisense Visual Technology Co., Ltd. Address before: 266555 Qingdao economic and Technological Development Zone, Shandong, Hong Kong Road, No. 218 Patentee before: QINGDAO HISENSE ELECTRONICS Co.,Ltd. |