CN112579460A - 一种基于多核嵌入式系统的多级调试方法 - Google Patents
一种基于多核嵌入式系统的多级调试方法 Download PDFInfo
- Publication number
- CN112579460A CN112579460A CN202011555275.3A CN202011555275A CN112579460A CN 112579460 A CN112579460 A CN 112579460A CN 202011555275 A CN202011555275 A CN 202011555275A CN 112579460 A CN112579460 A CN 112579460A
- Authority
- CN
- China
- Prior art keywords
- debugging
- level
- target machine
- graphical interface
- agent
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种基于多核嵌入式系统的多级调试方法,所述多核嵌入式系统包括宿主机和目标机;所述多级调试方法包括:根据预设的调试配置和目标机状态,启动宿主机和目标机的调试;宿主机向目标机发送指令,以便目标机进行交叉调试操作;如果当前调试会话的状态处于分区级调试或者任务级调试,则通过调试图形界面进行分区级调试向系统级调试切换,或者,任务级调试向系统级调试切换;如果当前调试会话的状态处于系统级调试,则通过调试图形界面进行系统级调试向分区级调试切换,或者,系统级调试向任务级调试切换。
Description
技术领域
本申请涉及计算机领域,具体涉及一种基于多核嵌入式系统的多级调试方法。
背景技术
软件调试器帮助很多嵌入式计算机程序员找到嵌入式计算机程序中的错误。这些错误通常叫做“bugs”。最通常的bug是嵌入式计算机程序没有做它支持做的。对程序员来说,寻找bug通常是一项棘手的任务。
嵌入式软件调试器能被用于确定问题原因,然而传统的嵌入式软件调试器具有能力限制,往往只能够调试一种嵌入式计算机程序,例如用户进程,又或是嵌入式系统中的用户任务。一个任务调试时,其它任务的运行不受影响(无共享资源、无同步关系)。在系统中还有系统服务程序、分区程序(满足ARINC653标准要求的嵌入式操作系统具有分区)、中断处理程序、异常处理程序等,这些程序也有调试的需求(操作系统开发人员,设备驱动开发人员需要调试这些程序,应用开发人员有时也会从了解系统的角度去调试这些程序),但是这些程序往往不能通过提供给用户的软件调试工具进行调试,只能通过硬件仿真器进行调试。硬件仿真器存在价格高,连接不方便等问题,不适合普通用户使用。
发明内容
本申请提供一种基于多核嵌入式系统的多级调试方法,用于找出多核嵌入式操作系统的系统程序、任务、分区程序,以便于找出程序中的bug。
本申请提供一种基于多核嵌入式系统的多级调试方法,所述多核嵌入式系统包括宿主机和目标机;所述宿主机端包括调试图形界面、调试管理器、交叉调试器、目标机服务器、宿主机OS;所述目标机端包括系统级通信代理、系统级调试代理、任务级通信代理、公共调试代理、任务级调试代理、分区级调试代理;所述多级调试方法包括:
根据预设的调试配置和目标机状态,启动宿主机和目标机的调试;
宿主机向目标机发送指令,以便目标机进行交叉调试操作;
如果当前调试会话的状态处于分区级调试或者任务级调试,则通过调试图形界面进行分区级调试向系统级调试切换,或者,任务级调试向系统级调试切换;
如果当前调试会话的状态处于系统级调试,则通过调试图形界面进行系统级调试向分区级调试切换,或者,系统级调试向任务级调试切换。
优选的,所述根据预设的调试配置和目标机状态,启动宿主机和目标机的调试,具体包括:
如果目标机服务器未连接目标机,调试图形界面控制目标机服务器与目标机建立通信连接;
调试图形界面根据当前目标机状态创建调试配置;
调试图形界面根据调试配置通过调试管理器创建调试会话;
调试图形界面通过调试管理器启动调试会话。
优选的,所述宿主机向目标机发送指令,以便目标机进行交叉调试操作,具体包括:
调试图形界面接收用户输入的调试操作指令,进行调试相关操作;
调试图形界面通过调试控制管理将调试操作转换为单个或多个交叉调试器命令,然后逐一发送给交叉调试器;
交叉调试器处理命令,和目标机程序调试直接相关的命令将被转换为单个或多个命令发送给目标机服务器,和目标机程序调试不直接相关的命令,处理后组织回复,回复给调试控制管理;
目标机服务器再转换命令包为目标机端调试代理支持的调试控制命令,并转发到目标机端;
目标机端调试代理处理调试控制命令,并将处理结果回复到宿主机端目标机服务器;
宿主机端目标机服务器将回复结果转换为交叉调试器的回复并发送给交叉调试器;
交叉调试器所有的命令都处理完成后,将请求的执行结果组织成回复,回复给调试控制管理;
调试控制管理接收到所有回复后,将回复中解析出的调试图形界面需要的数据返回调试图形界面;
调试图形界面接收到调试控制操作的结果数据后,将操作结果信息在调试界面中图形化显示。
优选的,通过调试图形界面进行分区级调试向系统级调试切换,或者,任务级调试向系统级调试切换,具体包括:
调试图形界面通过目标机服务器向目标机端公共调试代理任务发送调试级别切换的命令;
公共调试代理任务处理调试级别切换命令,切换到系统级调试级别,向操作系统挂接系统级调试代理的调试中断处理,然后控制继续调度运行被调试的分区/任务并且马上再次触发调试中断,使得系统进入系统级调试代理的调试中断处理;
系统级调试代理回复宿主机端调试图形界面调试级别切换是否成功;
调试图形界面更新交叉调试器与目标机服务器、目标机服务器与系统级通信代理和调试会话的通信连接;
宿主机调试图形界面显示和目标机调试会话、被调程序状态同步。
优选的,通过调试图形界面进行系统级调试向分区级调试切换,或者,系统级调试向任务级调试切换,具体包括:
调试图形界面通过目标机服务器向目标机端系统级调试代理发送调试级别切换的命令,
系统级调试代理处理调试级别切换命令,切换到相应的调试级别,向操作系统挂接公共调试代理的调试中断处理程序;
系统级调试代理回复宿主机端调试图形界面调试级别切换是否成功,并回复系统正常运行;
调试图形界面如果收到切换成功,就发送获取任务/分区列表的命令到公共调试代理;
公共调试代理回复任务/分区列表调试图形界面;
调试图形界面列出任务/分区列表供用户选择;
调试图形界面向公共调试代理发送控制用户选择的任务/分区暂停运行的命令:
公共调试代理控制任务/分区暂停运行,并回复调试图形界暂停成功;
调试图形界面向公共调试代理发送建立调试会话的命令;
公共调试代理创建被调程序的调试会话,并回复创建结果给宿主机端调试图形界面;
调试图形界面更新交叉调试器与目标机服务器、目标机服务器与任务级通信代理和调试会话的通信连接;
宿主机调试图形界面显示和目标机调试会话、被调程序状态同步。
优选的,所述交叉调试操作包括:查看变量、查看内存、查看表达式、查看寄存器、添加断点、删除断点、源码单步跳入、源码单步跳过、指令单步跳入、指令单步跳过。
优选的,所述调试图形界面通过调试管理器启动调试会话,具体包括:
如果是介入调试且被调程序正在运行,控制被调程序暂停运行;
调试图形界面向目标机端调试代理发送建立调试会话的请求;
目标机端调试代理创建被调程序的调试会话,并回复创建结果给宿主机端调试图形界面;
调试图形界面启动交叉调试器;
调试图形界面建立交叉调试器与目标机服务器的连接;
调试图形界面通过调试管理器与交叉调试器建立连接;
调试图形界面根据目标机端调试代理创建调试会话的情况设置建立目标机服务器与目标机通信代理和调试会话建立通信连接;
调试图形界面为添加必要的被调试程序的调试符号表文件;
如果是下载调试,设置程序要首次停止运行的临时断点,并控制被调程序运行停止到首次停止运行的临时断点位置。
优选的,调试图形界面根据当前目标机状态创建调试配置时,如果是任务/分区的介入调试,就发送获取任务/分区列表的命令请求,得到任务/分区列表供用户选择,根据用户选择创建调试配置。
综上所述,本发明具有的优点效果:能更好地调试发现嵌入式系统中不同程序中存在的bug,包括多核嵌入式操作系统的系统程序(内核程序、中断处理程序、异常处理程序等)、任务程序、分区程序。
能更好地调试发现多任务、分区所存在的任务、分区间同步、互斥bug。
能更好地支持多用户同时调试不同目标机或相同目标机上的被调程序。
附图说明
图1为本申请提供的一种多核嵌入式系统的结构图;
图2为本申请提供的一种多级调试方法的切换处理流程图;
图3为本申请提供的一种多级调试方法的调试中断处理流程图。
具体实施方式
实施例一
如图1所示,本申请提供的多核嵌入式系统包括宿主机端和目标机端。宿主机端包括调试图形界面、调试管理器、交叉调试器、目标机服务器、宿主机OS。目标机端包括系统级通信代理、系统级调试代理、任务级通信代理、公共调试代理、任务级调试代理、分区级调试代理。以下分别对宿主机端和目标机端进行详细介绍:
调试图形界面是一个宿主机端程序,它控制显示设备显示的内容,它响应程序调试人员通过输入设备(鼠标)输入的调试操作指令,处理之后,输出调试输出数据到输出设备(显示器)。调试图形界能够向GDB交叉调试器发送调试请求来进行单步运行、继续运行、添加/删除断点、查看/修改变量、查看/修改内存、查看/修改寄存器、查看表达式。还支持开发者进行调试级别切换操作。
调试管理器是一个宿主机端程序。它管理调试配置,负责调试配置的创建、删除、启动控制;它管理调试会话,负责调试会话的创建、删除、调试级别切换、启动、停止控制;它管理与交叉调试器的通信通路,负责通信通路的创建、运行、停止控制,负责向交叉调试器发送命令,并接收交叉调试器的回复。
交叉调试器是一个宿主机端程序,交叉调试器是执行基本调试控制的后台程序,开发者在调试图形用户界面执行添加/删除断点、单步、继续运行等调试控制操作,以及数据查看/修改操作请求,都通过交叉调试器完成。交叉调试器发送远程调试请求到目标机服务器,由目标机服务器转发到目标机,目标机上的系统级调试代理、公共调试代理、分区级调试代理、任务级调试代理响应调试请求,完成要求的调试控制及寄存器、数据的读取操作,在将结果回复给宿主机端。
目标机服务器是一个宿主机端程序,它管理宿主机和目标机的通信连接。它能够转发交叉调试器及宿主机端的其它模块同目标机交互的数据。多个宿主机上的目标机服务器能够相互之间组建连接通道,通过该连接通道将目标机服务器中管理的目标机通信连接和进行目标机服务器之间的共享,从而实现多个宿主机间共享目标机通信连接,实现多个宿主机上多用户同时调试操作同一目标机的功能。
宿主机OS是宿主机运行的操作系统,它为宿主机端程序运行提供支持。例如Windows、Linux。
系统级通信代理是一个目标机端程序,它系统级调试级别下和目标机服务器建立通信连接,提供查询通信方式,为系统级调试代理提供通信服务。
系统级调试代理是一个目标机端程序,系统级调试代理是目标机上支持系统级调试的程序。能够处理宿主机端的调试控制操作请求,它将目标机上除了系统级通信代理和自身外的程序作为被调试程序,能够控制被调试程序运行或停止运行。它管理一个系统级调试会话。能够对被调试程序调试中断进行处理。能够对调试级别进行管理。响应宿主机要求进行调试接切换的请求,提供系统级向分区级或任务级切换的能力。
嵌入式OS是目标机上运行的操作系统,它为目标机上除了系统级通信代理和系统级调试代理外的程序提供运行支持。
任务级通信代理是一个目标机端程序,它作为嵌入式OS中的任务运行。它负责在任务级、分区级调试级别时和目标机服务器建立通信连接,提供中断通信方式,为公共调试代理、任务级调试代理、分区级调试代理提供通信服务。
公共调试代理是一个目标机端程序,为分区级、任务级提供统一的调试支持。能够通过任务通信代理接收宿主机端的调试控制请求,然后处理宿主机端的调试控制操作请求,将分区或任务作为被调试程序,对分区或任务进行统一的调试控制,控制分区或任务继续运行或停止运行、读取/修改任务或分区程序内存、寄存器。能够统一处理分区或任务运行过程中发生的调试中断。能够管理多个分区级或任务级调试会话。响应宿主机要求进行调试级别切换的请求,提供任务级、分区级向系统级切换的能力。
分区级调试代理是一个目标机端程序,提供分区级调试需要的调试控制、信息获取等接口,一般包括分区列表获取接口、分区调试停止控制接口、分区继续运行控制接口、分区进程列表获取接口、分区进程寄存器现场获取接口、分区进程寄存器现场修改接口。
分区是符合ARINC653标准的嵌入式操作系统中的分区,是用户的应用程序。其特点是和其它分区进行了时空隔离。它是分区级调试代理调试控制、查看/修改操作的被调试对象。
任务级调试代理是一个目标机端程序,提供任务级调试需要的调试控制、信息获取等接口,一般包括任务列表获取接口、任务调试停止控制接口、任务继续运行控制接口、任务寄存器现场获取接口、任务寄存器现场修改接口。
任务是嵌入式操作系统中一个可调度运行的程序,一般按优先级进行抢占调度,同优先级按时间片轮转调度。它是任务级调试代理调试控制、查看/修改操作的被调试对象,不能是任务级通信代理所在任务。
实施例二
本申请提供一种基于多核嵌入式系统的多级调试方法,具体包括:
步骤1:根据用户配置和目标机状态启动调试。
步骤1.1:如果目标机服务器未连接目标机,调试图形界面控制目标机服务器与目标机建立通信连接;
步骤1.2:调试图形界面根据当前目标机状态创建调试配置。创建调试配置时,如果是任务/分区的介入调试,就发送获取任务/分区列表的命令请求,得到任务/分区列表供用户选择,根据用户选择创建调试配置;
步骤1.3:调试图形界面根据调试配置通过调试管理器创建调试会话;
步骤1.4:调试图形界面通过调试管理器启动调试会话。
步骤1.4.1:如果是介入调试且被调程序正在运行,控制被调程序暂停运行;
步骤1.4.2:调试图形界面向目标机端调试代理发送建立调试会话(目标机)的请求;
步骤1.4.3:目标机端调试代理创建被调程序的调试会话(目标机),并回复创建结果给宿主机端调试图形界面;
步骤1.4.4:调试图形界面启动交叉调试器;
步骤1.4.5:调试图形界面建立交叉调试器与目标机服务器的连接;
步骤1.4.6:调试图形界面通过调试管理器与交叉调试器建立连接;
步骤1.4.7:调试图形界面根据目标机端调试代理创建调试会话的情况设置建立目标机服务器与目标机通信代理和调试会话(目标机)建立通信连接;
步骤1.4.8:调试图形界面为添加必要的被调试程序的调试符号表文件(其中包含程序符号表、程序调试信息);
步骤1.4.9:如果是下载调试,设置程序要首次停止运行的临时断点,并控制被调程序运行停止到首次停止运行的临时断点位置。
步骤2:交叉调试嵌入式系统中程序,该步骤可重复进行,交叉调试操作包括:查看变量、查看内存、查看表达式、查看寄存器、添加断点、删除断点、源码单步跳入、源码单步跳过、指令单步跳入、指令单步跳过。
步骤2.1:用户通过调试图形界面进行调试相关操作;
步骤2.2:调试图形界面通过调试控制管理将调试操作转换为单个或多个交叉调试器命令,然后逐一发送给交叉调试器;
步骤2.3:交叉调试器处理命令,和目标机程序调试直接相关的命令将被转换为单个或多个命令发送给目标机服务器,和目标机程序调试不直接相关的命令,处理后组织回复,回复给调试控制管理;
步骤2.4:目标机服务器再转换命令包为目标机端调试代理支持的调试控制命令,并转发到目标机端;
步骤2.5:目标机端调试代理处理调试控制命令,并将处理结果回复到宿主机端目标机服务器;
步骤2.6:宿主机端目标机服务器将回复结果转换为交叉调试器的回复并发送给交叉调试器;
步骤2.7:交叉调试器所有的命令都处理完成后,将请求的执行结果组织成回复,回复给调试控制管理;
步骤2.8:调试控制管理接收到所有回复后,将回复中解析出的调试图形界面需要的数据返回调试图形界面;
步骤2.9:调试图形界面接收到调试控制操作的结果数据后,将操作结果信息在调试界面中图形化显示。
步骤3:分区/任务级向系统级切换。如果当前调试会话处于分区/任务级,则用户可通过调试图形界面进行分区/任务级向系统级切换。如图2所示:
步骤3.1:调试图形界面通过目标机服务器向目标机端公共调试代理任务发送调试级别切换的命令;
步骤3.2:公共调试代理任务处理调试级别切换命令,切换到系统级调试级别,向操作系统挂接系统级调试代理的调试中断处理,然后控制继续调度运行被调试的分区/任务并且马上再次触发调试中断,使得系统进入系统级调试代理的调试中断处理;
步骤3.3:系统级调试代理回复宿主机端调试图形界面调试级别切换是否成功;
步骤3.4:调试图形界面更新交叉调试器与目标机服务器、目标机服务器与系统级通信代理和调试会话(目标机)的通信连接;
步骤3.5:宿主机调试图形界面显示和目标机调试会话、被调程序状态同步。
步骤4:系统级向分区/任务级调试级别切换。如果当前调试会话处于系统级,则用户可通过调试图形界面进行系统级到分区/任务级切换。如图2所示:
步骤4.1:调试图形界面通过目标机服务器向目标机端系统级调试代理发送调试级别切换的命令,
步骤4.2:系统级调试代理处理调试级别切换命令,切换到相应的调试级别,向操作系统挂接公共调试代理的调试中断处理程序;
步骤4.3:系统级调试代理回复宿主机端调试图形界面调试级别切换是否成功,并回复系统正常运行;
步骤4.4:调试图形界面如果收到切换成功,就发送获取任务/分区列表的命令到公共调试代理;
步骤4.5:公共调试代理回复任务/分区列表调试图形界面;
步骤4.6:调试图形界面列出任务/分区列表供用户选择;
步骤4.7:调试图形界面向公共调试代理发送控制用户选择的任务/分区暂停运行的命令:
步骤4.8:公共调试代理控制任务/分区暂停运行,并回复调试图形界暂停成功;
步骤4.9:调试图形界面向公共调试代理发送建立调试会话(目标机)的命令;
步骤4.10:公共调试代理创建被调程序的调试会话(目标机),并回复创建结果给宿主机端调试图形界面;
步骤4.11:调试图形界面更新交叉调试器与目标机服务器、目标机服务器与任务级通信代理和调试会话(目标机)的通信连接;
步骤4.12:宿主机调试图形界面显示和目标机调试会话、被调程序状态同步。
综上所述,本申请提供的一种基于多核嵌入式系统的多级调试方法具有以下特点:
1、建立嵌入式系统交叉调试配置;
2、根据调试配置启动嵌入式系统交叉调试;
3、将嵌入式系统程序的交叉调试分为:系统级、任务级、分区级,系统级调试支持整个嵌入式系统程序的调试;任务级调试支持单个任务的调试;分区级调试支持分区应用程序的调试;
4、在进行系统级调试时,可以切换到任务级或分区级调试,在进行任务级或分区级调试时可以切换到系统级进行调试,以适应调试不同程序的需要。
实施例三
多核嵌入式系统多级调试系统各部分分别部署在宿主机和目标机上,宿主机供调试操作使用,配置有键盘、鼠标、显示器,宿主机上有宿主机OS为宿主机端软件提供运行支持,宿主机OS一般用Windows或Linux。调试图形界面、目标机服务器、调试管理器、交叉调试器可以建立在统一的IDE软件平台之上,这样便于图形界面风格统一、实现便利,例如Eclipse。
目标机可以是PPC、MIPS、ARM等CPU体系结构的目标机,配置有网卡、串口作为交叉调试通信设备。目标机上驻留系统级通信代理、系统级调试代理、嵌入式OS、任务级通信代理、公共调试代理、任务级调试代理、分区级调试代理(嵌入式OS支持分区)应用程序。
用户首先通过调试图形界面建立调试相关配置,例如要调试的目标机所需要的通信连接的配置(目标机服务器需要该配置信息来和目标机通信);调试需要的调试符号文件(交叉调试器需要用来解析变量、表达式)。
然后通过调试控制器启动调试,也就是根据调试配置在宿主机和目标机端创建调试会话。调试会话就代表一次程序调试。交叉调试会话需要宿主机和目标机交叉通信支持,这通过目标机服务器与系统级(或任务级)通信代理实现,还需要交叉调试器能够与上层调试管理器、调试图形界面进行通信,交叉调试器还要能够通过目标机服务器与目标机调试代理进行交互。
调试启动后,正常建立了调试会话,就可以进行正常的交叉调试。交叉调试过程中的调试操作包括单步运行、继续运行、添加/删除断点、查看/修改变量、查看/修改内存、查看/修改寄存器、查看表达式等。
调试过程中可能遇到一种情况:当任务级调试时,是对单任务运行现场进行运行现场进行运行过程的跟踪查看,当任务调用OS API时,这时往往不能通过任务级/分区级调试跟踪调试到API的内部,一般也不必,但是嵌入式系统的往往是一个紧密的整体,要求应用开发人员能够完全掌握系统运行情况,而不是局限于应用自身,所以也有进入API内部进行调试的需要。这时可以通过调试级别切换操作,切换到系统级进行调试。同理可以在系统级调试完成后,切换到任务级/分区级继续进行调试。用户可以在调试图形界面发起调试级别切换的操作,操作请求通过交叉调试的通信连接通路传递到调试代理,调试代理执行调试级别的切换,通信代理也根据调试级别的改变进行切换。
如图3所示,当被调试的程序运行过程中触发了断点或者单条指令执行模式下执行完一条指令后会进入调试中断处理过程。调试中断处理过程先保存程序运行现场,如果是系统级调试,当前CPU核先通过CPU的中断控制器中自带的发送核间中断的机制向其它核发送核间中断信号,控制其它核进入核间中断处理,并在核间中断处理中查询等待唤醒信号。调试中断处理当前核接着就向宿主机端发送程序运行已经停止的通知消息,然后通过系统通信代理接收宿主机端的调试请求。调试中断处理时,先保存程序运行现场,如果是任务级或分区级调试,调试中断处理时向公共调试代理发送程序运行已经停止的通知消息,然后就控制任务或分区进入调试挂起状态,挂起后程序运行从中断处理切换到其它公共调试代理所在任务进行运行,这时公共调试代理再向宿主机端发送程序运行已经停止的通知消息,然后通过任务级通信代理接收宿主机端的调试请求。宿主机端收到程序运行已经停止的通知消息后,就可以发送后续调试控制请求,进行后续程序调试控制。如果目标机端收到的是继续运行程序的请求,系统级调试时,就设置唤醒其它核的信号,其它核查询到该信号就退出核间中断继续运行,同时调试中断处理当前核退出调试中断处理,继续运行被程序;任务级或分区级调试时,就解挂被调试任务或分区,使得它们可以正常被OS调度运行,这时OS会调度任务或分区继续运行。如果目标机端收到的是单条指令运行程序的请求,系统级调试时,调试中断处理当前核设置当前核为单步执行程序的模式(CPU只单步执行一条指令,期间不可以有中断),然后退出调试中断处理并执行原来的程序(不唤醒其它CPU核),这时CPU执行完一条指令后马上再进入调试中断处理。任务级或分区级调试时,控制任务或分区单条执行CPU指令,需要解挂任务或分区,然后关闭CPU OS调度,只运行要唤醒运行的任务或分区的一条CPU指令,然后进入调试中断处理过程。
任务级或系统级调试时,需要公共调试代理,通过调试代理通过任务级通信代理统一接收宿主机端的调试请求,任务级或分区级调试代理提供任务分区相关的操作接口。公共调试代理收到调试控制情况后,根据当前调试级别调用任务级或分区级调试代理提供的调试控制操作接口的对任务或分区进行调试控制。
Claims (8)
1.一种基于多核嵌入式系统的多级调试方法,其特征在于,所述多核嵌入式系统包括宿主机和目标机;所述宿主机端包括调试图形界面、调试管理器、交叉调试器、目标机服务器、宿主机OS;所述目标机端包括系统级通信代理、系统级调试代理、任务级通信代理、公共调试代理、任务级调试代理、分区级调试代理;所述多级调试方法包括:
根据预设的调试配置和目标机状态,启动宿主机和目标机的调试;
宿主机向目标机发送指令,以便目标机进行交叉调试操作;
如果当前调试会话的状态处于分区级调试或者任务级调试,则通过调试图形界面进行分区级调试向系统级调试切换,或者,任务级调试向系统级调试切换;
如果当前调试会话的状态处于系统级调试,则通过调试图形界面进行系统级调试向分区级调试切换,或者,系统级调试向任务级调试切换。
2.根据权利要求1所述的多级调试方法,其特征在于,所述根据预设的调试配置和目标机状态,启动宿主机和目标机的调试,具体包括:
如果目标机服务器未连接目标机,调试图形界面控制目标机服务器与目标机建立通信连接;
调试图形界面根据当前目标机状态创建调试配置;
调试图形界面根据调试配置通过调试管理器创建调试会话;
调试图形界面通过调试管理器启动调试会话。
3.根据权利要求1所述的多级调试方法,其特征在于,所述宿主机向目标机发送指令,以便目标机进行交叉调试操作,具体包括:
调试图形界面接收用户输入的调试操作指令,进行调试相关操作;
调试图形界面通过调试控制管理将调试操作转换为单个或多个交叉调试器命令,然后逐一发送给交叉调试器;
交叉调试器处理命令,和目标机程序调试直接相关的命令将被转换为单个或多个命令发送给目标机服务器,和目标机程序调试不直接相关的命令,处理后组织回复,回复给调试控制管理;
目标机服务器再转换命令包为目标机端调试代理支持的调试控制命令,并转发到目标机端;
目标机端调试代理处理调试控制命令,并将处理结果回复到宿主机端目标机服务器;
宿主机端目标机服务器将回复结果转换为交叉调试器的回复并发送给交叉调试器;
交叉调试器所有的命令都处理完成后,将请求的执行结果组织成回复,回复给调试控制管理;
调试控制管理接收到所有回复后,将回复中解析出的调试图形界面需要的数据返回调试图形界面;
调试图形界面接收到调试控制操作的结果数据后,将操作结果信息在调试界面中图形化显示。
4.根据权利要求1所述的多级调试方法,其特征在于,通过调试图形界面进行分区级调试向系统级调试切换,或者,任务级调试向系统级调试切换,具体包括:
调试图形界面通过目标机服务器向目标机端公共调试代理任务发送调试级别切换的命令;
公共调试代理任务处理调试级别切换命令,切换到系统级调试级别,向操作系统挂接系统级调试代理的调试中断处理,然后控制继续调度运行被调试的分区/任务并且马上再次触发调试中断,使得系统进入系统级调试代理的调试中断处理;
系统级调试代理回复宿主机端调试图形界面调试级别切换是否成功;
调试图形界面更新交叉调试器与目标机服务器、目标机服务器与系统级通信代理和调试会话的通信连接;
宿主机调试图形界面显示和目标机调试会话、被调程序状态同步。
5.根据权利要求1所述的多级调试方法,其特征在于,通过调试图形界面进行系统级调试向分区级调试切换,或者,系统级调试向任务级调试切换,具体包括:
调试图形界面通过目标机服务器向目标机端系统级调试代理发送调试级别切换的命令,
系统级调试代理处理调试级别切换命令,切换到相应的调试级别,向操作系统挂接公共调试代理的调试中断处理程序;
系统级调试代理回复宿主机端调试图形界面调试级别切换是否成功,并回复系统正常运行;
调试图形界面如果收到切换成功,就发送获取任务/分区列表的命令到公共调试代理;
公共调试代理回复任务/分区列表调试图形界面;
调试图形界面列出任务/分区列表供用户选择;
调试图形界面向公共调试代理发送控制用户选择的任务/分区暂停运行的命令:
公共调试代理控制任务/分区暂停运行,并回复调试图形界暂停成功;
调试图形界面向公共调试代理发送建立调试会话的命令;
公共调试代理创建被调程序的调试会话,并回复创建结果给宿主机端调试图形界面;
调试图形界面更新交叉调试器与目标机服务器、目标机服务器与任务级通信代理和调试会话的通信连接;
宿主机调试图形界面显示和目标机调试会话、被调程序状态同步。
6.根据权利要求1所述的多级调试方法,其特征在于,所述交叉调试操作包括:查看变量、查看内存、查看表达式、查看寄存器、添加断点、删除断点、源码单步跳入、源码单步跳过、指令单步跳入、指令单步跳过。
7.根据权利要求2所述的多级调试方法,其特征在于,所述调试图形界面通过调试管理器启动调试会话,具体包括:
如果是介入调试且被调程序正在运行,控制被调程序暂停运行;
调试图形界面向目标机端调试代理发送建立调试会话的请求;
目标机端调试代理创建被调程序的调试会话,并回复创建结果给宿主机端调试图形界面;
调试图形界面启动交叉调试器;
调试图形界面建立交叉调试器与目标机服务器的连接;
调试图形界面通过调试管理器与交叉调试器建立连接;
调试图形界面根据目标机端调试代理创建调试会话的情况设置建立目标机服务器与目标机通信代理和调试会话建立通信连接;
调试图形界面为添加必要的被调试程序的调试符号表文件;
如果是下载调试,设置程序要首次停止运行的临时断点,并控制被调程序运行停止到首次停止运行的临时断点位置。
8.根据权利要求2所述的多级调试方法,其特征在于,调试图形界面根据当前目标机状态创建调试配置时,如果是任务/分区的介入调试,就发送获取任务/分区列表的命令请求,得到任务/分区列表供用户选择,根据用户选择创建调试配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011555275.3A CN112579460B (zh) | 2020-12-24 | 2020-12-24 | 一种基于多核嵌入式系统的多级调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011555275.3A CN112579460B (zh) | 2020-12-24 | 2020-12-24 | 一种基于多核嵌入式系统的多级调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579460A true CN112579460A (zh) | 2021-03-30 |
CN112579460B CN112579460B (zh) | 2023-04-14 |
Family
ID=75140639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011555275.3A Active CN112579460B (zh) | 2020-12-24 | 2020-12-24 | 一种基于多核嵌入式系统的多级调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579460B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064152A (zh) * | 2021-11-26 | 2022-02-18 | 中船重工(武汉)凌久电子有限责任公司 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889988A (en) * | 1995-01-03 | 1999-03-30 | Intel Corporation | Debugger for debugging tasks in an operating system virtual device driver |
WO2003023616A2 (de) * | 2001-09-03 | 2003-03-20 | Pact Xpp Technologies Ag | Verfahren zum debuggen rekonfigurierbarer architekturen |
JP2005222388A (ja) * | 2004-02-06 | 2005-08-18 | Canon Inc | タスクスイッチ情報表示装置及びコンピュータプログラムを記録した媒体 |
CN102129408A (zh) * | 2011-04-14 | 2011-07-20 | 电子科技大学 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
CN104536838A (zh) * | 2014-12-18 | 2015-04-22 | 中国电子科技集团公司第三十八研究所 | 一种具有异步监视功能的远程调试方法及系统 |
CN105224431A (zh) * | 2015-09-08 | 2016-01-06 | 福州瑞芯微电子股份有限公司 | 一种嵌入式芯片复用sd接口的调试方法 |
US20160092327A1 (en) * | 2014-09-26 | 2016-03-31 | Ali Corporation | Debugging system and debugging method of multi-core processor |
CN107870855A (zh) * | 2016-09-27 | 2018-04-03 | 北京计算机技术及应用研究所 | 基于天熠嵌入式操作系统的调试系统 |
US10802852B1 (en) * | 2015-07-07 | 2020-10-13 | Cadence Design Systems, Inc. | Method for interactive embedded software debugging through the control of simulation tracing components |
-
2020
- 2020-12-24 CN CN202011555275.3A patent/CN112579460B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889988A (en) * | 1995-01-03 | 1999-03-30 | Intel Corporation | Debugger for debugging tasks in an operating system virtual device driver |
WO2003023616A2 (de) * | 2001-09-03 | 2003-03-20 | Pact Xpp Technologies Ag | Verfahren zum debuggen rekonfigurierbarer architekturen |
JP2005222388A (ja) * | 2004-02-06 | 2005-08-18 | Canon Inc | タスクスイッチ情報表示装置及びコンピュータプログラムを記録した媒体 |
CN102129408A (zh) * | 2011-04-14 | 2011-07-20 | 电子科技大学 | 一种基于记录回放技术的嵌入式软件调试装置和方法 |
US20160092327A1 (en) * | 2014-09-26 | 2016-03-31 | Ali Corporation | Debugging system and debugging method of multi-core processor |
CN104536838A (zh) * | 2014-12-18 | 2015-04-22 | 中国电子科技集团公司第三十八研究所 | 一种具有异步监视功能的远程调试方法及系统 |
US10802852B1 (en) * | 2015-07-07 | 2020-10-13 | Cadence Design Systems, Inc. | Method for interactive embedded software debugging through the control of simulation tracing components |
CN105224431A (zh) * | 2015-09-08 | 2016-01-06 | 福州瑞芯微电子股份有限公司 | 一种嵌入式芯片复用sd接口的调试方法 |
CN107870855A (zh) * | 2016-09-27 | 2018-04-03 | 北京计算机技术及应用研究所 | 基于天熠嵌入式操作系统的调试系统 |
Non-Patent Citations (3)
Title |
---|
SANDIP KUNDU等: ""Efficient Error-Detection and Recovery Mechanisms for Reliability and Resiliency of Multicores"", 《2016 29TH INTERNATIONAL CONFERENCE ON VLSI DESIGN AND 2016 15TH INTERNATIONAL CONFERENCE ON EMBEDDED SYSTEMS (VLSID)》 * |
李健等: ""基于MILS多级安全架构的远程调试机制"", 《计算机工程》 * |
田丹等: ""基于Eclipse的嵌入式集成开发环境工程管理"", 《微处理机》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064152A (zh) * | 2021-11-26 | 2022-02-18 | 中船重工(武汉)凌久电子有限责任公司 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
CN114064152B (zh) * | 2021-11-26 | 2023-05-23 | 中船重工(武汉)凌久电子有限责任公司 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112579460B (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7209034B2 (ja) | エッジコンピューティングテスト方法、装置、機器及び読み取り可能な記憶媒体 | |
CN109344065B (zh) | 远程调试方法、调试服务器及目标机 | |
US8136097B2 (en) | Thread debugging device, thread debugging method and information storage medium | |
US6011920A (en) | Method and apparatus for debugging applications on a personality neutral debugger | |
US6826746B2 (en) | Debugger probe for object oriented programming | |
EP2724235B1 (en) | N-way runtime interoperative debugging | |
US6901535B2 (en) | Information processing apparatus, defect analysis program, and defect analysis method | |
CN109726135B (zh) | 一种多核调试方法、装置及计算机可读存储介质 | |
CN114064152B (zh) | 基于动态加载的嵌入式多核调试系统及其调试方法 | |
CN112286656B (zh) | 小程序模拟方法、装置、电子设备和计算机可读存储介质 | |
KR20040111141A (ko) | 플러그 가능한 컴포넌트들에서의 브레이크 포인트 디버깅 | |
CN108197004B (zh) | Ios应用的方法耗时、加载视图耗时的监测方法及系统 | |
US20080127119A1 (en) | Method and system for dynamic debugging of software | |
US20010027387A1 (en) | Debugging supporting apparatus, debugging supporting method and recording medium readable by computer with its programs recorded thereon | |
CN112579460B (zh) | 一种基于多核嵌入式系统的多级调试方法 | |
CN110209565B (zh) | 一种元数据模型调试方法及其装置 | |
KR20210049725A (ko) | 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램 | |
CN112214416A (zh) | 调试小程序的方法、装置、电子设备和存储介质 | |
CN109800166B (zh) | 一种嵌入式实时操作系统的调试方法及装置 | |
KR101418390B1 (ko) | 원격 응용 프로그래밍 디버깅시스템 및 그 제어방법 | |
CN112231231B (zh) | 云端服务的调试方法、系统及装置 | |
US12079104B2 (en) | Infrastructure to integrate an integrated development environment (IDE) with game engines | |
CN112799816B (zh) | 一种嵌入式操作系统的多任务程序指定任务调试方法 | |
CN118069382A (zh) | 一种嵌入式余度计算机软件同步调试系统和方法 | |
CN116126366B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |