基于IDE调试框架的用于CPU程序的调试方法及调试系统转让专利

申请号 : CN202011160052.7

文献号 : CN112000584B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈健种挺刘亮张茜歌张海峰原义栋

申请人 : 北京智芯微电子科技有限公司国网信息通信产业集团有限公司

摘要 :

本发明涉及程序调试技术领域,提供一种基于IDE调试框架的用于CPU程序的调试方法、调试系统以及存储介质。所述调试方法包括:根据CPU程序的调试状态创建与所述调试状态相对应的启动程序;判断所述启动程序的类型,根据所述启动程序的类型确定是否创建调试程序。本发明基于IDE调试框架改进用于CPU程序的调试方法,对调试的启动程序进行分类,根据启动程序的类型确定是否创建调试程序。在CPU程序处于调试状态时,在用户错误操作或多次点击Debug按钮情况下能够对已创建的调试程序进行保护,使IDE开发环境容错性更好,保证IDE开发环境处于健康状态,大大提升研发效率。

权利要求 :

1.一种基于IDE调试框架的用于CPU程序的调试方法,其特征在于,所述方法包括:根据CPU程序的调试状态创建与所述调试状态相对应的启动程序;

判断所述启动程序的类型,根据所述启动程序的类型确定是否创建调试程序;

所述根据CPU程序的调试状态创建与所述调试状态相对应的启动程序,包括:通过工程的配置信息、调试启动信息以及工程名称确定CPU程序是否进入调试状态;

在CPU程序未进入调试状态的情况下,创建第一类型的启动程序;

在CPU程序已进入调试状态的情况下,创建第二类型的启动程序;

所述根据所述启动程序的类型确定是否创建调试程序,包括:若所述启动程序的类型为第一类型,则创建调试程序对CPU程序进行调试;

若所述启动程序的类型为第二类型,不创建调试程序,创建用户弹出框,并在关闭所述用户弹出框时释放系统资源。

2.根据权利要求1所述的基于IDE调试框架的用于CPU程序的调试方法,其特征在于,所述用户弹出框被配置为手动关闭,并被配置为在预设时间内未被手动关闭时自动关闭。

3.根据权利要求1所述的基于IDE调试框架的用于CPU程序的调试方法,其特征在于,所述创建用户弹出框的方法包括:采用线程同步技术将所述用户弹出框的线程加入到调试用户界面的线程中,并取消向动态库发送调试指令的动作。

4.一种基于IDE调试框架的用于CPU程序的调试系统,其特征在于,所述系统包括:启动模块,用于根据CPU程序的调试状态创建与所述调试状态相对应的启动程序;

会话模块,用于判断所述启动程序的类型,根据所述启动程序的类型确定是否创建调试程序;

所述根据CPU程序的调试状态创建与所述调试状态相对应的启动程序,包括:通过工程的配置信息、调试启动信息以及工程名称确定CPU程序是否进入调试状态;

在CPU程序未进入调试状态的情况下,创建第一类型的启动程序;

在CPU程序已进入调试状态的情况下,创建第二类型的启动程序;以及应用模块,用于:在所述会话模块判断所述启动程序的类型为第一类型时,创建调试程序对CPU程序进行调试;

在所述会话模块判断所述启动程序的类型为第二类型时,不创建调试程序,创建用户弹出框,并在关闭所述用户弹出框时释放系统资源。

5.根据权利要求4所述的基于IDE调试框架的用于CPU程序的调试系统,其特征在于,所述创建用户弹出框的方法包括:采用线程同步技术将所述用户弹出框的线程加入到调试用户界面的线程中,并取消向动态库发送调试指令的动作。

6.一种存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-3中任一项所述的基于IDE调试框架的用于CPU程序的调试方法。

说明书 :

基于IDE调试框架的用于CPU程序的调试方法及调试系统

技术领域

[0001] 本发明涉及程序调试技术领域,具体地涉及一种基于IDE调试框架的用于CPU程序的调试方法、一种基于IDE调试框架的用于CPU程序的调试系统以及一种存储介质。

背景技术

