CN115016973A - 一种程序崩溃事件复现方法、装置、设备和介质 - Google Patents

一种程序崩溃事件复现方法、装置、设备和介质 Download PDF

Info

Publication number
CN115016973A
CN115016973A CN202210752772.5A CN202210752772A CN115016973A CN 115016973 A CN115016973 A CN 115016973A CN 202210752772 A CN202210752772 A CN 202210752772A CN 115016973 A CN115016973 A CN 115016973A
Authority
CN
China
Prior art keywords
crash
program
file
information
attribute
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.)
Pending
Application number
CN202210752772.5A
Other languages
English (en)
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.)
Guangzhou Weride Technology Co Ltd
Original Assignee
Guangzhou Weride Technology 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 Guangzhou Weride Technology Co Ltd filed Critical Guangzhou Weride Technology Co Ltd
Priority to CN202210752772.5A priority Critical patent/CN115016973A/zh
Publication of CN115016973A publication Critical patent/CN115016973A/zh
Pending legal-status Critical Current

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/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems

Abstract

本发明公开了一种程序崩溃事件复现方法、装置、设备和介质,方法包括:当检测到出现崩溃程序时,从崩溃程序对应的环境变量读取程序属性信息,并获取崩溃程序对应的程序堆栈信息;采用程序堆栈信息和程序属性信息生成崩溃堆栈文件;响应接收到的程序标识信息,检索崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件;当接收到输入的崩溃复现请求时,采用崩溃堆栈文件和崩溃属性文件构建崩溃程序对应的崩溃事件,从而更为有效地处理程序崩溃场景,为后续程序运行稳定性以及行车安全性的提高提供数据基础。

Description

