一种多核系统的调试方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:35660051 阅读:18 留言:0更新日期:2022-11-19 16:57
本申请公开了一种多核系统的调试方法、装置、计算机设备及存储介质。该方法包括:获取多核系统中待调试代码的位置,作为目标位置,向所述目标位置植入预设补丁代码,当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行,获取所述预设补丁代码对应的待调试代码的运行数据,将所述运行数据作为调试数据导出并存储,完成对所述多核系统的调试。其中,通过在目标位置植入预设补丁代码,区别于现有技术中的断点式设置,不会使CPU停止工作,保证多核系统的运行的稳定性,并且通过运行所述预设补丁代码,并采集其运行数据,可以实现对多核系统的调试,且不需要反复修改代码,也不需要烧写固件,实现在线调试,提高了调试的效率。试的效率。试的效率。

【技术实现步骤摘要】
一种多核系统的调试方法、装置、计算机设备及存储介质


[0001]本申请涉及系统调试
,特别是涉及一种多核系统的调试方法、装置、计算机设备及存储介质。

技术介绍

[0002]随着科学技术的发展,嵌入式系统由单核处理器逐渐发展为多核处理器。但是原有的单核处理器的调试方法已经不能满足对多核处理器的调试。
[0003]因此,在现有技术中,采用的是传统断点式调试方法,对多核系统中的代码进行调试,其通过暂停待调试代码对应的CPU的运行,再进行调试。但是这种传统的调试方法,会导致CPU运行停止,并且无法原图其他CPU发送同步消息等,可能会引起其他CPU上的程序运行或状态紊乱,并不能达到有效的调试,并且还可能会导致系统崩溃。
[0004]为了解决上述传统断点式调试方法所带来的缺陷,在现有技术中,还可以通过注入和分析系统日志的方法,对多核系统进行调试,这种方法不会停止CPU运行,但是需要不断的修改代码,加入日志代码,然后编译,发布,烧写固件,复现问题,收集和分析日志,其的调试过程效率很低。并且如果需要现场调试,客户可能不允许将在线运行的系统重新烧录成用于调试的工程版固件,中断系统运行,那么这种调试也就无法实施。
[0005]基于此,如何实现在不停止CPU运行的基础上进行调试,并提高调试效率,是本领域技术人员亟待解决的技术问题。

技术实现思路