[0002] 在CPU芯片程序调试阶段,CPU开发工具为芯片调试提供的一套开发工具系统,包括开发工具软件和开发工具硬件。开发工具软件包含集成开发环境(IDE)、编译器(Compiler)、汇编器(ASSembler)、链接器(Linker)、调试器(Debugger)等;开发工具硬件为一套开发板,通过FPGA和一些外围电路对CPU的硬件逻辑进行仿真,配合开发工具软件实现对CPU的调试功能。在CPU软件调试时,研发人员可以操控IDE实现对CPU的调试,整体流程为:IDE开发环境将参数经过动态库解析,下发给USB设备驱动程序,再由设备驱动与硬件进行命令或数据下发,同时设备驱动可以返回设备状态给动态库,并最终把结果传递到IDE界面。由此可见,CPU的开发离不开IDE开发环境,IDE开发环境的优劣严重影响CPU程序调试。
[0003] 常见的CPU集成开发环境(IDE)是在Eclipse CDT的基础上集成插件,完成IDE开发环境和芯片的交互,IDE的调试框架也继承了Eclipse CDT的调试框架。Eclipse CDT原生态的调试框架可以对程序进行多次调试,只要用户点击Debug按钮,原生态的调试框架会一直创建调试程序,即单个程序可以进入多个调试状态,但是在调试CPU时,当CPU处于调试状态,用户通过IDE Debug按钮再次给CPU发起调试指令(或者用户误操作多次点击Debug按钮)会导致芯片进入Error机制,最后反馈结果会传递到IDE开发环境,导致IDE调试模块失效,甚至需重新启动IDE才可使用调试模块。如何在CPU处于调试状态时,保护IDE开发环境的完整性成为在设计IDE开发环境时需要重点考虑的问题。
[0004] 针对保护IDE开发环境的完整性这一问题,现有IDE设计主要是基于用户层面去解决,即用户发起一次CPU调试后不再操作IDE向芯片发送调试指令,必须先关闭CPU调试状态后才可再次发起调试指令。一旦用户发生误操作多次点击Debug按钮,IDE出现崩溃,需要关闭IDE后再重新打开,重复操作Debug步骤,这些重复操作都需要等待时间,严重影响研发效率。

发明内容

[0005] 本发明的目的是提供一种基于IDE调试框架的用于CPU程序的调试方法及调试系统,以解决上述的问题。
[0006] 为了实现上述目的,本发明一方面提供一种基于IDE调试框架的用于CPU程序的调试方法,所述方法包括:
[0007] 根据CPU程序的调试状态创建与所述调试状态相对应的启动程序;
[0008] 判断所述启动程序的类型,根据所述启动程序的类型确定是否创建调试程序。
[0009] 进一步地,所述根据CPU程序的调试状态创建与所述调试状态相对应的启动程序,包括:
[0010] 通过工程的配置信息、调试启动信息以及工程名称确定CPU程序是否进入调试状态;
[0011] 在CPU程序未进入调试状态的情况下,创建第一类型的启动程序;
[0012] 在CPU程序已进入调试状态的情况下,创建第二类型的启动程序。
[0013] 进一步地,所述根据所述启动程序的类型确定是否创建调试程序,包括:
[0014] 若所述启动程序的类型为第一类型,则创建调试程序对CPU程序进行调试;
[0015] 若所述启动程序的类型为第二类型,不创建调试程序,创建用户弹出框,并在关闭所述用户弹出框时释放系统资源。
[0016] 进一步地,所述用户弹出框被配置为手动关闭,并被配置为在预设时间内未被手动关闭时自动关闭。
[0017] 进一步地,所述创建用户弹出框的方法包括:
[0018] 采用线程同步技术将所述用户弹出框的线程加入到调试用户界面的线程中,并取消向动态库发送调试指令的动作。
[0019] 本发明基于IDE 调试框架改进用于CPU程序的调试方法,对调试的启动程序进行分类,根据启动程序的类型确定是否创建调试程序。在CPU程序处于调试状态时,在用户错误操作或多次点击Debug按钮情况下能够对已创建的调试程序进行保护,使IDE开发环境容错性更好,保证IDE开发环境处于健康状态,大大提升研发效率。
[0020] 本发明另一方面提供一种基于IDE调试框架的用于CPU程序的调试系统,所述系统包括:
[0021] 启动模块,用于根据CPU程序的调试状态创建与所述调试状态相对应的启动程序;
[0022] 会话模块,用于判断所述启动程序的类型,根据所述启动程序的类型确定是否创建调试程序。
[0023] 进一步地,所述根据CPU程序的调试状态创建与所述调试状态相对应的启动程序,包括:
[0024] 通过工程的配置信息、调试启动信息以及工程名称确定CPU程序是否进入调试状态;
[0025] 在CPU程序未进入调试状态的情况下,创建第一类型的启动程序;
[0026] 在CPU程序已进入调试状态的情况下,创建第二类型的启动程序。
[0027] 进一步地,所述系统还包括:应用模块;在所述会话模块判断所述启动程序的类型为第一类型时,所述应用模块创建调试程序对CPU程序进行调试;
[0028] 在所述会话模块判断所述启动程序的类型为第二类型时,所述应用模块不创建调试程序,创建用户弹出框,并在关闭所述用户弹出框时释放系统资源。
[0029] 进一步地,所述创建用户弹出框的方法包括:
[0030] 采用线程同步技术将所述用户弹出框的线程加入到调试用户界面的线程中,并取消向动态库发送调试指令的动作。
[0031] 本发明的调试系统基于IDE 调试框架对启动模块和会话模块进行定制化设计,在CPU程序处于调试状态时,在用户错误操作或多次点击Debug按钮情况下能够对已创建的调试程序进行保护,使IDE开发环境容错性更好,保证IDE开发环境处于健康状态,大大提升研发效率。
[0032] 本发明还提供一种存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的基于IDE调试框架的用于CPU程序的调试方法。
[0033] 本发明实施方式的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