一种程序崩溃事件复现方法、装置、设备和介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种程序崩溃事件复现方法、装置、设备和介质。
背景技术
随着现代科技不断发展,智能驾驶技术越发成熟,而智能驾驶作为当前全球汽车与交通出行领域智能化和物联网化发展的主要方向,在未来的交通中具有重要的价值。
而智能驾驶通过依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作,通过大量的数据处理和计算实现车辆操作系统的自动运行。
在车辆系统运行的过程中,应用程序可能会遭遇某些错误或异常导致程序崩溃退出,同时程序崩溃的很多场景又是偶发的、不容易人为复现的,且单凭日志来分析问题,难定位到程序出错的位置,无法深入到程序的具体执行情况的局限性,进而导致行车安全性降低。
发明内容
本发明提供了一种程序崩溃事件复现方法、装置、设备和介质,解决了在车辆系统运行的过程中,应用程序可能会遭遇某些错误或异常导致程序崩溃退出,同时程序崩溃的很多场景又是偶发的、不容易人为复现的,且单凭日志来分析问题,难定位到程序出错的位置,无法深入到程序的具体执行情况的局限性,进而导致行车安全性降低的技术问题。
本发明提供的一种程序崩溃事件复现方法,包括:
当检测到出现崩溃程序时,从所述崩溃程序对应的环境变量读取程序属性信息,并获取所述崩溃程序对应的程序堆栈信息;
采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件;
响应接收到的程序标识信息,检索所述崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件;
当接收到输入的崩溃复现请求时,采用所述崩溃堆栈文件和所述崩溃属性文件构建所述崩溃程序对应的崩溃事件。
可选地,所述程序属性信息包括归属车辆标识和崩溃时间戳;所述采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件的步骤,包括:
采用所述车辆标识和所述崩溃时间戳作为文件名称,创建初始堆栈文件;
将所述程序堆栈信息载入到所述初始堆栈文件,生成崩溃堆栈文件。
可选地,所述程序标识信息包括进程标识符和线程标识符,所述程序数据库包括运行数据库和属性数据库,所述崩溃属性文件包括崩溃子属性文件和崩溃运行状态文件;所述响应接收到的程序标识信息,检索所述崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件的步骤,包括:
响应接收到的进程标识符和线程标识符,将所述进程标识符和所述线程标识符作为检索字检索所述崩溃程序关联的属性数据库,确定对应的崩溃属性信息;
将所述进程标识符、所述线程标识符和所述崩溃属性信息转换为键值对格式,生成崩溃子属性文件;
采用所述进程标识符检索所述崩溃程序关联的运行数据库,确定对应的运行信息;
将所述运行信息转换为文本格式,生成崩溃运行状态文件。
可选地,所述方法还包括:将所述崩溃堆栈文件和多个所述崩溃属性文件分别写入至预设容器共享目录。
可选地,所述方法还包括:
实时统计所述崩溃堆栈文件与所述崩溃属性文件的生成数量;
当所述生成数量小于预设的生成阈值时,跳转执行所述采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件的步骤;
当所述生成数量大于或等于所述生成阈值时,将多个所述崩溃属性文件分别写入至所述容器共享目录。
可选地,所述方法还包括:实时检测所述容器共享目录所属磁盘的剩余空间信息;所述剩余空间信息包括剩余空间比例和剩余空间数值;
当所述剩余空间数值小于预设的数值阈值,或所述剩余空间比例小于预设的比例阈值时,停止执行所述将所述崩溃堆栈文件和多个所述崩溃属性文件分别写入至预设容器共享目录的步骤。
可选地,在所述当检测到出现崩溃程序时,从所述崩溃程序对应的环境变量读取程序属性信息,并获取所述崩溃程序对应的程序堆栈信息的步骤之前,所述方法还包括:
响应在预设配置页面输入的功能启动指令,启动初始崩溃检测组件;
当在所述配置页面接收到功能修改指令时,采用所述功能修改指令修改所述崩溃检测组件内的配置信息,得到目标崩溃检测组件;
将所述目标崩溃检测组件内的检测线程复制至预设的挂载目录中,得到容器共享目录。
本发明第二方面提供了一种程序崩溃事件复现装置,包括:
信息读取模块,用于当检测到出现崩溃程序时,从所述崩溃程序对应的环境变量读取程序属性信息,并获取所述崩溃程序对应的程序堆栈信息;
崩溃堆栈文件生成模块,用于采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件;
崩溃属性文件生成模块,用于响应接收到的程序标识信息,检索所述崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件;
崩溃事件复现模块,用于当接收到输入的崩溃复现请求时,采用所述崩溃堆栈文件和所述崩溃属性文件构建所述崩溃程序对应的崩溃事件。
本发明第三方面提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本发明第一方面任一项所述的程序崩溃事件复现方法的步骤。
本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如本发明第一方面任一项所述的程序崩溃事件复现方法。
从以上技术方案可以看出,本发明具有以下优点:
当检测到出现崩溃程序时,从崩溃程序对应的环境变量读取程序属性信息,并获取崩溃程序对应的程序堆栈信息,采用程序堆栈信息和程序属性信息生成崩溃堆栈文件,与此同时,响应接收到的程序标识信息,检索崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件,当接收到输入的崩溃复现请求时,采用崩溃堆栈文件和崩溃属性文件构建崩溃程序对应的崩溃事件。通过对崩溃程序对应的崩溃堆栈文件以及崩溃属性文件的有效采集,从而解决在车辆系统运行的过程中由于程序崩溃场景的偶发性所导致的程序运行稳定性降低,进而影响行车的安全性的技术问题,更为有效地实现对崩溃程序的场景复现,为后续程序运行稳定性以及行车安全性的提高提供数据基础。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例一提供的一种程序崩溃事件复现方法的步骤流程图;
图2为本发明实施例二提供的一种程序崩溃事件复现方法的步骤流程图;
图3为本发明实施例三提供的一种程序崩溃事件复现装置的结构框图。
具体实施方式
本发明实施例提供了一种程序崩溃事件复现方法、装置、设备和介质,用于解决在车辆系统运行的过程中,应用程序可能会遭遇某些错误或异常导致程序崩溃退出,同时程序崩溃的很多场景又是偶发的、不容易人为复现的,且单凭日志来分析问题,难定位到程序出错的位置,无法深入到程序的具体执行情况的局限性,进而导致行车安全性降低的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例一提供的一种程序崩溃事件复现方法的步骤流程图。
本发明提供的一种程序崩溃事件复现方法,包括以下步骤:
步骤101,当检测到出现崩溃程序时,从崩溃程序对应的环境变量读取程序属性信息,并获取崩溃程序对应的程序堆栈信息。
环境变量指的是在操作系统中用来指定操作系统运行环境的一些参数,在本实施例中指的是系统运行该崩溃程序所需要的环境参数,例如崩溃程序所起的作用以及程序所在的完整路径。
在本申请实施例中,Ubuntu系统在检测到出现崩溃程序时,从该崩溃程序对应的环境变量中读取程序属性信息,以及从Linux的标准输出中获取该崩溃程序对应的程序堆栈信息。
需要说明的是,在智能驾驶汽车中,程序属性信息包括但不限于该崩溃程序所归属的车辆号和崩溃程序名,程序堆栈信息指的是内存的映像,当程序崩溃时存储内存的相应信息,主要用于对程序进行调试,例如corefile文件。
步骤102,采用程序堆栈信息和程序属性信息生成崩溃堆栈文件。
在获取到程序堆栈信息和程序属性信息后,可以按照程序属性信息创建文件并进行命名,再将程序堆栈信息写入至创建的文件,以生成崩溃堆栈文件。
需要说明的是,在生成崩溃堆栈文件的同时可以将其写入到预设的磁盘位置,例如在智能驾驶汽车中,智能驾驶系统通常是运行在docker容器中,而崩溃堆栈文件corefile的保存属于主机host的行为,为此可以将主机host与容器的共享目录挂载在docker容器所在的磁盘位置,形成容器共享目录。
步骤103,响应接收到的程序标识信息,检索崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件。
程序标识信息指的是用于标识崩溃程序所对应的进程或线程的标识符,例如进程标识符PID和线程标识符TID,可以从Linux系统内的handler程序的程度参数中进行读取,handler程序用于处理corefile。
崩溃属性文件指的是包含了崩溃程序的部分属性的文件,用于记录崩溃程序所对应的崩溃属性以及程序崩溃时的运行状态,可以包括崩溃子属性文件和崩溃运行状态文件。
与此同时,若是接收到程序标识信息,则可以按照成本标识信息检索该崩溃程序所关联的程序数据库,以检索到对应的崩溃属性以及其他崩溃的相关信息,例如是否保存corefile、修复崩溃花费的时间以及该崩溃程序的运行信息等。
从程序数据库内检索到崩溃程序对应的文件后,由于文件对应的用途不同,为方便用户查看和使用上述文件,可以按照文件的类型分别进行格式转换,生成多个崩溃属性文件,以方便以不同的格式写入到上述崩溃堆栈文件所处的容器共享目录。
步骤104,当接收到输入的崩溃复现请求时,采用崩溃堆栈文件和崩溃属性文件构建崩溃程序对应的崩溃事件。
在具体实现中,上述崩溃堆栈文件和崩溃属性文件是为了能够对智能驾驶系统所出现的偶发性异常进行深入分析以进行故障定位,因此在生成崩溃堆栈文件和崩溃属性文件后,若是接收到用户输入的崩溃复现请求时,可以读取上述崩溃堆栈文件和崩溃属性文件,将其重新载入到linux系统进行崩溃程序所对应的崩溃过程进行重现,同时构建对应的崩溃事件供技术人员进行查看,从而实现对偶发性异常的有效复现。
在本申请实施例中,当检测到出现崩溃程序时,从崩溃程序对应的环境变量读取程序属性信息,并获取崩溃程序对应的程序堆栈信息,采用程序堆栈信息和程序属性信息生成崩溃堆栈文件,与此同时,响应接收到的程序标识信息,检索崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件,当接收到输入的崩溃复现请求时,采用崩溃堆栈文件和崩溃属性文件构建崩溃程序对应的崩溃事件。通过对崩溃程序对应的崩溃堆栈文件以及崩溃属性文件的有效采集,从而解决在车辆系统运行的过程中由于程序崩溃场景的偶发性所导致的程序运行稳定性降低,进而影响行车的安全性的技术问题,更为有效地实现对崩溃程序的场景复现,为后续程序运行稳定性以及行车安全性的提高提供数据基础。
请参阅图2,图2为本发明实施例二提供的一种程序崩溃事件复现方法的步骤流程图。
本发明提供的一种程序崩溃事件复现方法,包括以下步骤:
步骤201,当检测到出现崩溃程序时,从崩溃程序对应的环境变量读取程序属性信息,并获取崩溃程序对应的程序堆栈信息;
在本申请实施例中,步骤201的具体实施过程与步骤101类似,在此不再赘述。
可选地,在执行步骤201之前,方法还可以包括以下步骤S11-S13:
S11、响应在预设配置页面输入的功能启动指令,启动初始崩溃检测组件;
S12、当在配置页面接收到功能修改指令时,采用功能修改指令修改崩溃检测组件内的配置信息,得到目标崩溃检测组件;
S13、将目标崩溃检测组件内的检测线程复制至预设的挂载目录中,得到容器共享目录。
在本申请实施例中,以智能驾驶系统为例,在检测崩溃程序之前,需要先对智能驾驶系统进行配置。通过响应在配置页面上输入的功能启动指令,启动初始崩溃检测组件,同时在配置页面上输入对应的功能修改指令,通过该功能修改指令对崩溃检测组件内的配置信息进行功能性修改,以得到目标崩溃检测组件。与此同时可以将目标崩溃检测组件内的检测线程复制在预设的挂载目录中,得到容器共享目录,以方便检测线程在检测出现崩溃程序时,能够将崩溃堆栈文件以及崩溃属性文件进行及时缓存。
在具体实现中,以使用linux系统的智能驾驶系统为例,其智能驾驶系统运行在docker的容器中,此时上述功能启动指令可以为ulimit-S-c unlimited。通过上述功能启动指令启动主机的初始崩溃检测组件如coredump功能组件。同时若是在配置页面上接收到功能修改指令,如echo-n${desired_core_pattern}|sudo tee/proc/sys/kernel/core_pattern>/dev/null。此时可以通过上述功能修改指令对coredump功能组件内的corepattern进行修改。从而将handler的绝对路径写到承接corefile的程序的位置,并根据Linux的文档,选择需要的崩溃的应用程序相关的属性作为handler的输入参数,至此可以在handler中从标准输入接收到corefile的二进制内容,以及若干崩溃程序的信息,比如pid进程标识符、tid线程标识符和崩溃信号。
在本申请的另一个示例中,针对使用linux系统的智能驾驶系统,配置过程还可以通过以下代码方式实现:
1.获取检查当前主机的core pattern
2.比较当前pattern和希望值,不同则继续操作
3.创建hander目录和coredump相关文件的存储目录
4.将hander文件从车上软件拷贝至handler目录
5.打开coredump功能:ulimit-S-cunlimited
6.通过一下代码修改core_pattern:
echo-n${desired_core_pattern}|sudotee/proc/sys/kernel/core_pattern>/dev/null
7.修改core limit
步骤202,采用程序堆栈信息和程序属性信息生成崩溃堆栈文件;
可选地,程序属性信息包括归属车辆标识和崩溃时间戳,步骤202可以包括以下子步骤:
采用车辆标识和崩溃时间戳作为文件名称,创建初始堆栈文件;
将程序堆栈信息载入到初始堆栈文件,生成崩溃堆栈文件。
崩溃时间戳指的是记载检测到出现崩溃程序的时间的数据。
归属车辆标识指的是该崩溃程序所属的车辆对应的标识,例如车辆号码和车牌号码。
在本申请实施例中,程序属性信息包括归属车辆标识和崩溃时间戳,在获取到程序堆栈信息和程序属性信息,可以采用该车辆标识和崩溃时间戳作为文件名称创建初始堆栈文件,进一步将程序堆栈信息载入到该初始堆栈文件,以生成崩溃堆栈文件。
在具体实现中,上述创建得到崩溃堆栈文件的命名可以为“车号.时间戳.core.file”,与此同时,还可以通过direct IO方式将该崩溃堆栈文件写入到上述容器共享目录中。
可选地,程序标识信息包括进程标识符和线程标识符,程序数据库包括运行数据库和属性数据库,崩溃属性文件包括崩溃子属性文件和崩溃运行状态文件;
步骤203,响应接收到的进程标识符和线程标识符,将进程标识符和线程标识符作为检索字检索崩溃程序关联的属性数据库,确定对应的崩溃属性信息;
在接收到进程标识符和线程标识符时,可以按照该进程标识符和线程标识符,将其作为关键字检索崩溃程序关联的属性数据库,以确定崩溃程序在该次崩溃中的情况,比如是否保存corefile、崩溃修改需要花费的时间等,以确定对应的崩溃属性信息。
步骤204,将进程标识符、线程标识符和崩溃属性信息转换为键值对格式,生成崩溃子属性文件;
在检索得到崩溃属性信息后,为方便后续查找与使用,可以通过将进程标识符、线程标识符和崩溃属性信息转换为键值对格式,例如json格式,从而生成就崩溃子属性文件。
需要说明的是,上述崩溃子属性文件可以通过以下方式进行命名:“车号.时间戳.core.metadata”,同时将其写入至上述容器共享目录。
步骤205,采用进程标识符检索崩溃程序关联的运行数据库,确定对应的运行信息;
与此同时,可以采用进程标识符作为检索字检索崩溃程序关联的运行数据库,以从中确定该崩溃程序的各类运行信息。
步骤206,将运行信息转换为文本格式,生成崩溃运行状态文件。
在获取到运行信息后,为方便后续用户阅读与使用,可以将运行信息转换为文本格式,从而生成崩溃运行状态文件。
需要说明的是,崩溃运行状态文件的命名规则可以为:“车号.时间戳.core.proc”。在生成崩溃运行状态文件后,为方便后续提取,节省系统资源,可以将其写入到上述容器共享目录。
步骤207,当接收到输入的崩溃复现请求时,采用崩溃堆栈文件和崩溃属性文件构建崩溃程序对应的崩溃事件。
在本申请实施例中,上述步骤207的具体实施过程与步骤104类似,在此不再赘述。
进一步地,方法还可以包括以下步骤:
将崩溃堆栈文件和多个崩溃属性文件分别写入至预设容器共享目录。
在本发明的一个示例中,方法还包括以下步骤S21-S23:
S21、实时统计崩溃堆栈文件与崩溃属性文件的生成数量;
S22、当生成数量小于预设的生成阈值时,跳转执行采用程序堆栈信息和程序属性信息生成崩溃堆栈文件的步骤;
S23、当生成数量大于或等于生成阈值时,将多个崩溃属性文件分别写入至容器共享目录。
由于智能驾驶车辆配备的计算平台资源有限,因此在采集崩溃堆栈文件与崩溃属性文件的同时仍然需要关注系统负载,例如磁盘空间和读写效率。
在本申请实施例中,可以通过实时统计崩溃堆栈文件和崩溃属性文件的生成数量,若是生成数量小于预设的生成阈值时,则表明此时此磁盘的负载仍处于可写入范围内,此时可以跳转执行步骤202,继续进行崩溃堆栈文件和崩溃属性文件的生成和写入。若是生成数量大于或等于生成阈值时,此时表说明磁盘的负载过高,为在保证后续分析的有效性的同时减少磁盘负载,可以仅保存多个崩溃属性文件至容器共享目录,停止对崩溃堆栈文件的写入。
在具体实现中,可以在handler中加入对历史保存次数的检查机制,根据预设值限制保存每个应用程序corefile的次数,每个属性文件会存有是否保存当次的corefile,通过执行前读取所有host中已经存在的属性文件的个数来统计,如果个数小于限制的次数则保存corefile文件,否则只保存此次coredump的属性信息。其中,corefile包含了是程序崩溃时的内存、寄存器和调用信息。host机器是自动驾驶车辆上部署的计算机平台。
在本发明的另一个示例中,方法还包括以下步骤S31-S32:
S31、实时检测容器共享目录所属磁盘的剩余空间信息;剩余空间信息包括剩余空间比例和剩余空间数值;
S32、当剩余空间数值小于预设的数值阈值,或剩余空间比例小于预设的比例阈值时,停止执行将崩溃堆栈文件和多个崩溃属性文件分别写入至预设容器共享目录的步骤。
在本实施例中,还可以实时检测容器共享目录所属磁盘的剩余空间信息,如剩余空间比例和剩余空间数值。若是剩余空间数值小于预设的数值阈值,或剩余空间比例小于预设的比例阈值时,停止在容器共享目录写入崩溃堆栈文件和多个崩溃属性文件,从而保证系统的负载的运行正常。
若是剩余空间数值大于或等于预设的数值阈值,且剩余空间比例大于或等于预设的比例阈值,表明此时系统仍未过载,此时可以继续写入崩溃堆栈文件和崩溃属性文件。
在本申请实施例中,当检测到出现崩溃程序时,从崩溃程序对应的环境变量读取程序属性信息,并获取崩溃程序对应的程序堆栈信息,采用程序堆栈信息和程序属性信息生成崩溃堆栈文件,与此同时,响应接收到的程序标识信息,检索崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件,当接收到输入的崩溃复现请求时,采用崩溃堆栈文件和崩溃属性文件构建崩溃程序对应的崩溃事件。通过对崩溃程序对应的崩溃堆栈文件以及崩溃属性文件的有效采集,从而解决在车辆系统运行的过程中由于程序崩溃场景的偶发性所导致的程序运行稳定性降低,进而影响行车的安全性的技术问题,更为有效地实现对崩溃程序的场景复现,为后续程序运行稳定性以及行车安全性的提高提供数据基础。
请参阅图3,图3为本发明实施例三提供的一种程序崩溃事件复现装置的结构框图。
本发明实施例提供了一种程序崩溃事件复现装置,包括:
信息读取模块301,用于当检测到出现崩溃程序时,从崩溃程序对应的环境变量读取程序属性信息,并获取崩溃程序对应的程序堆栈信息;
崩溃堆栈文件生成模块302,用于采用程序堆栈信息和程序属性信息生成崩溃堆栈文件;
崩溃属性文件生成模块303,用于响应接收到的程序标识信息,检索崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件;
崩溃事件复现模块304,用于当接收到输入的崩溃复现请求时,采用崩溃堆栈文件和崩溃属性文件构建崩溃程序对应的崩溃事件。
可选地,程序属性信息包括归属车辆标识和崩溃时间戳;崩溃堆栈文件生成模块302具体用于:
采用车辆标识和崩溃时间戳作为文件名称,创建初始堆栈文件;
将程序堆栈信息载入到初始堆栈文件,生成崩溃堆栈文件。
可选地,程序标识信息包括进程标识符和线程标识符,程序数据库包括运行数据库和属性数据库,崩溃属性文件包括崩溃子属性文件和崩溃运行状态文件;崩溃属性文件生成模块303具体用于:
响应接收到的进程标识符和线程标识符,将进程标识符和线程标识符作为检索字检索崩溃程序关联的属性数据库,确定对应的崩溃属性信息;
将进程标识符、线程标识符和崩溃属性信息转换为键值对格式,生成崩溃子属性文件;
采用进程标识符检索崩溃程序关联的运行数据库,确定对应的运行信息;
将运行信息转换为文本格式,生成崩溃运行状态文件。
可选地,装置还包括:
文件写入模块,用于将崩溃堆栈文件和多个崩溃属性文件分别写入至预设容器共享目录。
可选地,装置还包括:
生成数量统计模块,用于实时统计崩溃堆栈文件与崩溃属性文件的生成数量;
跳转模块,用于当生成数量小于预设的生成阈值时,跳转执行采用程序堆栈信息和程序属性信息生成崩溃堆栈文件的步骤;
单独写入模块,用于当生成数量大于或等于生成阈值时,将多个崩溃属性文件分别写入至容器共享目录。
可选地,装置还包括:
剩余空间信息检测模块,用于实时检测容器共享目录所属磁盘的剩余空间信息;剩余空间信息包括剩余空间比例和剩余空间数值;
写入停止模块,用于当剩余空间数值小于预设的数值阈值,或剩余空间比例小于预设的比例阈值时,停止执行将崩溃堆栈文件和多个崩溃属性文件分别写入至预设容器共享目录的步骤。
可选地,装置还包括:
组件启动模块,用于响应在预设配置页面输入的功能启动指令,启动初始崩溃检测组件;
配置修改模块,用于当在配置页面接收到功能修改指令时,采用功能修改指令修改崩溃检测组件内的配置信息,得到目标崩溃检测组件;
线程复制模块,用于将目标崩溃检测组件内的检测线程复制至预设的挂载目录中,得到容器共享目录。
本发明实施例提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本发明任一实施例所述的程序崩溃事件复现方法的步骤。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如本发明任一实施例所述的程序崩溃事件复现方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种程序崩溃事件复现方法,其特征在于,包括:
当检测到出现崩溃程序时,从所述崩溃程序对应的环境变量读取程序属性信息,并获取所述崩溃程序对应的程序堆栈信息;
采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件;
响应接收到的程序标识信息,检索所述崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件;
当接收到输入的崩溃复现请求时,采用所述崩溃堆栈文件和所述崩溃属性文件构建所述崩溃程序对应的崩溃事件。
2.根据权利要求1所述的方法,其特征在于,所述程序属性信息包括归属车辆标识和崩溃时间戳;所述采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件的步骤,包括:
采用所述车辆标识和所述崩溃时间戳作为文件名称,创建初始堆栈文件;
将所述程序堆栈信息载入到所述初始堆栈文件,生成崩溃堆栈文件。
3.根据权利要求1所述的方法,其特征在于,所述程序标识信息包括进程标识符和线程标识符,所述程序数据库包括运行数据库和属性数据库,所述崩溃属性文件包括崩溃子属性文件和崩溃运行状态文件;所述响应接收到的程序标识信息,检索所述崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件的步骤,包括:
响应接收到的进程标识符和线程标识符,将所述进程标识符和所述线程标识符作为检索字检索所述崩溃程序关联的属性数据库,确定对应的崩溃属性信息;
将所述进程标识符、所述线程标识符和所述崩溃属性信息转换为键值对格式,生成崩溃子属性文件;
采用所述进程标识符检索所述崩溃程序关联的运行数据库,确定对应的运行信息;
将所述运行信息转换为文本格式,生成崩溃运行状态文件。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
将所述崩溃堆栈文件和多个所述崩溃属性文件分别写入至预设容器共享目录。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
实时统计所述崩溃堆栈文件与所述崩溃属性文件的生成数量;
当所述生成数量小于预设的生成阈值时,跳转执行所述采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件的步骤;
当所述生成数量大于或等于所述生成阈值时,将多个所述崩溃属性文件分别写入至所述容器共享目录。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
实时检测所述容器共享目录所属磁盘的剩余空间信息;所述剩余空间信息包括剩余空间比例和剩余空间数值;
当所述剩余空间数值小于预设的数值阈值,或所述剩余空间比例小于预设的比例阈值时,停止执行所述将所述崩溃堆栈文件和多个所述崩溃属性文件分别写入至预设容器共享目录的步骤。
7.根据权利要求1所述的方法,其特征在于,在所述当检测到出现崩溃程序时,从所述崩溃程序对应的环境变量读取程序属性信息,并获取所述崩溃程序对应的程序堆栈信息的步骤之前,所述方法还包括:
响应在预设配置页面输入的功能启动指令,启动初始崩溃检测组件;
当在所述配置页面接收到功能修改指令时,采用所述功能修改指令修改所述崩溃检测组件内的配置信息,得到目标崩溃检测组件;
将所述目标崩溃检测组件内的检测线程复制至预设的挂载目录中,得到容器共享目录。
8.一种程序崩溃事件复现装置,其特征在于,包括:
信息读取模块,用于当检测到出现崩溃程序时,从所述崩溃程序对应的环境变量读取程序属性信息,并获取所述崩溃程序对应的程序堆栈信息;
崩溃堆栈文件生成模块,用于采用所述程序堆栈信息和所述程序属性信息生成崩溃堆栈文件;
崩溃属性文件生成模块,用于响应接收到的程序标识信息,检索所述崩溃程序关联的程序数据库并进行格式转换,生成多个崩溃属性文件;
崩溃事件复现模块,用于当接收到输入的崩溃复现请求时,采用所述崩溃堆栈文件和所述崩溃属性文件构建所述崩溃程序对应的崩溃事件。
9.一种电子设备,其特征在于,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-7任一项所述的程序崩溃事件复现方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被执行时实现如权利要求1-7任一项所述的程序崩溃事件复现方法。
CN202210752772.5A 2022-06-29 2022-06-29 一种程序崩溃事件复现方法、装置、设备和介质 Pending CN115016973A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210752772.5A CN115016973A (zh) 2022-06-29 2022-06-29 一种程序崩溃事件复现方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210752772.5A CN115016973A (zh) 2022-06-29 2022-06-29 一种程序崩溃事件复现方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN115016973A true CN115016973A (zh) 2022-09-06