[0006]基于上述问题,本申请提供了一种多核系统的调试方法、装置、计算机设备及存储介质,以实现在不停止CPU的运行的情况下进行调试,并且提高调试效率
[0007]本申请实施例公开了如下技术方案:第一方面,本申请实施例提供一种多核系统的调试方法,所述方法包括:获取多核系统中待调试代码的位置,作为目标位置;向所述目标位置植入预设补丁代码;当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行;获取所述预设补丁代码对应的待调试代码的运行数据;将所述运行数据作为调试数据导出并存储,完成对所述多核系统的调试。
[0008]可选地,在向所述目标位置植入预设补丁代码之前,所述方法还包括:确定所述预设补丁代码对应的PC值,作为补丁PC值;将所述补丁PC值加载到中央处理器的补丁表中。
[0009]可选地,所述当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行,包括:当所述多核系统中的程序运行到所述目标位置时,根据所述补丁表中的补丁PC值跳转到所述预设补丁代码;
当所述程序跳转到所述预设补丁代码后,所述预设补丁代码开始运行。
[0010]第二方面,本申请实施例提供一种多核系统的调试装置,所述装置包括:目标位置确定模块,预设补丁代码植入模块,预设补丁代码运行模块,运行数据采集模块和调试模块;所述目标位置确定模块,用于获取多核系统中待调试代码的位置,作为目标位置;所述预设补丁代码植入模块,用于向所述目标位置植入预设补丁代码;所述预设补丁代码运行模块,用于当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行;所述运行数据采集模块,用于获取所述预设补丁代码对应的待调试代码的运行数据;所述调试模块,用于将所述运行数据作为调试数据导出并存储,完成对所述多核系统的调试。
[0011]可选地,在所述预设补丁代码植入模块之前,所述装置还包括:补丁PC值确定模块,用于确定所述预设补丁代码对应的PC值,作为补丁PC值;加载模块,用于将所述补丁PC值加载到中央处理器的补丁表中。
[0012]可选地,所述预设补丁代码运行模块,包括:跳转模块,用于当所述多核系统中的程序运行到所述目标位置时,根据所述补丁表中的补丁PC值跳转到所述预设补丁代码;预设补丁代码运行子模块,用于当所述程序跳转到所述预设补丁代码后,所述预设补丁代码开始运行。
[0013]第三方面,本申请实施例提供一种计算机设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如第一方面所述的多核系统的调试方法。
[0014]第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如第一方面所述的多核系统的调试方法。
[0015]相较于现有技术,本申请具有以下有益效果:本申请通过获取多核系统中待调试代码的位置,作为目标位置,向所述目标位置植入预设补丁代码,当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行,获取所述预设补丁代码对应的待调试代码的运行数据,将所述运行数据作为调试数据导出并存储,完成对所述多核系统的调试。其中,通过在目标位置植入预设补丁代码,区别于现有技术中的断点式设置,不会使CPU停止工作,保证多核系统的运行的稳定性,并且通过运行所述预设补丁代码,并采集其运行数据,可以实现对多核系统的调试,且不需要反复修改代码,也不需要烧写固件,实现在线调试,提高了调试的效率。
附图说明
[0016]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可
以根据这些附图获得其他的附图。
[0017]图1为本申请实施例提供的一种多核系统的调试方法的流程图;图2a为本申请实施例提供的一种多核系统的调试过程的示意图;图2b为本申请实施例提供的一种CPU内存分布的示意图;图3为本申请实施例提供的一种多核系统的调试装置的结构示意图。
具体实施方式
[0018]正如前文描述,在针对多核系统的调试的研究中发现,在现有技术中,采用的是传统断点式调试方法,对多核系统中的代码进行调试,其通过暂停待调试代码对应的CPU的运行,再进行调试。但是这种传统的调试方法,会导致CPU运行停止,并且无法原图其他CPU发送同步消息等,可能会引起其他CPU上的程序运行或状态紊乱,并不能达到有效的调试,并且还可能会导致系统崩溃。为了解决传统断点式调试方法所带来的缺陷,在现有技术中,还可以通过注入和分析系统日志的方法,对多核系统进行调试,这种方法不会停止CPU运行,但是需要不断的修改代码,加入日志代码,然后编译,发布,烧写固件,复现问题,收集和分析日志,其的调试过程效率很低。并且如果需要现场调试,客户可能不允许将在线运行的系统重新烧录成用于调试的工程版固件,中断系统运行,那么这种调试也就无法实施。
[0019]为了解决上述问题,本申请实施例提供一种多核系统的调试方法、装置、计算机设备及存储介质。该方法包括:获取多核系统中待调试代码的位置,作为目标位置,向所述目标位置植入预设补丁代码,当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行,获取所述预设补丁代码对应的待调试代码的运行数据,将所述运行数据作为调试数据导出并存储,完成对所述多核系统的调试。
[0020]如此,在目标位置植入本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多核系统的调试方法,其特征在于,所述方法包括:获取多核系统中待调试代码的位置,作为目标位置;向所述目标位置植入预设补丁代码;当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行;获取所述预设补丁代码对应的待调试代码的运行数据;将所述运行数据作为调试数据导出并存储,完成对所述多核系统的调试。2.根据权利要求1所述的多核系统的调试方法,其特征在于,在向所述目标位置植入预设补丁代码之前,所述方法还包括:确定所述预设补丁代码对应的PC值,作为补丁PC值;将所述补丁PC值加载到中央处理器的补丁表中。3.根据权利要求2所述的多核系统的调试方法,其特征在于,所述当所述多核系统中的程序运行到所述目标位置时,所述预设补丁代码开始运行,包括:当所述多核系统中的程序运行到所述目标位置时,根据所述补丁表中的补丁PC值跳转到所述预设补丁代码;当所述程序跳转到所述预设补丁代码后,所述预设补丁代码开始运行。4.一种多核系统的调试装置,其特征在于,所述装置包括:目标位置确定模块,预设补丁代码植入模块,预设补丁代码运行模块,运行数据采集模块和调试模块;所述目标位置确定模块,用于获取多核系统中待调试代码的位置,作为目标位置;所述预设补丁代码植入模块,用于向所述目标位置植入预设补丁代码;所述预设补丁代码运行模块,用于当所述多核系统中的程序运行到所述目标位置...

【专利技术属性】
技术研发人员:黄钧
申请(专利权)人:北京紫光芯能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1