[0034] 附图是用来提供对本发明实施方式的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施方式,但并不构成对本发明实施方式的限制。在附图中:
[0035] 图1是本发明一种实施方式提供的基于IDE调试框架的用于CPU程序的调试方法的流程图;
[0036] 图2是本发明一种实施方式提供的用户界面的CPU程序调试流程图;
[0037] 图3是本发明一种实施方式提供的基于IDE调试框架的用于CPU程序的调试系统的框图。

具体实施方式

[0038] 以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0039] 图1是本发明一种实施方式提供的基于IDE调试框架的用于CPU程序的调试方法的流程图。如图1所示,本发明实施方式提供一种基于IDE调试框架的用于CPU程序的调试方法,所述方法包括:
[0040] S1)根据CPU程序的调试状态创建与所述调试状态相对应的启动程序。
[0041] IDE发起调试请求时,通过工程的配置信息、调试启动信息以及工程名称确定CPU程序是否进入调试状态;在CPU程序未进入调试状态的情况下,创建第一类型的启动程序;在CPU程序已进入调试状态的情况下,创建第二类型的启动程序。在一个具体的实施例中:
对Launch程序(启动程序)的类型进行自定义并分类:首次调试创建的Launch程序为第一类型;未关闭调试状态时,再次创建的Launch程序为第二类型;关闭调试状态后,再次创建的Launch程序为第一类型。通过工程的config(配置信息)、debug launch(调试启动信息)、工程名称等来判断CPU程序是否进入调试状态。若当前CPU程序不是调试状态,则创建一个第一类型的Launch程序;若当前CPU程序已经是调试状态,则创建一个第二类型的Launch程序。
[0042] S2)判断所述启动程序的类型,根据所述启动程序的类型确定是否创建调试程序。
[0043] 判断所述启动程序的类型,若所述启动程序的类型为第一类型,则创建调试程序对CPU程序进行调试;若所述启动程序的类型为第二类型,则不创建调试程序,而是创建用户弹出框,并在关闭所述用户弹出框时释放系统资源。创建用户弹出框的方法为:采用线程同步技术将所述用户弹出框的线程加入到调试用户界面的线程中,并取消向动态库发送调试指令的动作。所述用户弹出框被配置为手动关闭,并被配置为在预设时间内未被手动关闭时自动关闭。
[0044] 在一个具体的实施例中:通过判断Launch程序的类型来控制Debug按钮的功能;若Launch程序为第一类型,则在IDE界面创建调试程序,CPU程序进入Debugger状态;若Launch程序为第二类型,则不创建调试程序,并采用SWT的线程同步技术syncExec,将JFace技术创建的用户弹出框“xxx debug already started,please check it again”线程加入到Eclipse DebugUI(调试用户界面)线程中,在IDE Debug页面完成弹出框的设计,同时IDE取消向DLL(动态库)传递调试器参数的动作。用户点击弹出框“OK”按钮(关闭按钮)时,IDE Debug页面将多余的Debug C/C++ Application删除,释放系统资源。在设计用户弹出框时,加入自动关闭用户弹出框的操作,用户在预设时间(例如10秒)内未手动关闭用户弹出框,弹出框的资源释放线程处于休眠状态,一旦超过预设时间,资源释放线程开始执行,弹出框自动关闭。在现有的IDE Debug框架中,用户再次点击了Debug按钮,虽然没有再次创建调试程序,但是系统为此申请了资源。本实施例在SWT线程同步中加入释放资源代码块、销毁Launch代码块的操作,用户点击弹出框的关闭按钮,即释放系统资源, IDE Debug页面多余的Debug C/C++ Application自动删除。
[0045] 图2是本发明一种实施方式提供的用户界面的CPU程序调试流程图。如图2所示,当用户误操作再次点击了Debug按钮,Debug页面会弹出提示框(即用户弹出框),用户点击弹出框OK按钮或等待10秒后弹出框消失,Debug页面删除多余的调试应用,执行已创建的Debug应用直至本次调试结束。
[0046] 本发明实施方式基于IDE 调试框架改进用于CPU程序的调试方法,对Eclipse CDT的Launch和Session架构进行定制化设计,在多个调试程序环境下可以保证第一类型的调试程序正常运行。该方法能够在CPU程序处于调试状态时,在用户错误操作或多次点击Debug按钮情况下能够对已创建的调试程序进行保护,使IDE开发环境容错性更好,保证IDE开发环境处于健康状态,大大提升研发效率。
[0047] 图3是本发明一种实施方式提供的基于IDE调试框架的用于CPU程序的调试系统的框图。如图3所示,本发明实施方式提供一种基于IDE调试框架的用于CPU程序的调试系统,包括启动模块、会话模块和应用模块。所述启动模块用于根据CPU程序的调试状态创建与所述调试状态相对应的启动程序。所述会话模块用于确定所述启动程序的类型,根据所述启动程序的类型确定是否创建调试程序。
[0048] 所述启动模块通过工程的配置信息、调试启动信息以及工程名称确定CPU程序是否进入调试状态;在CPU程序未进入调试状态的情况下,创建第一类型的启动程序;在CPU程序已进入调试状态的情况下,创建第二类型的启动程序。在一个具体的实施例中:启动模块对Launch程序(启动程序)的类型进行自定义并分类:首次调试创建的Launch程序为第一类型;未关闭调试状态时,再次创建的Launch程序为第二类型;关闭调试状态后,再次创建的Launch程序为第一类型。通过工程的config(配置信息)、debug launch(调试启动信息)、工程名称等来判断CPU程序是否进入调试状态。若当前CPU程序不是调试状态,则创建一个第一类型的Launch程序;若当前CPU程序已经是调试状态,则创建一个第二类型的Launch程序。
[0049] 所述会话模块判断启动程序的类型,在所述会话模块判断所述启动程序的类型为第一类型时,所述应用模块创建调试程序对CPU程序进行调试;在所述会话模块判断所述启动程序的类型为第二类型时,所述应用模块不创建调试程序,而是创建用户弹出框,在关闭所述用户弹出框时释放系统资源。创建用户弹出框的方法为采用线程同步技术将所述用户弹出框的线程加入到调试用户界面的线程中,并取消向动态库发送调试指令的动作。在一个具体的实施例中:会话模块通过判断Launch程序的类型来控制Debug按钮的功能;若Launch程序为第一类型,应用模块在IDE界面创建调试程序,CPU程序进入Debugger状态;若Launch程序为第二类型,应用模块不创建调试程序,而是采用SWT的线程同步技术syncExec,将JFace技术创建的用户弹出框“xxx debug already started,please check it again”线程加入到Eclipse DebugUI(调试用户界面)线程中,在IDE Debug页面完成弹出框的设计,同时IDE取消向DLL(动态库)传递调试器参数的动作。用户点击弹出框“OK”按钮(关闭按钮)时,IDE Debug页面将多余的Debug C/C++ Application删除,释放系统资源。在设计用户弹出框时,加入自动关闭用户弹出框的操作,用户在预设时间(例如10秒)内未手动关闭用户弹出框,弹出框的资源释放线程处于休眠状态,一旦超过预设时间,资源释放线程开始执行,弹出框自动关闭。在现有的IDE Debug框架中,用户再次点击了Debug按钮,虽然没有再次创建调试程序,但是系统为此申请了资源。本实施例在SWT线程同步中加入释放资源代码块、销毁Launch代码块的操作,用户点击弹出框的关闭按钮,即释放系统资源, IDE Debug页面多余的Debug C/C++ Application自动删除。
[0050] 本发明实施方式基于IDE 调试框架对启动模块和会话模块进行定制化设计,在CPU程序处于调试状态时,在用户错误操作或多次点击Debug按钮情况下能够对已创建的调试程序进行保护,使IDE开发环境容错性更好,保证IDE开发环境处于健康状态,大大提升研发效率。
[0051] 本发明实施方式还提供一种机器可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的基于IDE调试框架的用于CPU程序的调试方法。
[0052] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0053] 本申请是参照根据本申请实施例的方法、系统和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0054] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0055] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0056] 最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。