CN103164322A - 一种程序崩溃的签名方法和装置 - Google Patents

一种程序崩溃的签名方法和装置 Download PDF

Info

Publication number
CN103164322A
CN103164322A CN2013101301872A CN201310130187A CN103164322A CN 103164322 A CN103164322 A CN 103164322A CN 2013101301872 A CN2013101301872 A CN 2013101301872A CN 201310130187 A CN201310130187 A CN 201310130187A CN 103164322 A CN103164322 A CN 103164322A
Authority
CN
China
Prior art keywords
stack information
program
stack
information
file
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
Application number
CN2013101301872A
Other languages
English (en)
Other versions
CN103164322B (zh
Inventor
于维军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201310130187.2A priority Critical patent/CN103164322B/zh
Publication of CN103164322A publication Critical patent/CN103164322A/zh
Priority to PCT/CN2013/089915 priority patent/WO2014169678A1/en
Priority to US14/292,013 priority patent/US9442825B2/en
Application granted granted Critical
Publication of CN103164322B publication Critical patent/CN103164322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了程序崩溃的签名方法和装置,应用于通信技术领域。程序崩溃的签名装置先获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息,然后在获取的堆栈信息中得到应用程序的进程对应的第一堆栈信息,并根据第一堆栈信息对发生的程序崩溃进行签名。这样由于应用程序的进程对应的第一堆栈信息能反映一个应用程序的进程的本质,不会由于不同用户的计算机系统的设置即应用程序的进程的运行环境不同而变化,使得通过第一堆栈信息得到的程序崩溃的签名也可以唯一地确定发生程序崩溃的原因,不会出现对于本质相同的两个应用程序的进程,由于相同原因导致的程序崩溃签名不同,而最终确定的导致程序崩溃的原因较为准确。

Description

一种程序崩溃的签名方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及程序崩溃的原因标记方法和装置。
背景技术
计算机系统在执行应用程序的进程的过程中,不可避免的会由于该应用程序的进程自身的原因,比如除零错误、堆栈溢出、内存越界或空指针等原因,导致在执行应用程序的进程时发生程序崩溃(crash),如何在发生程序崩溃的时候确定发生程序崩溃的原因是比较重要的问题。
在现有技术中,当计算机系统在启动或执行应用程序的进程时,如果发生程序崩溃,则该计算机系统会获取计算机系统中内存的状态和堆栈调用信息,并提取其中一些特征信息,根据特征信息计算该程序崩溃的签名,这样通过程序崩溃的签名可以唯一确定发生程序崩溃的原因。但是由于不同用户的计算机系统在运行应用程序的进程时,运行的环境可能不同,这样可能导致对实质上相同的两个应用程序的进程在运行时,由于同一原因导致的程序崩溃的签名可能不同,从而确定的导致程序崩溃的原因不是很准确。
发明内容
本发明实施例提供程序崩溃的签名方法和装置,使得确定的导致程序崩溃的原因较为准确。
本发明实施例提供一种程序崩溃的签名方法,包括:
获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息;
在所述堆栈信息中获取所述应用程序的进程对应的第一堆栈信息;
根据所述第一堆栈信息对发生的所述程序崩溃进行签名。
本发明实施例提供一种程序崩溃的签名装置,包括:
堆栈获取单元,用于获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息;
程序堆栈获取单元,用于在所述堆栈信息中获取所述应用程序的进程对应的第一堆栈信息;
签名单元,用于根据所述第一堆栈信息对发生的所述程序崩溃进行签名。
本发明实施例中,程序崩溃的签名装置先获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息,然后在获取的堆栈信息中得到应用程序的进程对应的第一堆栈信息,并根据第一堆栈信息对发生的程序崩溃进行签名。这样由于应用程序的进程对应的第一堆栈信息能反映一个应用程序的进程的本质,不会由于不同用户的计算机系统的设置即应用程序的进程的运行环境不同而变化,使得通过第一堆栈信息得到的程序崩溃的签名也可以唯一地确定发生程序崩溃的原因,不会出现对于本质相同的两个应用程序的进程,由于相同原因导致的程序崩溃签名不同,而最终确定的导致程序崩溃的原因较为准确。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种程序崩溃的签名方法的流程图;
图2是本发明实施例提供的另一种程序崩溃的签名方法的流程图;
图3是本发明实施例提供的一种程序崩溃的签名装置的结构示意图;
图4是本发明实施例提供的另一种程序崩溃的签名装置的结构示意图;
图5是本发明实施例提供的程序崩溃的签名方法应用于的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种程序崩溃的签名方法,主要是对计算机系统执行应用程序的进程过程中发生的程序崩溃进行的签名,本发明实施例是程序崩溃的签名装置,比如服务器或执行应用程序的进程的计算机系统所执行的方法,流程图如图1所示,包括:
步骤101,获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息。
上述应用程序的进程就是一个活跃着的应用程序,即计算机系统已经将应用程序的代码放到对应的计算机系统的内存中,占有了一定的系统资源的应用程序,一个应用程序在没有被调用到内存空间之前叫做为程序,被调用并得到了资源后就可以称为进程,每个应用程序的代码对应储存在内存中的一段空间中。可以理解,当计算机系统在执行应用程序的进程的过程中,会调用该应用程序的进程对应内存中的函数并实现一定的功能,则该应用程序的进程对应内存中还会储存堆栈信息,即该应用程序中的函数被调用情况的信息,比如被调用的顺序及多个函数被调用的关系(即进程上下文信息)等,一般情况下,最早调用到的函数储存在栈底,而最晚调用到的函数储存栈顶。
本实施例中,如果在执行应用程序的进程的过程中发生程序崩溃,计算机系统可以将发生程序崩溃时,程序崩溃的签名装置可以获得应用程序的进程对应内存中储存的信息从而得到上述堆栈信息。
步骤102,在堆栈信息中获取应用程序的进程对应的第一堆栈信息,由于在堆栈信息中包括计算机系统自身在运行的过程中调用的函数信息,和应用程序的进程在运行时所调用的函数信息,则在堆栈信息中需要包括应用程序的进程对应的第一堆栈信息和计算机系统对应的第二堆栈信息,本实施例中,需要得到其中的第一堆栈信息。
步骤103,根据第一堆栈信息对发生的程序崩溃进行签名,在进行签名时,可以计算该第一堆栈信息的信息标识,比如通过哈希算法计算第一堆栈信息的消息摘要算法第五版(Message Digest Algorithm,MD5)的值;或将第一堆栈信息与发生程序崩溃时该应用程序的进程对应内存中储存的其它一些信息进行拼接,然后计算拼接后信息的信息标识。这样计算得到的信息标识就可以唯一标识发生程序崩溃的原因。
可见,本发明实施例中,程序崩溃的签名装置先获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息,然后在获取的堆栈信息中得到应用程序的进程对应的第一堆栈信息,并根据第一堆栈信息对发生的程序崩溃进行签名。这样由于应用程序的进程对应的第一堆栈信息能反映一个应用程序的进程的本质,不会由于不同用户的计算机系统的设置即应用程序的进程的运行环境不同而变化,使得通过第一堆栈信息得到的程序崩溃的签名也可以唯一地确定发生程序崩溃的原因,不会出现对于本质相同的两个应用程序的进程,由于相同原因导致的程序崩溃签名不同,而最终确定的导致程序崩溃的原因较为准确。
参考图2所示,在一个具体的实施例中,程序崩溃的签名装置在执行上述步骤101时,具体可以通过如下的步骤来实现:
步骤104,获取计算机系统的内存镜像文件即dump文件,该内存镜像文件是计算机系统在执行应用程序的进程过程中发生程序崩溃时产生的文件。
可以理解,当计算机系统在执行应用程序的进程的过程中,会将对应用程序中对应的可执行程序的内容等信息映射到计算机系统的内存中,当在执行该应用程序的进程过程中发生程序崩溃时,计算机系统可以将该应用程序的进程对应内存中的信息储存成dump文件。其中,在dump文件中可以包括:可执行程序在内存中的映射信息(包括应用程序的函数地址、偏移量等),执行该应用程序的进程时调用的堆栈信息,还可以包括程序崩溃时的其它有助于定位崩溃原因的信息,比如进程名称(PROCESS_NAME)和主要问题类型(PRIMARY_PROBLEM_CLASS)等信息。
上述的dump文件需要通过一定的预分析方法来确定该dump文件中有哪些具体的信息,具体地可以通过windbg工具来分析,其中windbg工具是用户态和内核态调试工具,可以分析dump文件中储存有哪些类型的信息,且还可以粗略分析导致程序崩溃的原因等信息。其中windbg工具提供了很多命令行参数,在对dump文件进行分析处理时,主要使用analyze-v命令从dump文件中提取出所需要的信息比如堆栈信息等。
步骤105,根据应用程序的进程对应的调试文件即应用程序的进程对应的pdb文件,对内存镜像文件进行预分析得到预分析文件。
步骤106,在预分析文件中查找堆栈信息。
可以理解,由于调试文件中包括所述应用程序中的各类函数和变量的命名、地址和类型,以及源代码文件的名字和行数等信息,这样对照着调试文件,对dump文件中的内容进行分析和处理即可得到dump文件中储存有哪些类型的信息,从而最终得到堆栈信息。
通过上述步骤104和105即可获取到发生程序崩溃时调用的堆栈信息,由于计算机系统在执行应用程序的进程的过程中,需要先保证计算机系统自身的运行即需要先调用计算机系统对应的第二堆栈信息,然后再调用应用程序的进程对应的第一堆栈信息,因此在堆栈信息中,一般第二堆栈信息在靠近栈底的位置,而第一堆栈信息是在靠近栈顶的位置。因此,当程序崩溃的签名装置在执行上述步骤102即获取第一堆栈信息时,具体可以获取堆栈信息中从栈顶到堆栈信息的第N层(比如第3层)作为第一堆栈信息;或从堆栈信息的栈顶到栈底,取堆栈信息中的M层(比如20层)作为第一堆栈信息;如果堆栈信息少于M层,则取全部的堆栈信息作为第一堆栈信息。
在具体实现过程中,通过对dump文件的预分析不仅可以得到堆栈信息,还可以查找到其它的信息,比如进行预分析得到的程序崩溃的原因类型(即预分析文件中的PRIMARY_PROBLEM_CLASS信息),和/或,应用程序的进程对应的计算机系统内存中储存的除堆栈信息外的其它信息(即预分析文件中的FOLLOW_IP信息)等信息。因此,为了使得对于本质相同的两个应用程序的进程,尽量区分由于不同原因导致的程序崩溃,程序崩溃的签名装置在执行上述步骤103的签名时,不仅需要根据第一堆栈信息,还需要结合其它信息来进行签名,具体地:
程序崩溃的签名装置会将第一堆栈信息与如下任一种或多种信息拼接得到拼接后信息,并计算拼接后信息的信息标识得到程序崩溃的签名:预分析文件中包括的原因类型和计算机内存中储存的其它信息。
进一步地,如果程序崩溃的签名装置在预分析文件中未查找到上述的堆栈信息,程序崩溃的原因类型,和,应用程序的进程对应的计算机系统内存中储存的除堆栈信息外的其它信息,则确定步骤104中获取的内存镜像文件无效,程序崩溃的签名装置会重新从计算机系统获取内存镜像文件,然后按照上述步骤104到106来得到堆栈信息。
本发明实施例还提供一种程序崩溃的签名装置,结构示意图如图3所示,包括:
堆栈获取单元10,用于获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息;
程序堆栈获取单元11,用于在所述堆栈获取单元10获取的堆栈信息中获取所述应用程序的进程对应的第一堆栈信息;
签名单元12,用于根据所述程序堆栈获取单元11获取的第一堆栈信息对发生的所述程序崩溃进行签名。该签名单元12可以计算该第一堆栈信息的信息标识,比如通过哈希算法计算第一堆栈信息的MD5值;或签名单元12将第一堆栈信息与发生程序崩溃时该应用程序的进程对应内存中储存的其它一些信息进行拼接,然后计算拼接后信息的信息标识。这样计算得到的信息标识就可以唯一标识发生程序崩溃的原因。
本发明实施例中,程序崩溃的签名装置的堆栈获取单元10先获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息,然后程序堆栈获取单元11在获取的堆栈信息中得到应用程序的进程对应的第一堆栈信息,并由签名单元12根据第一堆栈信息对发生的程序崩溃进行签名。这样由于应用程序的进程对应的第一堆栈信息能反映一个应用程序的进程的本质,不会由于不同用户的计算机系统的设置即应用程序的进程的运行环境不同而变化,使得通过第一堆栈信息得到的程序崩溃的签名也可以唯一地确定发生程序崩溃的原因,不会出现对于本质相同的两个应用程序的进程,由于相同原因导致的程序崩溃签名不同,而最终确定的导致程序崩溃的原因较为准确。
参考图4所示,在一个具体的实施例中,程序崩溃的签名装置除了可以包括如图3所示的结构外,还可以包括无效处理单元13,且其中的堆栈获取单元10具体通过镜像文件获取单元110、分析单元120和查找单元130来实现,具体地:
镜像文件获取单元110,用于获取所述计算机系统的内存镜像文件,所述内存镜像文件是所述计算机系统在执行所述应用程序的进程过程中发生程序崩溃时产生的文件。
分析单元120,用于根据所述应用程序的进程对应的调试文件,对所述镜像文件获取单元110获取的内存镜像文件进行预分析得到预分析文件。具体地,该分析单元120可以利用windbg工具来分析dump文件,对照调试文件中包括的内容,对dump文件中的内容进行分析和处理得到dump文件中储存有哪些类型的信息,最终得到堆栈信息储存有哪些类型的信息,且该分析单元120还可以粗略分析导致程序崩溃的原因等信息。
查找单元130,用于在所述分析单元120分析得到的预分析文件中查找到所述堆栈信息。
本实施例的程序崩溃的签名装置中,通过堆栈获取单元10中得镜像文件获取单元110和分析单元120即可得到预分析文件,通过查找单元130即可从预分析文件中查找到堆栈信息,然后再由程序堆栈获取单元11从查找单元130查找到的堆栈信息获取第一堆栈信息,具体地,程序堆栈获取单元11可以获取所述堆栈信息中从栈顶到所述堆栈信息的第N层作为第一堆栈信息;或,从所述堆栈信息的栈顶到栈底,取所述堆栈信息中的M层作为第一堆栈信息;或,如果所述堆栈信息少于M层时,则取全部的所述堆栈信息作为第一堆栈信息。
如果查找单元130在所述预分析文件中还查找到如下信息:进行预分析得到的所述程序崩溃的原因类型,和/或,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息;则签名单元12在进行签名时,是将所述第一堆栈信息与如下任一种或多种信息拼接得到拼接后信息,计算所述拼接后信息的信息标识得到所述程序崩溃的签名:所述原因类型和所述计算机内存中储存的其它信息。
如果查找单元130在所述预分析文件中未查找到所述堆栈信息,所述程序崩溃的原因类型,和,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息,则无效处理单元13确定所述内存镜像文件无效,通知所述镜像文件获取单元110重新从所述计算机系统获取所述内存镜像文件。
以下主要以本发明实施例的程序崩溃的签名方法应用于服务器中来举例说明,请参考图5,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
服务器可以包括射频(Radio Frequency,RF)电路20、包括有一个或一个以上计算机可读存储介质的存储器21、输入单元22、显示单元23、无线保真(wireless fidelity,WiFi)模块24、包括有一个或者一个以上处理核心的处理器25、以及电源26等部件。本领域技术人员可以理解,图5中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路20可用于收发信息过程中,信号的接收和发送,特别地,将接收到的信息交由一个或者一个以上处理器25处理。通常,RF电路20包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路20还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System ofMobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器21可用于存储软件程序以及模块,处理器25通过运行存储在存储器21的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器21还可以包括存储器控制器,以提供处理器25和输入单元22对存储器21的访问。
输入单元22可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元22可包括触敏表面221以及其他输入设备222。触敏表面221,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面221上或在触敏表面221附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面221可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器25,并能接收处理器25发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面221。除了触敏表面221,输入单元22还可以包括其他输入设备222。具体地,其他输入设备222可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元23可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元23可包括显示面板231,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(OrganicLight-Emitting Diode,OLED)等形式来配置显示面板231。进一步的,触敏表面221可覆盖显示面板231,当触敏表面221检测到在其上或附近的触摸操作后,传送给处理器25以确定触摸事件的类型,随后处理器25根据触摸事件的类型在显示面板231上提供相应的视觉输出。虽然在图5中,触敏表面221与显示面板231是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面221与显示面板231集成而实现输入和输出功能。
WiFi属于短距离无线传输技术,服务器通过WiFi模块24可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块24,但是可以理解的是,其并不属于服务器的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器25是服务器的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器21内的软件程序和/或模块,以及调用存储在存储器21内的数据,执行服务器的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器25可包括一个或多个处理核心;优选的,处理器25可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器25中。
服务器还包括给各个部件供电的电源26(比如电池),优选的,电源可以通过电源管理系统与处理器26逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源26还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,服务器还可以包括其它模块,在此不再赘述。具体在本实施例中,服务器中的处理器25会按照如下的指令,执行存储器21中储存的一个或一个以上的应用程序的进程,从而实现各种功能:
获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息;
在所述堆栈信息中获取所述应用程序的进程对应的第一堆栈信息;
根据所述第一堆栈信息对发生的所述程序崩溃进行签名。
具体地,处理器25在获取堆栈信息时,先获取所述计算机系统的内存镜像文件,所述内存镜像文件是所述计算机系统在执行所述应用程序的进程过程中发生程序崩溃时产生的文件;然后根据所述应用程序的进程对应的调试文件,对所述内存镜像文件进行预分析得到预分析文件;最后在所述预分析文件中查找到所述堆栈信息。
这样处理器25获取第一堆栈信息时,具体地,获取所述堆栈信息中从栈顶到所述堆栈信息的第N层作为第一堆栈信息;或,从所述堆栈信息的栈顶到栈底,取所述堆栈信息中的M层作为第一堆栈信息;或,如果所述堆栈信息少于M层时,则取全部的所述堆栈信息作为第一堆栈信息。
如果处理器25在所述预分析文件中还查找到如下信息:进行预分析得到的所述程序崩溃的原因类型,和/或,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息;则处理器25在签名时,具体地是将所述第一堆栈信息与如下任一种或多种信息拼接得到拼接后信息,计算所述拼接后信息的信息标识得到所述程序崩溃的签名:所述原因类型和所述计算机内存中储存的其它信息。
进一步地,如果处理器25在所述预分析文件中未查找到所述堆栈信息,所述程序崩溃的原因类型,和,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息,则确定所述内存镜像文件无效,重新从所述计算机系统获取所述内存镜像文件。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
以上对本发明实施例所提供的程序崩溃的签名方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种程序崩溃的签名方法,其特征在于,包括:
获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息;
在所述堆栈信息中获取所述应用程序的进程对应的第一堆栈信息;
根据所述第一堆栈信息对发生的所述程序崩溃进行签名。
2.如权利要求1所述的方法,其特征在于,所述获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息,具体包括:
获取所述计算机系统的内存镜像文件,所述内存镜像文件是所述计算机系统在执行所述应用程序的进程过程中发生程序崩溃时产生的文件;
根据所述应用程序的进程对应的调试文件,对所述内存镜像文件进行预分析得到预分析文件;
在所述预分析文件中查找到所述堆栈信息。
3.如权利要求2所述的方法,其特征在于,所述在所述堆栈信息中获取所述应用程序的进程对应的第一堆栈信息,具体包括:
获取所述堆栈信息中从栈顶到所述堆栈信息的第N层作为第一堆栈信息;或,
从所述堆栈信息的栈顶到栈底,取所述堆栈信息中的M层作为第一堆栈信息;或,
如果所述堆栈信息少于M层时,则取全部的所述堆栈信息作为第一堆栈信息。
4.如权利要求2所述的方法,其特征在于,若在所述预分析文件中查找到如下信息:进行预分析得到的所述程序崩溃的原因类型,和/或,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息;
则所述根据所述第一堆栈信息对发生的所述程序崩溃进行签名,具体包括:
将所述第一堆栈信息与如下任一种或多种信息拼接得到拼接后信息,计算所述拼接后信息的信息标识得到所述程序崩溃的签名:所述原因类型和所述计算机内存中储存的其它信息。
5.如权利要求2至4任一项所述的方法,其特征在于,所述方法还包括:
如果在所述预分析文件中未查找到所述堆栈信息,所述程序崩溃的原因类型,和,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息,则确定所述内存镜像文件无效,重新从所述计算机系统获取所述内存镜像文件。
6.一种程序崩溃的签名装置,其特征在于,包括:
堆栈获取单元,用于获取计算机系统在执行应用程序的进程过程中,发生程序崩溃时调用的堆栈信息;
程序堆栈获取单元,用于在所述堆栈信息中获取所述应用程序的进程对应的第一堆栈信息;
签名单元,用于根据所述第一堆栈信息对发生的所述程序崩溃进行签名。
7.如权利要求6所述的装置,其特征在于,所述堆栈获取单元具体包括:
镜像文件获取单元,用于获取所述计算机系统的内存镜像文件,所述内存镜像文件是所述计算机系统在执行所述应用程序的进程过程中发生程序崩溃时产生的文件;
分析单元,用于根据所述应用程序的进程对应的调试文件,对所述内存镜像文件进行预分析得到预分析文件;
查找单元,用于在所述预分析文件中查找到所述堆栈信息。
8.如权利要求7所述的装置,其特征在于,
所述程序堆栈获取单元,具体用于获取所述堆栈信息中从栈顶到所述堆栈信息的第N层作为第一堆栈信息;或,从所述堆栈信息的栈顶到栈底,取所述堆栈信息中的M层作为第一堆栈信息;或,如果所述堆栈信息少于M层时,则取全部的所述堆栈信息作为第一堆栈信息。
9.如权利要求7所述的装置,其特征在于,
所述查找单元,还用于在所述预分析文件中查找到如下信息:进行预分析得到的所述程序崩溃的原因类型,和/或,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息;
则所述签名单元,具体用于将所述第一堆栈信息与如下任一种或多种信息拼接得到拼接后信息,计算所述拼接后信息的信息标识得到所述程序崩溃的签名:所述原因类型和所述计算机内存中储存的其它信息。
10.如权利要求7至9任一项所述的装置,其特征在于,还包括:
无效处理单元,用于如果在所述预分析文件中未查找到所述堆栈信息,所述程序崩溃的原因类型,和,所述应用程序的进程对应的计算机系统内存中储存的除所述堆栈信息外的其它信息,则确定所述内存镜像文件无效,通知所述镜像文件获取单元重新从所述计算机系统获取所述内存镜像文件。
CN201310130187.2A 2013-04-15 2013-04-15 一种程序崩溃的签名方法和装置 Active CN103164322B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201310130187.2A CN103164322B (zh) 2013-04-15 2013-04-15 一种程序崩溃的签名方法和装置
PCT/CN2013/089915 WO2014169678A1 (en) 2013-04-15 2013-12-19 Method and device for signing program crash
US14/292,013 US9442825B2 (en) 2013-04-15 2014-05-30 Method and device for signing program crash

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310130187.2A CN103164322B (zh) 2013-04-15 2013-04-15 一种程序崩溃的签名方法和装置

Publications (2)

Publication Number Publication Date
CN103164322A true CN103164322A (zh) 2013-06-19
CN103164322B CN103164322B (zh) 2016-02-17

Family

ID=48587427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310130187.2A Active CN103164322B (zh) 2013-04-15 2013-04-15 一种程序崩溃的签名方法和装置

Country Status (2)

Country Link
CN (1) CN103164322B (zh)
WO (1) WO2014169678A1 (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014169678A1 (en) * 2013-04-15 2014-10-23 Tencent Technology (Shenzhen) Company Limited Method and device for signing program crash
CN104424090A (zh) * 2013-08-22 2015-03-18 腾讯科技(深圳)有限公司 一种标识崩溃的方法、装置和系统
CN104750553A (zh) * 2013-12-30 2015-07-01 广州华多网络科技有限公司 应用运行方法和装置
US9442825B2 (en) 2013-04-15 2016-09-13 Tencent Technology (Shenzhen) Company Limited Method and device for signing program crash
CN106294134A (zh) * 2016-07-29 2017-01-04 腾讯科技(深圳)有限公司 代码的崩溃定位方法及装置
CN106484617A (zh) * 2016-10-09 2017-03-08 武汉斗鱼网络科技有限公司 用于Windows软件产品的dump文件自动分析统计方法及系统
CN106933689A (zh) * 2015-12-29 2017-07-07 伊姆西公司 一种用于计算设备的方法和装置
CN107861865A (zh) * 2017-08-29 2018-03-30 平安普惠企业管理有限公司 Sdk定位方法、设备及计算机可读存储介质
CN108052430A (zh) * 2017-11-30 2018-05-18 努比亚技术有限公司 移动终端重启定位方法、移动终端及计算机可读存储介质
CN110704302A (zh) * 2019-09-02 2020-01-17 贝壳技术有限公司 映射关系建立方法、装置及系统崩溃分流的方法与装置
CN110727581A (zh) * 2019-09-06 2020-01-24 网宿科技股份有限公司 崩溃定位方法与电子设备
CN111813664A (zh) * 2020-06-19 2020-10-23 北京字节跳动网络技术有限公司 一种崩溃信息收集方法、装置、介质和设备
CN113282436A (zh) * 2021-05-21 2021-08-20 北京达佳互联信息技术有限公司 事件处理方法、装置、设备以及存储介质
WO2023138382A1 (zh) * 2022-01-19 2023-07-27 北京有竹居网络技术有限公司 一种崩溃信息收集方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107305522A (zh) * 2016-04-21 2017-10-31 富士通株式会社 用于对应用程序的重复崩溃进行检测的装置和方法
CN115842762A (zh) * 2021-08-30 2023-03-24 青岛海尔科技有限公司 一种设备调试方法、装置及系统
CN114020504B (zh) * 2021-10-19 2022-08-09 北京五八信息技术有限公司 一种数据处理方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050022136A1 (en) * 2003-05-16 2005-01-27 Michael Hatscher Methods and systems for manipulating an item interface
CN101114253A (zh) * 2006-07-26 2008-01-30 腾讯科技(深圳)有限公司 一种程序崩溃信息上报的方法及系统
CN101256568A (zh) * 2008-03-18 2008-09-03 深圳市迅雷网络技术有限公司 一种提供多媒体资源的方法、系统及装置
CN102984580A (zh) * 2012-11-12 2013-03-20 北京奇虎科技有限公司 内存清理方法及系统
CN103019879A (zh) * 2013-01-07 2013-04-03 北京奇虎科技有限公司 浏览器崩溃信息的处理方法及系统
CN103034575A (zh) * 2012-11-29 2013-04-10 北京奇虎科技有限公司 崩溃分析方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7320125B2 (en) * 2001-05-24 2008-01-15 Techtracker, Inc. Program execution stack signatures
CN1329836C (zh) * 2004-05-26 2007-08-01 华为技术有限公司 定位程序异常的方法
US7644397B2 (en) * 2004-06-19 2010-01-05 Apple Inc. Software performance analysis using data mining
CN101719090A (zh) * 2009-12-25 2010-06-02 珠海市君天电子科技有限公司 对计算机软件系统崩溃原因进行自动分析的方法
CN103164322B (zh) * 2013-04-15 2016-02-17 腾讯科技(深圳)有限公司 一种程序崩溃的签名方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050022136A1 (en) * 2003-05-16 2005-01-27 Michael Hatscher Methods and systems for manipulating an item interface
CN101114253A (zh) * 2006-07-26 2008-01-30 腾讯科技(深圳)有限公司 一种程序崩溃信息上报的方法及系统
CN101256568A (zh) * 2008-03-18 2008-09-03 深圳市迅雷网络技术有限公司 一种提供多媒体资源的方法、系统及装置
CN102984580A (zh) * 2012-11-12 2013-03-20 北京奇虎科技有限公司 内存清理方法及系统
CN103034575A (zh) * 2012-11-29 2013-04-10 北京奇虎科技有限公司 崩溃分析方法和装置
CN103019879A (zh) * 2013-01-07 2013-04-03 北京奇虎科技有限公司 浏览器崩溃信息的处理方法及系统

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442825B2 (en) 2013-04-15 2016-09-13 Tencent Technology (Shenzhen) Company Limited Method and device for signing program crash
WO2014169678A1 (en) * 2013-04-15 2014-10-23 Tencent Technology (Shenzhen) Company Limited Method and device for signing program crash
CN104424090A (zh) * 2013-08-22 2015-03-18 腾讯科技(深圳)有限公司 一种标识崩溃的方法、装置和系统
CN104750553B (zh) * 2013-12-30 2019-03-15 广州华多网络科技有限公司 应用运行方法和装置
CN104750553A (zh) * 2013-12-30 2015-07-01 广州华多网络科技有限公司 应用运行方法和装置
CN106933689A (zh) * 2015-12-29 2017-07-07 伊姆西公司 一种用于计算设备的方法和装置
CN106933689B (zh) * 2015-12-29 2020-05-19 伊姆西Ip控股有限责任公司 一种用于计算设备的方法和装置
CN106294134A (zh) * 2016-07-29 2017-01-04 腾讯科技(深圳)有限公司 代码的崩溃定位方法及装置
CN106294134B (zh) * 2016-07-29 2018-02-23 腾讯科技(深圳)有限公司 代码的崩溃定位方法及装置
CN106484617A (zh) * 2016-10-09 2017-03-08 武汉斗鱼网络科技有限公司 用于Windows软件产品的dump文件自动分析统计方法及系统
CN107861865A (zh) * 2017-08-29 2018-03-30 平安普惠企业管理有限公司 Sdk定位方法、设备及计算机可读存储介质
CN107861865B (zh) * 2017-08-29 2020-11-17 平安普惠企业管理有限公司 Sdk定位方法、设备及计算机可读存储介质
CN108052430A (zh) * 2017-11-30 2018-05-18 努比亚技术有限公司 移动终端重启定位方法、移动终端及计算机可读存储介质
CN110704302A (zh) * 2019-09-02 2020-01-17 贝壳技术有限公司 映射关系建立方法、装置及系统崩溃分流的方法与装置
CN110727581A (zh) * 2019-09-06 2020-01-24 网宿科技股份有限公司 崩溃定位方法与电子设备
CN110727581B (zh) * 2019-09-06 2024-04-05 网宿科技股份有限公司 崩溃定位方法与电子设备
CN111813664A (zh) * 2020-06-19 2020-10-23 北京字节跳动网络技术有限公司 一种崩溃信息收集方法、装置、介质和设备
CN111813664B (zh) * 2020-06-19 2024-02-13 北京字节跳动网络技术有限公司 一种崩溃信息收集方法、装置、介质和设备
CN113282436A (zh) * 2021-05-21 2021-08-20 北京达佳互联信息技术有限公司 事件处理方法、装置、设备以及存储介质
WO2023138382A1 (zh) * 2022-01-19 2023-07-27 北京有竹居网络技术有限公司 一种崩溃信息收集方法及装置

Also Published As

Publication number Publication date
CN103164322B (zh) 2016-02-17
WO2014169678A1 (en) 2014-10-23

Similar Documents

Publication Publication Date Title
CN103164322B (zh) 一种程序崩溃的签名方法和装置
CN106502703B (zh) 一种函数调用方法和装置
US10186244B2 (en) Sound effect processing method and device, plug-in unit manager and sound effect plug-in unit
CN104572430A (zh) 一种终端应用界面的测试方法、装置和系统
CN103544033A (zh) 应用程序回退方法、装置及相关设备
CN105404585A (zh) 获取代码覆盖率的方法及装置
CN105487889A (zh) 应用界面更新方法及装置
CN104123218B (zh) 一种代码覆盖测试方法、装置和系统
CN103942113A (zh) 系统重启原因的检测方法、装置及终端设备
CN103473163A (zh) 应用程序检测方法及装置
CN108073495B (zh) 应用程序崩溃原因的定位方法及装置
CN103455330A (zh) 应用程序管理方法、终端、设备及系统
CN105302452A (zh) 一种基于手势交互的操作方法及装置
CN103177217B (zh) 一种文件扫描方法、系统及客户端和服务器
CN103455621A (zh) 一种物流运单号的解析方法、装置和系统
CN104077211A (zh) 一种移动终端软件的测试方法及测试系统
CN104133761A (zh) 一种移动终端的内存占用分析方法、装置和系统
CN103631625A (zh) 一种数据获取的方法、用户端、服务器及系统
CN105512150A (zh) 一种信息搜索方法及装置
US9928134B2 (en) Method and apparatus for repairing dynamic link library file
US9442825B2 (en) Method and device for signing program crash
CN104965825A (zh) 一种数据处理的方法及终端
CN104866288A (zh) 一种访问应用程序的方法、装置及终端
CN104951324A (zh) 一种获取应用调用关系表的方法及装置
CN104135464B (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
TR01 Transfer of patent right

Effective date of registration: 20230920

Address after: 100190 Beijing Haidian District Zhichun Road 49 No. 3 West 309

Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 518031 East 403 room, Sai Ge science and Technology Park, Futian District Zhenxing Road, Shenzhen, Guangdong, China, 2

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

TR01 Transfer of patent right