Family

ID=83078505

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210752772.5A Pending CN115016973A (zh) 2022-06-29 2022-06-29 一种程序崩溃事件复现方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN115016973A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115858366A (zh) * 2022-12-13 2023-03-28 北京水木羽林科技有限公司 一种基于文法生成的数据库自动测试方法及系统
CN116303101A (zh) * 2023-05-19 2023-06-23 建信金融科技有限责任公司 测试案例生成方法、装置和设备
CN116909800A (zh) * 2023-09-13 2023-10-20 深圳市智慧城市科技发展集团有限公司 崩溃信息的定位方法、崩溃信息的定位装置及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115858366A (zh) * 2022-12-13 2023-03-28 北京水木羽林科技有限公司 一种基于文法生成的数据库自动测试方法及系统
CN115858366B (zh) * 2022-12-13 2024-03-29 北京水木羽林科技有限公司 一种基于文法生成的数据库自动测试方法及系统
CN116303101A (zh) * 2023-05-19 2023-06-23 建信金融科技有限责任公司 测试案例生成方法、装置和设备
CN116303101B (zh) * 2023-05-19 2023-08-15 建信金融科技有限责任公司 测试案例生成方法、装置和设备
CN116909800A (zh) * 2023-09-13 2023-10-20 深圳市智慧城市科技发展集团有限公司 崩溃信息的定位方法、崩溃信息的定位装置及存储介质
CN116909800B (zh) * 2023-09-13 2024-03-08 深圳市智慧城市科技发展集团有限公司 崩溃信息的定位方法、崩溃信息的定位装置及存储介质

Similar Documents

Publication Publication Date Title
CN115016973A (zh) 一种程序崩溃事件复现方法、装置、设备和介质
CN109474488B (zh) 接口测试方法、装置及计算机设备
KR101860674B1 (ko) 크래시 리포트 그룹핑 방법, 서버 및 컴퓨터 프로그램
CN114860487A (zh) 一种内存故障识别方法及一种内存故障隔离方法
CN114020432A (zh) 任务异常处理方法、装置及任务异常处理系统
CN114500249B (zh) 一种根因定位方法和装置
KR102256894B1 (ko) 크래시 리포트 그룹핑 방법, 서버 및 컴퓨터 프로그램
CN110620698A (zh) 一种软件异常诊断方法、装置、设备及系统
CN112650613B (zh) 一种错误信息处理方法、装置、电子设备及存储介质
CN115186001A (zh) 一种补丁处理方法和装置
CN114415970A (zh) 分布式存储系统的磁盘故障处理方法、装置及服务器
CN111797067B (zh) 针对文件读写操作的文件路径的获取方法及装置
CN115114095A (zh) 数据备份方法、系统、装置及存储介质
CN111400128B (zh) 日志管理方法、装置、计算机设备及存储介质
CN113868137A (zh) 埋点数据的处理方法、装置、系统和服务器
CN110928945B (zh) 一种针对数据库的数据处理方法及装置,数据处理系统
CN113760696A (zh) 一种程序问题定位方法、装置、电子设备和存储介质
CN117149667B (zh) 异常数据获取方法、装置、设备和计算机可读存储介质
CN111813695A (zh) 代码检测方法、装置、介质及电子设备
CN113468029A (zh) 日志管理方法、装置、电子设备和可读存储介质
CN112286804B (zh) 系统的调试方法、装置、设备和介质
CN115658362A (zh) 一种确定硬盘状态的方法以及相关设备
CN113377719B (zh) 一种系统异常关机时间获取方法及系统
CN113032242B (zh) 数据标记方法及装置,计算机存储介质和电子设备
CN115934477A (zh) 软件故障信息的收集方法、电子设备及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination