掌桥专利:专业的专利平台
掌桥专利
首页

一种嵌入式系统核心转储的调试装置和方法

文献发布时间:2023-06-19 10:38:35


一种嵌入式系统核心转储的调试装置和方法

技术领域

本发明实施例涉及通信技术领域,尤其涉及一种嵌入式系统核心转储的调试装置和方法。

背景技术

核心转储是操作系统遇到异常后,将异常现场内存信息、寄存器信息和出错任务等信息通过一定的格式保存为核心转储文件,并通过调试器对核心转储文件进行分析,以确定造成操作系统出错的原因。

针对嵌入式操作系统,一般采用GDB(GNU Debugger)调试器对获取的核心转储文件进行分析并根据分析结果展示异常原因,但是由于不同的嵌入式操作系统会对应不同格式的核心转储文件,因此在针对不同格式的核心转储文件进行分析时,需要对开源的、功能复杂的并且代码量较大的GDB调试器进行修改,从而增加了核心转储的实现的困难以及开发成本。

发明内容

本发明实施例提供了一种嵌入式系统核心转储的调试装置和方法,以实现通过本地调试适配器对不同格式嵌入式系统核心转储文件的解析,并根据调试器的调试指令将解析结果反馈给调试器,以减少核心转储的实现困难以及开发成本。

第一方面,本发明实施例提供了一种嵌入式系统核心转储的调试装置,包括:调试器和本地调试适配器,调试器被配置为远程调试模式,以通过远程通信方式与位于本地的本地调试适配器建立通信连接;

调试器,用于向本地调试适配器发送调试指令,以及接收本地调试适配器发送的异常信息;

本地调试适配器,用于对嵌入式系统的核心转储文件进行解析获得异常信息,并根据调试指令将异常信息发送给调试器。

第二方面,本发明实施例提供了一种嵌入式系统核心转储的调试方法,应用在包括调试器和本地调试适配器的调试装置中,其中,调试器被配置为远程调试模式,以通过远程通信方式与本地的本地调试适配器建立通信连接,包括:

调试器向本地调试适配器发送调试指令;

本地调试适配器对嵌入式系统的核心转储文件进行解析获得异常信息,并根据调试指令将异常信息发送给调试器;

调试器接收本地调试适配器发送的异常信息。

本发明实施例的技术方案,通过增加本地调试适配器对嵌入式系统的核心转储文件进行解析获得异常信息,调试器只需采用远程调试模式获取异常信息即可,避免了直接使用调试器进行调试解析,需要对调试器进行大量代码修改以适配不同格式转储文件的解析,从而增加适配难度和成本的问题,所以利用本发明实施例所述方案能够减少核心转储的实现困难以及开发成本。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1是本发明实施例一提供的嵌入式系统核心转储的调试装置结构示意图;

图2是本发明实施例二提供的一种嵌入式系统核心转储的调试装置结构示意图;

图3是本发明实施例三提供的嵌入式系统核心转储的调试方法的流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、软件实现、硬件实现等等。

本发明实施例可适用于对嵌入式核心转储进行调试的情况,嵌入式操作系统,一般采用GDB调试器对获取的核心转储文件进行分析并根据分析结果展示异常原因,但是由于不同的嵌入式操作系统会对应不同格式的核心转储文件,因此在针对不同格式的核心转储文件进行分析时,需要对开源的、功能复杂的并且代码量较大的GDB调试器进行修改,从而增加了核心转储的实现的困难以及开发成本。本发明实施例的技术方案,提供了一种嵌入式系统核心转储的调试装置。该装置包括:调试器和本地调试适配器,调试器被配置为远程调试模式,以通过远程通信方式与位于本地的本地调试适配器建立通信连接。从而通过增加本地调试适配器对嵌入式系统的核心转储文件进行解析获得异常信息,调试器只需采用远程调试模式获取异常信息即可,避免了直接使用调试器进行调试解析,需要对调试器进行大量代码修改以适配不同格式转储文件的解析,从而增加适配难度和成本的问题,所以利用本发明实施例所述方案能够减少核心转储的实现困难以及开发成本。

实施例一

图1是本发明实施例提供的嵌入式系统核心转储的调试装置,本实施例可适用于对嵌入式核心转储文件进行解析的情况,如图1所示,该装置具体包括:

调试器11和本地调试适配器12,并且调试器12被配置为远程调试模式,以通过远程通信方式与位于本地的本地调试适配器建立通信连接。

其中,调试器12用于向本地调试适配器发送调试指令,以及接收本地调试适配器发送的异常信息;本地调试适配器11用于对嵌入式系统的核心转储文件进行解析获得异常信息,并根据调试指令将异常信息发送给调试器12。

具体的说,本实施方式主要针对是嵌入式操作系统,其中,嵌入式操作系统的类型包括:嵌入式Linux、Windows CE、Windows XP Embedded、Vxworks、Android、iOS、UNIX等,本实施方式中并不限定嵌入式操作系统的具体类型。在嵌入式操作系统正常运行的过程中,如果出现应用程序的异常终止,则针对不同的嵌入式操作系统会生成不同格式的核心转储文件,以对异常时刻的相关数据进行保存,例如,针对嵌入式Linux操作系统所生成的核心转储文件的格式为.core dump,UNIX操作系统所生成的核心转储文件的格式为.elf,当然,本实施方式中仅是举例进行说明,而并不对每个嵌入式操作系统所生成的核心转储文件的格式进行限定。

可选的,通过远程通信方式与位于本地的本地调试适配器建立通信连接,包括:调试器通过向本地调试适配器发送连接命令,实现与本地调试适配器建立通信连接;其中,连接命令中包括本地调试适配器的通信端口信息。

其中,本地调试适配器所位于的宿主机上会提供传输控制协议(TransmissionControl Protocol,TCP)服务器,因此调试器在向本地调试适配器发送调试指令之前,会基于TCP服务器通过远程通信方式首先与本地调试适配器建立通信连接。例如,调试器向本地调试适配器发送连接命令target remote127.0.0.1:2332,其中,在连接命令中包括本地调试适配器的通信端口信息为:通信端口2332,本地调试适配器在接收到连接命令后,会通过调用通信端口2332与调试器建立通信连接。

其中,本实施方式中的异常信息包括:寄存器信息、内存信息和任务进程;而调试指令所对应的调试类型具体包括:寄存器调试、内存调试和任务进程调试。因此本实施方式中的调试器在确定调试类型后,向本地调试适配器发送与调试类型对应的调试指令,而本地调试适配器对嵌入式系统的核心转储文件进行解析获得异常信息后,则根据调试指令向调试器反馈对应类型的异常信息。因此本实施方式中的调试器通过与本地调试适配器的远程通信连接,实现了调试器的远程调试功能,即不直接通过调试器本身完成核心转储文件的解析,而将解析工作转由本地调试适配器完成,调试适配器仅实现将解析结果进行展示等基本的处理动作,以供运维人员根据异常信息的展示结果确定造成故障的原因,并进行故障的排除,保证嵌入式操作系统的正常运行。

本发明实施例的技术方案,通过增加本地调试适配器预先对嵌入式系统的核心转储文件进行解析获得异常信息,调试器采用远程调试模式获取异常信息,而无需通过对调试器大量代码的修改以完成对核心转储文件的解析,从而减少了核心转储的实现困难以及开发成本。

实施例二

图2为是本发明实施例提供的一种嵌入式系统核心转储的调试装置,本实施例以上述实施例为基础,在本实施例中,对本地调试适配器11的结构进行具体说明。

如图2所示,本地调试适配器11包括:转储文件解析器111、协议调试模块112和本地网络通信服务模块。其中,转储文件解析器111,用于对嵌入式系统的核心转储文件进行解析获得异常信息;协议调试模块112,用于对异常信息按照调试器支持的协议格式进行协议适配处理;本地网络通信服务模块113,用于与调试器建立通信连接,并将协议适配处理后的异常信息发送给调试器。本地调试适配器通过内部三个结构的相互交互能够完成对不同格式的核心转储文件的解析,并将解析所获得的异常信息按照调试器所支持的协议格式传输给调试器。

其中,本实施方式中的调试器具体包括GNU调试器(GNU Debugger,GDB),而调试器支持的协议格式包括GDB标准远程通信协议(Remote Serial Protocol,RSP),并且协议调试模块与本地网络通信服务模块之间采用建模接口(Modeling Interface,MI)协议进行通信。

可选的,转储文件解析器支持对一种或多种格式的核心转储文件的解析操作;转储文件解析器按照异常信息的类型为协议调试模块提供不同类型的异常信息调用接口。

具体的说,本实施方式中的核心转储文件解析器,具体用于获取嵌入式系统所生成的核心转储文件,并支持对一种或多种格式的核心转储文件的解析操作,例如,在确定所获取的是嵌入式Linux操作系统所生成的核心转储文件,通过对核心转储文件进行识别,确定所获取的核心转储文件的格式为.core dump。由于针对不同格式类型的核心转储文件对应不同的解析方式,因此转储文件解析器具体可以通过查询解析列表的方式根据格式类型确定解析方式,其中,在解析列表中具体可以包括转储文件的格式类型与解析方式的对应关系。并且在解析方式中具体是针对部分不支持的格式类型,可以对转储文件解析器中所包含的解析程序代码中的指定内容进行修改以适配不同的格式,当然,当转储文件的格式类型是调试器所支持的情况时,通常并不需要对解析程序代码进行修改。

需要说明的是,虽然本申请实施方式中在确定解析方式的过程中涉及到了对解析程序代码的修改,但由于转储文件解析器功能的单一性,因此转储文件解析器的修改相对于大型复杂的调试器的修改,不论是修改方式和修改内容都要简单的多。

其中,转储文件解析器通过所确定的解析方式对所获取的核心转储文件进行解析,获得异常信息。本实施方式中的异常信息是包括嵌入式操作系统出现问题时刻所对应的寄存器信息、内存信息和任务进程等信息。并且转储文件解析器会按照异常信息的类型为协议调试模块提供不同类型的异常信息调用接口。例如,针对寄存器信息会提供读写寄存器调用接口、针对内存信息会提供读写内存调用接口、针对任务进程信息会提供读写任务进程调用接口,并且上述各个接口都是支持RSP协议的。

可选的,调试器,具体用于确定调试类型,并根据调试类型向本地调试适配器的本地网络通信服务模块发送与调试类型对应的调试指令;本地网络通信服务模块,具体用于在接收到调试指令时,调用协议调试模块,获取与调试类型对应的异常信息后,发送到调试器;协议调试模块,具体用于根据调试指令对应的调试类型,调用转储文件解析器提供的与调试类型对应的异常信息调用接口,通过调用接口获取对应类型的异常信息,并发送到本地网络通信服务模块。

具体的说,由于调试类型包括寄存器调试、内存调试和任务进程调试,因此当调试器具体确定调试类型为寄存器调试时,会根据调试类型向本地调试适配器的本地网络通信服务模块发送与调试类型对应的调试指令:请求读取寄存器,而本地网络通信服务模块,在接收到调试指令时,会调用协议调试模块,获取与调试类型对应的异常信息:寄存器信息后发送给调试器。其中,针对协议调试模块当确定接收到调试指令后,会根据调试指令对应的调试类型,例如,本实例中为寄存器调试,调用转储文件解析器提供的读写寄存器调用接口,通过调用接口获取寄存器异常信息。虽然转储文件解析器可以针对不同格式的核心转储文件进行解析,获得寄存器异常数据,但此时如果直接将寄存器异常数据传输给GDB调试器可能并不能被识别,例如存在乱码等。协议调试模块将解析获取的异常数据进行RSP协议适配,以转换成符合RSP协议传输要求的数据形式之后,再发送给网络通信服务模块,从而使得GDB调试器能够对寄存器异常信息进行识别。当然,本实施方式中仅是以寄存器调试为例进行的说明,对于其它的调试类型,调试过程与上述过程大致相同,本实施方式中不再进行赘述。

实施例三

图3是本发明实施例提供的一种嵌入式系统核心转储的调试方法流程图,该方法可以由本发明实施例中的嵌入式系统核心转储的调试装置来执行,其中,核心转储文件的调试转置中包括调试器和本地调试适配器,调试器被配置为远程调试模式,以通过远程通信方式与位于本地的调试适配器建立通信连接。如图3所示,该方法具体包括如下操作:

步骤S101,调试器向本地调试适配器发送调试指令。

可选的,调试器向本地调试适配器发送调试指令之前,还包括:调试器通过向本地调试适配器发送连接命令,实现与本地调试适配器建立通信连接;其中,连接命令中包括本地调试适配器的通信端口信息。

其中,本地调试适配器所位于的宿主机上会提供传输控制协议(TransmissionControl Protocol,TCP)服务器,因此调试器在向本地调试适配器发送调试指令之前,会基于TCP服务器通过远程通信方式首先与本地调试适配器建立通信连接。例如,调试器向本地调试适配器发送连接命令target remote127.0.0.1:2332,其中,在连接命令中包括本地调试适配器的通信端口新信息为:通信端口2332,本地调试适配器在接收到连接命令后,会通过调用通信端口2332与调试器建立通信连接。

其中,调试指令的类型包括:寄存器调试、内存调试和任务进程调试,本实施方式中并不对调整指令的具体类型进行限定。

步骤S102,本地调试适配器对嵌入式系统的核心转储文件进行解析获得异常信息,并根据调试指令将异常信息发送给调试器。

可选的,本地调试适配器对嵌入式系统的核心转储文件进行解析获得异常信息,并根据调试指令将异常信息发送给调试器,可以包括:本地调试适配器利用转储文件解析器,对嵌入式系统的核心转储文件进行解析获得异常信息;本地调试适配器利用协议调试模块,对异常信息按照调试器支持的协议格式进行协议适配处理;本地调试适配器利用本地网络通信服务模块与调试器建立通信连接,并将协议适配处理后的异常信息发送给调试器。

可选的,转储文件解析器支持对一种或多种格式的核心转储文件的解析操作;转储文件解析器按照异常信息的类型为协议调试模块提供不同类型的异常信息调用接口。

具体的说,本实施方式中的核心转储文件解析器,具体用于获取嵌入式系统所生成的核心转储文件,并支持对一种或多种格式的核心转储文件的解析操作,例如,在确定所获取的是嵌入式Linux操作系统所生成的核心转储文件,通过对核心转储文件进行识别,确定所获取的核心转储文件的格式为.core dump。由于针对不同格式类型的核心转储文件对应不同的解析方式,因此转储文件解析器具体可以通过查询解析列表的方式根据格式类型确定解析方式,其中,在解析列表中具体可以包括转储文件的格式类型与解析方式的对应关系。并且在解析方式中具体是针对部分不支持的格式类型,可以对转储文件解析器中所包含的解析程序代码中的指定内容进行修改以适配不同的格式,当然,当转储文件的格式类型是调试器所支持的情况时,通常并不需要对解析程序代码进行修改。

其中,转储文件解析器通过所确定的解析方式对所获取的核心转储文件进行解析,获得异常信息。本实施方式中的异常信息是包括嵌入式操作系统出现问题时刻所对应的寄存器信息、内存信息和任务进程等信息。并且转储文件解析器会按照异常信息的类型为协议调试模块提供不同类型的异常信息调用接口。例如,针对寄存器信息会提供读写寄存器调用接口、针对内存信息会提供读写内存调用接口、针对任务进程信息会提供读写任务进程调用接口,并且上述各个接口都是支持RSP协议的。

可选的,调试器,具体用于确定调试类型,并根据调试类型向本地调试适配器的本地网络通信服务模块发送与调试类型对应的调试指令;本地网络通信服务模块,具体用于在接收到调试指令时,调用协议调试模块,获取与调试类型对应的异常信息后,发送到调试器;协议调试模块,具体用于根据调试指令对应的调试类型,调用转储文件解析器提供的与调试类型对应的异常信息调用接口,通过调用接口获取对应类型的异常信息,并发送到本地网络通信服务模块。

其中,本实施方式中的调试器具体包括GNU调试器(GNU Debugger,GDB),而调试器支持的协议格式包括GDB标准远程通信协议(Remote Serial Protocol,RSP),并且协议调试模块与本地网络通信服务模块之间采用建模接口(Modeling Interface,MI)协议进行通信。

步骤S103,调试器接收本地调试适配器发送的异常信息。

其中,本实施方式中会通过调试器会采用远程调试模式,基于远程通信方式接收本地调试适配器所发送的异常信息。

需要说明的是,关于嵌入式系统核心转储的调试方法可以参照上述实施例中公开的各模块的具体功能,本实施方式中不再进行赘述。

本发明实施例的技术方案,通过增加本地调试适配器对嵌入式系统的核心转储文件进行解析获得异常信息,调试器只需采用远程调试模式获取异常信息即可,避免了直接使用调试器进行调试解析,需要对调试器进行大量代码修改以适配不同格式转储文件的解析,从而增加适配难度和成本的问题,所以利用本发明实施例所述方案能够减少核心转储的实现困难以及开发成本。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种嵌入式系统核心转储的调试装置和方法
  • 一种嵌入式系统可执行代码的调试装置、调试方法及嵌入式系统
技术分类

06120112624187