CN109582542B - 一种嵌入式系统核心转储的方法 - Google Patents
一种嵌入式系统核心转储的方法 Download PDFInfo
- Publication number
- CN109582542B CN109582542B CN201811472122.5A CN201811472122A CN109582542B CN 109582542 B CN109582542 B CN 109582542B CN 201811472122 A CN201811472122 A CN 201811472122A CN 109582542 B CN109582542 B CN 109582542B
- Authority
- CN
- China
- Prior art keywords
- core dump
- information
- core
- dump
- error
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于计算机系统软件专业技术领域,基于嵌入式开发环境,采用主机端配置,目标机端实现的软件结构,根据核心转储类型,支持对系统内存及程序信息的获取,生成并保存对应的核心转储信息,更好地解决了嵌入式系统错误现场捕获、错误信息存储和错误分析困难等问题。本发明支持对系统的图形化配置,在主机端提供图形化配置界面,提高了核心转储配置的易用性、直观性;支持从操作系统获取核心转储信息,具体包括程序运行时的内存,寄存器状态,堆栈状态,内存管理信息以及各种函数调用堆栈信息,提高了核心转储信息获取的可靠性、完整性;支持对输出核心转储信息的存储,提高了核心转储信息的安全性,进而提高了错误定位、错误排查的效率。
Description
技术领域
本发明属于计算机系统软件专业技术领域,涉及一种嵌入式系统核心转储的方法。
背景技术
随着嵌入式操作系统的高速发展,各类基于嵌入式操作系统的平台已广泛应用在航空航天、工业控制、通信卫星等重要领域当中。此时,嵌入式操作系统的安全性和可靠性要求也随着其应用规模的扩大而越来越高。在嵌入式设备中,系统可以使用的内存空间往往十分有限,因此需要程序设计者对嵌入式系统的内存空间做出精细的分配来保证内存访问的安全性。但即便如此,在程序运行过程中仍会产生某些难以预料的错误,当系统核心进程产生无法恢复的错误时,为了避免系统相关资源受到更大损害,操作系统都会强行停止运行,与之类似,操作系统可以在一个应用进程产生错误时,在不影响其他进程的情况下,中止此进程的运行。在这些情况下,对于嵌入式系统开发或应用人员而言,需要一种方法获得错误发生现场内存中的各种结构及其它重要信息保存下来,据此来分析错误原因。这样,为了快速有效的定位程序错误,提高故障调试效率,核心转储技术的相关研究应运而生。
核心转储技术是一种将嵌入式系统产生错误时的相关信息进行获取与保存的一种技术,通过该保存信息可以进行错误分析。目前,在嵌入式操作系统领域中,Linux和WindRiver公司的VxWorks操作系统均对核心转储技术有所实现。二者在执行核心转储操作时,均会生成一个保留当前进程信息的文件,其中包含了程序产生错误时操作系统的相关信息。但Linux在实现过程中存在用户只能通过命令行方式实现核心转储的配置与执行,不方便记忆与操作的问题。而VxWorks在实现过程中则存在对核心转储信息存储方面的缺陷,表现为它通过错误监控与报告工具来实现核心转储功能,该工具将得到的核心转储信息默认储存在内存的高地址空间中,这样在系统发生复位时核心转储信息会消失,导致无法查看的问题,并且,若要将核心转储信息保存在其它存储设备中则需要用户自行实现,降低了错误分析效率。
针对上述问题,提出了一种嵌入式系统核心转储技术方案,研制了核心转储工具,提供了图形化配置界面和核心转储服务,实现在嵌入式系统发生错误时的核心转储功能以及对核心转储信息的保存功能。
发明内容
本发明的目的
本文提出了一种嵌入式系统核心转储的方法。该方法基于嵌入式开发环境,支持对系统的图形化配置,支持在系统发生错误退出时对系统内存关键信息的获取与存储,为程序错误分析提供了有力的支撑,开发人员可据此定位错误位置,分析错误,更好地解决了嵌入式系统错误现场捕获、错误信息存储和错误分析困难等问题,有效地提高了嵌入式系统的错误分析效率。
本发明的技术方案
一种嵌入式系统核心转储的方法,其特征在于:包括以下几个步骤:
步骤一:核心转储工具包含核心转储插件和核心转储服务两部分,其中核心转储插件用于对核心转储操作进行配置,在主机端运行;核心转储服务实现核心转储操作,与操作系统共同编译生成可执行文件,下载至目标机运行;
步骤二:在操作系统启动核心转储服务时,首先从操作系统配置信息中读取核心转储类型、核心转储信息输出方式两项配置;
步骤三:初始化核心转储:在系统初始化任务中调用核心转储初始化;
步骤四:进行核心转储操作:
确定核心转储数据:将核心转储分为两种类型,系统级核心转储与应用级核心转储,在进行核心转储操作前,根据配置中核心转储类型确定所需转储的数据,进入核心转储操作;
执行核心转储操作:调取核心转储接口,核心转储接口从操作系统及应用程序中获得程序运行时的内存信息、寄存器状态、堆栈状态、内存管理信息以及各种函数调用堆栈信息,在应用级核心转储中,保存现场,以便在核心转储生成后恢复现场;
步骤五:输出核心转储信息:通过核心转储工具,将核心转储信息通过串口输出或存储到Flash设备。
所述核心转储插件向用户提供图形化的界面操作,实现核心转储配置功能。
所述核心转储服务在目标机端运行,指通过读取配置、核心转储初始化、进行核心转储操作,并将得到的核心转储信息通过串口输出或存储在Flash设备上,实现核心转储服务功能。
本发明的有益效果
本发明支持对系统的图形化配置,在主机端提供图形化配置界面,提高了核心转储配置的易用性、直观性;支持从操作系统获取核心转储信息,具体包括程序运行时的内存,寄存器状态,堆栈状态,内存管理信息以及各种函数调用堆栈信息,提高了核心转储信息获取的可靠性、完整性;支持对输出核心转储信息的存储,提高了核心转储信息的安全性,进而提高了错误定位、错误排查的效率。
附图说明
图1为本发明的系统结构图。核心转储工具包含核心转储插件和核心转储服务两部分,其中:a.核心转储插件用于对核心转储操作进行相关配置,在主机开发环境平台上运行;b.核心转储服务用于实现核心转储操作,与操作系统共同编译生成可执行文件,下载至目标机上运行。
图2为本发明的核心转储服务流程图。
具体实施方式
本文发明了一种核心转储工具,通过该工具来实现核心转储功能。核心转储工具所采用的系统结构如图1所示,分为主机端和目标机端两部分。
主机端由核心转储插件组成,以插件的形式集成到基于Eclipse的开发环境平台上,属于开发环境的一部分。核心转储插件面向用户,提供图形化的界面操作,实现对核心转储的配置功能。
目标机端由核心转储服务组成,是核心转储工具的主要部分,核心转储服务由操作系统启动,通过读取配置、核心转储初始化、从操作系统及应用程序获取所需数据来进行核心转储操作,并将得到的核心转储信息通过串口输出或存储在Flash设备上,实现核心转储服务功能。
在操作系统启动核心转储服务时,核心转储工具将按图2所示流程完成核心转储服务,具体步骤见下:
1.读取配置信息
从操作系统配置信息中读取核心转储类型、核心转储信息输出方式两项配置。
2.核心转储初始化
在系统初始化任务中调用核心转储初始化,其调用在内核、内存、系统控制、应用、系统调用、共享数据、共享库、MMU、错误处理、调试、中断、信号量等操作之后。其初始化主要包含以下步骤:
(1).检查用于保存核心转储信息的存储空间内是否存在旧的核心转储信息,若存在先将其清除。
(2).核心转储内存空间初始化。确定核心转储内存空间页大小。初始化内存空间,如果有虚拟内存管理,则从虚拟内存页申请,如果没有,则申请一个页面,然后初始化核心转储存储块链表。从核心转储内存空间中分配核心转储栈空间。
(3).核心转储结构初始化。初始化核心转储用到的数据结构,注册处理各种函数。初始化接口指针和标志,包括信息采集接口、系统物理内存基址及大小、信号量、计数、使能校验、校验函数、写函数等。
(4).核心转储存储设备初始化。初始化Flash存储器。将其空间按核心转储内存块的格式分配。
(5).其他初始化。主要有挂接校验和函数、内存空间保护使能等。
3.进行核心转储操作
(1).确定核心转储数据。核心转储是基于嵌入式操作系统的,在操作系统内核或应用运行发生运行错误时,将由操作系统启动核心转储服务,所得到的核心转储信息中包含该时刻的系统状态。具体来说,当出现以下三种类型错误时,会启动核心转储服务:
a.嵌入式操作系统在初始化、核心运行及系统调用过程中发生无法处理的错误;
b.应用程序发生除零、内存访问越界、非法指针、缓冲区溢出等内存非法访问错误;
c.多线程读写的变量数据未加锁保护。比如说,全局变量,静态变量等。主要针对会被多个线程同时访问的全局数据。
本文将核心转储分为两种类型:由a触发的核心转储称为系统级核心转储,由b、c触发的核心转储称为应用级核心转储。
针对系统级与应用级两种类型的核心转储所需要转储的数据有所区别,其具体数据范围见表1。在执行核心转储操作前,应根据配置中核心转储类型确定所需转储的数据。
表1系统级和应用级核心转储数据
(2).执行核心转储操作。在确定了核心转储所需的数据后,进入核心转储操作。调取核心转储接口,该接口从操作系统及应用程序中获得程序运行时的内存信息、寄存器状态、堆栈状态、内存管理信息以及各种函数调用堆栈信息。在应用级核心转储中还将保存现场,以便在核心转储信息生成后恢复现场。
4.输出获取的核心转储信息
通过核心转储操作得到的核心转储信息首先存储在内存空间中。但是如果此时处理器发生掉电或复位时保存在内存中的核心转储信息就会失去。针对这种情况,核心转储工具通过读取配置信息,提供了将核心转储信息通过串口输出和存储到Flash设备上的功能,实现核心转储信息的存储。
核心转储工具在嵌入式开发环境中以组件的形式提供给用户。在使用时,用户应在开发环境中选择核心转储工具,使其参与到操作系统编译过程中,最终随着编译生成的可执行文件下载至目标机上运行。具体步骤如下:
1.开发嵌入式程序;
2.在开发环境配置中选择核心转储工具;
3.在核心转储工具界面配置核心转储类型:系统级或应用级;
4.在核心转储工具界面配置核心转储信息输出方式:串口输出或存储在Flash设备中;
5.编译并将生成的可执行文件下载到目标机上运行;
6.核心转储工具使能:当目标机运行中系统发生错误时,操作系统会启动核心转储服务,先根据3中的配置获取核心转储类型后执行核心转储操作,并将得到的核心转储信息根据4中的配置输出。
Claims (3)
1.一种嵌入式系统核心转储的方法,其特征在于,包括以下步骤:
步骤一:核心转储工具包含核心转储插件和核心转储服务两部分,其中核心转储插件用于对核心转储操作进行配置,在主机端运行;核心转储服务实现核心转储操作,与操作系统共同编译生成可执行文件,下载至目标机运行;
步骤二:在操作系统启动核心转储服务时,首先从操作系统配置信息中读取核心转储类型、核心转储信息输出方式两项配置;
步骤三:初始化核心转储:在系统初始化任务中调用核心转储初始化;
步骤四:进行核心转储操作:
确定核心转储数据:将核心转储分为两种类型,系统级核心转储与应用级核心转储,在进行核心转储操作前,根据配置中核心转储类型确定所需转储的数据,进入核心转储操作;
执行核心转储操作:调取核心转储接口,核心转储接口从操作系统及应用程序中获得程序运行时的内存信息、寄存器状态、堆栈状态、内存管理信息以及各种函数调用堆栈信息,在应用级核心转储中,保存现场,以便在核心转储生成后恢复现场;
步骤五:输出核心转储信息:通过核心转储工具,将核心转储信息通过串口输出或存储到Flash设备。
2.根据权利要求1所述的一种嵌入式系统核心转储的方法,其特征在于:所述核心转储插件向用户提供图形化的界面操作,实现核心转储配置功能。
3.根据权利要求1所述的一种嵌入式系统核心转储的方法,其特征在于:所述核心转储服务在目标机端运行,指通过读取配置、核心转储初始化、进行核心转储操作,并将得到的核心转储信息通过串口输出或存储在Flash设备上,实现核心转储服务功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811472122.5A CN109582542B (zh) | 2018-12-04 | 2018-12-04 | 一种嵌入式系统核心转储的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811472122.5A CN109582542B (zh) | 2018-12-04 | 2018-12-04 | 一种嵌入式系统核心转储的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109582542A CN109582542A (zh) | 2019-04-05 |
CN109582542B true CN109582542B (zh) | 2023-02-21 |
Family
ID=65926995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811472122.5A Active CN109582542B (zh) | 2018-12-04 | 2018-12-04 | 一种嵌入式系统核心转储的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109582542B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147294B (zh) * | 2019-05-23 | 2023-10-03 | Oppo广东移动通信有限公司 | 调试信息的获取方法、装置、终端及计算机可读存储介质 |
CN111563000B (zh) * | 2020-04-28 | 2023-08-18 | 深圳市震有软件科技有限公司 | 一种文件生成方法、智能终端及存储介质 |
CN113434325A (zh) * | 2021-07-01 | 2021-09-24 | 斑马网络技术有限公司 | 一种核心转储调试的方法、电子设备及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929747A (zh) * | 2012-11-05 | 2013-02-13 | 中标软件有限公司 | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 |
CN106030546A (zh) * | 2014-02-28 | 2016-10-12 | 华为技术有限公司 | 计算机程序的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870443B2 (en) * | 2008-10-23 | 2011-01-11 | Dell Products L.P. | Method to isolate crash of an embedded multi-threaded application to a shared library call without core dump files or debugger |
CN102063367B (zh) * | 2010-10-29 | 2013-07-17 | 凌阳科技股份有限公司 | 针对当机程序的离线分析方法及装置 |
US8799716B2 (en) * | 2012-01-18 | 2014-08-05 | International Business Machines Corporation | Heap dump occurrence detection |
-
2018
- 2018-12-04 CN CN201811472122.5A patent/CN109582542B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929747A (zh) * | 2012-11-05 | 2013-02-13 | 中标软件有限公司 | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 |
CN106030546A (zh) * | 2014-02-28 | 2016-10-12 | 华为技术有限公司 | 计算机程序的方法 |
Non-Patent Citations (2)
Title |
---|
JVM性能分析⼯具之-- Eclipse Memory Analyzer tool(MAT)(⼆);xcbeyond;《https://mp.weixin.qq.com/s/OR0d_KHYk540pVDqLdpV6A》;20180514;第1-9页 * |
Linux应用程序调试技术的研究;彭闻宇等;《嵌入式操作系统应用》;20061231;第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109582542A (zh) | 2019-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8769504B2 (en) | Method and apparatus for dynamically instrumenting a program | |
US7774636B2 (en) | Method and system for kernel panic recovery | |
US11645068B2 (en) | Method for implementing function jump, apparatus, and computer storage medium | |
CN109582542B (zh) | 一种嵌入式系统核心转储的方法 | |
US20080127117A1 (en) | Method and apparatus for instrumentation in a multiprocessing environment | |
US20150150024A1 (en) | Method of detecting stack overflows and processor for implementing such a method | |
CN107450964B (zh) | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 | |
CN106055481B (zh) | 计算机程序的测试方法及装置 | |
US20240045787A1 (en) | Code inspection method under weak memory ordering architecture and corresponding device | |
CN110955598A (zh) | 一种内核态程序的断点处理方法及装置 | |
CN114090434B (zh) | 一种代码调试方法、装置、计算机设备和存储介质 | |
Seo et al. | A profiling method by PCB hooking and its application for memory fault detection in embedded system operational test | |
CN109885489A (zh) | 驱动程序中数据竞争检测方法及装置 | |
US8230413B2 (en) | Detecting incorrect versions of files | |
CN118567971A (zh) | 用于测试计算机程序的方法 | |
US20210011717A1 (en) | Verified Stack Trace Generation And Accelerated Stack-Based Analysis With Shadow Stacks | |
CN111931191A (zh) | Linux平台二进制软件堆溢漏洞动态检测方法及系统 | |
CN116909819A (zh) | 一种处理器调试方法、装置、计算机设备及处理器 | |
CN116450398A (zh) | 异常回溯方法、装置、设备和介质 | |
CN102508715B (zh) | 一种基于多线程的对象调用方法和装置 | |
US8949868B2 (en) | Methods, systems and computer program products for dynamic linkage | |
EP4222603B1 (en) | Verified stack trace generation and accelerated stack-based analysis with shadow stacks | |
CN113535249B (zh) | 数据处理方法、装置、设备、存储介质及程序产品 | |
KR100928865B1 (ko) | 컴퓨터 시스템에서의 스택 확장 및 보호 방법과 그 장치 | |
Jabeen et al. | Fault simulation and memory leak detection over custom kernel module by using KEDR |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |