CN114237557B - 调试逻辑系统设计的方法、电子设备及存储介质 - Google Patents

调试逻辑系统设计的方法、电子设备及存储介质 Download PDF

Info

Publication number
CN114237557B
CN114237557B CN202111303072.XA CN202111303072A CN114237557B CN 114237557 B CN114237557 B CN 114237557B CN 202111303072 A CN202111303072 A CN 202111303072A CN 114237557 B CN114237557 B CN 114237557B
Authority
CN
China
Prior art keywords
code
system design
logic system
code segment
time
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
Application number
CN202111303072.XA
Other languages
English (en)
Other versions
CN114237557A (zh
Inventor
黄世杰
黄武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xinhuazhang Technology Co ltd
Original Assignee
Xinhuazhang Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xinhuazhang Technology Co ltd filed Critical Xinhuazhang Technology Co ltd
Priority to CN202111303072.XA priority Critical patent/CN114237557B/zh
Publication of CN114237557A publication Critical patent/CN114237557A/zh
Application granted granted Critical
Publication of CN114237557B publication Critical patent/CN114237557B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供一种调试逻辑系统设计的方法、电子设备及存储介质。该方法包括:运行所述逻辑系统设计;在第一时刻暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第一时刻的第一代码段;恢复所述逻辑系统设计的运行到第二时刻;在所述第二时刻暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第二时刻的第二代码段;以及在调试窗口的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段。

Description

调试逻辑系统设计的方法、电子设备及存储介质
技术领域
本公开涉及计算机软件技术领域,尤其涉及一种调试逻辑系统设计的方法、电子设备及存储介质。
背景技术
在计算机软件研发过程中,逻辑系统设计投入实际运行前,需要将编制的逻辑系统设计进行运行调试,调试过程中发现逻辑系统设计发生异常。需要针对所发现的异常,进一步诊断,找出原因和具体的异常的源头位置,并进行修正,保证逻辑系统设计的鲁棒性。
现有技术中,在调试过程中,异常情况往往是在异常结果发生以后,研发人员才能获知。但是,异常情况的源头通常并非调试工具报错的位置,而是在发生异常结果的程序代码之前的代码中。这样就需要研发人员同时查看多处代码并分析错误如何产生。
发明内容
有鉴于此,本公开的目的在于提出一种调试逻辑系统设计的方法、电子设备及存储介质用以解决或部分解决上述技术问题。
本公开的第一方面,提供了一种调试逻辑系统设计的方法,包括:
运行所述逻辑系统设计;在第一时刻暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第一时刻的第一代码段;恢复所述逻辑系统设计的运行到第二时刻;在所述第二时刻暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第二时刻的第二代码段;以及在调试窗口的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段。
本公开的第二方面,提供了一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以进行第一方面所述的方法。
本公开的第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行第一方面所述的方法。
本公开实施例提供的调试逻辑系统设计的方法、电子设备及存储介质,在逻辑系统设计运行过程中,用户可以触发逻辑系统设计中的多个时刻对应的多个代码段并进行存储,进而将多个代码段按照运行的时间顺序在调试窗口中进行显示,这样用户就可以通过调试窗口直观的看到自己对应标记的各个代码段,如果调试过程中出现异常结果,用户可以在调试窗口显示的各个代码段中寻找异常结果的源头,无需一步步反向进行查找,提高程序调试的效率。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例所提供的示例性电子设备的结构示意图;
图2为本公开实施例的示例性仿真工具的示意图;
图3A为本公开实施例的一个示例性调试工具的示意图;
图3B为本公开实施例的一个示例性显示单元的示意图;
图3C为本公开实施例的另一个示例性显示单元的示意图;
图3D为本公开实施例的再一个示例性显示单元的示意图;
图3E为本公开实施例的另一个示例性调试工具的示意图;
图3F为本公开实施例的显示单元中代码段进行列表显示的示意图;
图3G为本公开实施例的一个示例性调试窗口的示意图;
图3H为本公开实施例的与第一代码元素关联的多个代码段的示意图;
图4为本公开实施例的调试逻辑系统设计的示例性方法的流程示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
调试逻辑系统设计可以是在运行仿真工具的电子设备上对逻辑系统设计进行运行调试。在一些实施例中,逻辑系统设计可以包括一个或多个待调试(debug)的目标模块。因此,逻辑系统设计的调试可能涉及多个模块。
逻辑系统设计(例如,芯片设计),可以由软件编程语言(例如,java、JavaScript、C语言、C++语言、或PHP(Hypertext Preprocessor))设计,也可以由硬件编程语言(例如Verilog、VHDL、System C、或System Verilog)设计。
如上所述,异常情况的源头通常并非调试工具报错的位置,而是在发生异常结果的程序代码之前的代码中。这一问题在调试逻辑系统设计的过程中尤为突出。相比于普通的程序代码,逻辑系统设计的代码在运行过程中存在明显的时间线以及与时间线关联的运行状态,也就是一个芯片系统在运行时在不同的时间产生不同的运行状态。
在这种情况下,研发人员进行调试的时候,不仅仅需要关注当前报错的代码,还要同步调试报错代码之前的代码,甚至还要关注这些代码在不同时间线上的运行状态(例如,变量在不同运行时间的值)。而现有的调试工具仅能对一段代码进行调试,使得研发人员需要反复在不同的代码段之间进行切换,增加了调试工作的难度。
图1为本公开实施例所提供的示例性电子设备100的结构示意图。
如图1所示,电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中,处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在电子设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。在逻辑系统设计领域,用于调试逻辑系统设计的仿真工具可以是存储器104中存储的计算机程序。如图1所示,存储器存储的数据可以包括程序指令(例如,用于实现本公开的技术方案的程序指令)以及要处理的数据(例如,存储器可以存储在编译过程产生的临时代码)。处理器102也可以访问存储器存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述电子设备100的构成架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该电子设备100的构成架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述电子设备100的构成架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
在芯片设计领域,通常可以利用仿真工具对逻辑系统设计进行仿真调试。
图2示出了根据本公开实施例的仿真工具200的示意图。仿真工具200可以包括编译器210和仿真器220。
编译器210将存储器104中存储的逻辑系统设计202调取出来,进行编译,生成对应的执行代码204,将执行代码204在仿真器220中进行仿真调试,仿真器220将调试结果206输出,并通过显示器进行显示。
本公开的实施例提供了一种调试逻辑系统设计的调试工具。
图3A为本公开实施例的一个示例性调试工具300的示意图。调试工具300可以与仿真工具200结合使用。例如,调试工具300可以指示仿真工具200运行逻辑系统设计到指定的时刻,并且读取仿真的结果。
如图3A所示,调试工具300包括:调试单元320、存储单元340以及显示单元360。其中,显示单元360中包括:代码显示部分362和调试窗口364。
将逻辑系统设计302(例如,芯片设计)存储在存储单元340(存储单元340可以是图1中的存储器104或者存储器104中的一部分存储空间)中。利用调试单元320从存储单元340中调取对应的逻辑系统设计302,并使得仿真工具200运行该逻辑系统设计302。
显示单元360可以将调试单元320对逻辑系统设计302进行调试过程中的代码状态、调试结果以及调试过程中程序运行的多个代码段进行整理,将代码状态以及调试结果作为代码显示部分362进行显示,将整理的各个代码段在调试窗口364进行显示。
本申请中的代码段指代在调试过程中在调用栈中当前调用的代码段。代码段通常对应于一个函数、一个任务、或者一个模块等。因此,代码段通常包括多行代码。
图3B为本公开实施例的一个示例性显示单元360的示意图。
如图3B所示,显示单元360进一步包括代码显示部分362、调试窗口364以及时间轴366。
调试单元320会将逻辑系统设计302的代码段传送给显示单元360中的代码显示部分362进行显示。在一些实施例中,代码显示部分362会将当前运行的逻辑系统设计302的代码段优先在代码显示部分362的中间进行显示,每运行一句代码就将该代码突出显示出来,例如,放大突出显示、利用其他颜色进行突出显示或者采用闪烁/变色等方式,这里不作具体限定。在一些实施例中,调试窗口364中的底部提供有一个时间轴366,该时间轴366用于将调试窗口364中显示的内容(例如,图3B中要描述的第一代码段3641与第二代码段3642)以各自的运行时间进行排序。
调试运行过程中,运行到一些重要的(例如,可能对调试有帮助)代码段时,用户可以点击获取这些代码段。此时(例如,在时刻t1),逻辑系统设计302的运行就会暂停,将用户点击的代码段,以及该代码段的前后代码段的内容一起作为第一代码段3641存储在存储单元340中。同时,将该第一代码段3641中的内容在调试窗口364中对应第一时刻的时间轴366的对应位置以窗口的形式进行显示(如图3B中对应第一代码段3641的第一窗口364a,以及对应第二代码段3642的第二窗口364b)。
在一些实施例中,用户可以直接将第一代码段3641从代码显示部分362拖动到第一窗口364a。由于第一窗口364a是与时刻t1关联的窗口,所以在第一窗口364a显示的第一代码段3641可以突出显示第一代码段3641在时刻t1的状态(例如,各种变量在时刻t1的值)。
然后,用户就可以触发逻辑系统设计302恢复运行。当运行到下一个重要的代码段时,用户可以点击获取该下一个代码段。此时(例如,在时刻t2),逻辑系统设计302的运行就会暂停,将用户点击的下一个代码段,以及该代码段的前后代码段的内容一起作为第二代码段3642存储在存储单元340中。同时将该第二代码段3642中的内容在调试窗口364中对应第二时刻的时间轴366的对应位置以窗口的形式进行显示。其中,对应的第二代码段3642的数量可以有多个,这里就不作具体限定。
其中,各个代码段对应的窗口要小于调试窗口364的大小。时间轴366是按照逻辑系统设计302本身的运行时间顺序进行构建的。第一时刻和第二时刻根据运行时间在时间轴366上进行排序。
在一些实施例中,即使逻辑系统设计302在调试运行时已经跳过了某个代码段,也可以将该代码段进行存储,并在该代码段对应运行时间在时间轴366上的位置以窗口的形式进行显示。
图3C为本公开实施例的另一个示例性显示单元的示意图。
如图3C所示,在对调试的程序进行运行过程中,用户在调试中获取感兴趣的多个代码段(例如,用户觉得调试中的某些代码段可能存在问题,需要重点关注,或者用户觉得调试中的某些代码段存在明显的逻辑错误,需要重点关注)。如图3C所示,显示单元360的左侧是代码显示部分362,用来显示代码(如,code 110),在调试的过程中,当经过一些重要的代码段时,用户可以点击获取这些代码段。
其中,代码段中的内容可以包括:多个代码行,多个代码行中包括第一代码元素,第一代码元素可以是一个函数,也可以是函数加上其上下文信息(例如,变量、指针),或者也可以是函数的输入输出(例如,数组)。
如图3C所示,显示单元360中对应的调试窗口364为map 120,如果在debug的过程中用户对call stack 112感兴趣,则将其存储到存储单元340中,同时在调试窗口364的map120中显示,比如图3C中map 120中的call stack 122就是call stack 112的复制。将多个代码段按照debug的运行时序进行排序。如图3C所示,这个t1表示的是该call stack 122在debug过程中的时序关系。
在一些实施例中,如图3C所示,逻辑系统设计302调试运行时已经跳过了callstack 124,当前逻辑系统设计302正处于call stack 126处,并且已经将call stack 126存储到存储单元340中并已经在map 120的时间轴366上的对应位置进行显示。此时依然可以将该call stack 124进行存储,并在调试窗口364的对应时间轴366上的位置处进行显示,并且,call stack 124在map 120中所展示的时刻t2比call stack 126在map 120中所展示的时刻t3小。
图3D为本公开实施例的再一个示例性显示单元360的示意图。
在一些实施例中,调试单元320控制逻辑系统设计302进行运行过程中,可能存在在某一时刻(例如,第一时刻t1,但不限于第一时刻t1)同时运行多个代码段(例如,图3D中的第一代码段3641和第三代码段3643)。比如说,第一代码段3641是由第三代码段3643调用的。此时,表面上运行的是第一代码段3641,实际上第三代码段3643也是一同被调用的。用户可以将多个代码段一起在调试窗口364中的该时刻(如图3C中的t1)对应时间轴366的位置进行显示,以观察多个代码段在同一个时刻之间的互相影响。该多个代码段对应的窗口可以在该时间轴366的位置进行叠加显示。如图3D所示,在时间轴366的t1时刻,对应叠加显示了第一代码段3641和第三代码段3643。
图3E为本公开实施例的另一个示例性调试工具的示意图。
在一些实施例中,如图3E所示,该调试工具300还包括:标记单元380,该标记单元380能够根据代码段生成相应的调试标记,将调试标记按照各个代码段对应的时间顺序进行排列并列表存储在存储单元340中。同时,如图3F所示(其中,图3F为本公开实施例的显示单元360中代码段进行列表显示的示意图),显示单元360将表格364c在对应的调试窗口364中进行显示。
上述为对调试逻辑系统设计过程中,各个重要的代码段对应的各个代码段的存储过程,下面陈述对存储的代码段进行触发调用的过程:
在一些实施例中,如图3B所示的第一代码段3641和第二代码段3642。第一代码段3641中多个代码行中的第一代码元素3641b与第二代码段3642中多个代码行中的第二代码元素3642b是两个关联元素。这样,用户在第一代码段3641中选定第一代码元素3641b,对应调试窗口364就会将第二代码段3642中的第二代码元素3642b进行突出显示,如图3G所示(其中,图3G为本公开实施例的一个示例性调试窗口的示意图)。
图3H为本公开实施例的与第一代码元素关联的多个代码段的示意图。
在一些实施例中,如图3H所示,对于第一代码段3641的第一代码元素3641b可能会关联有多个代码元素h1、h2、h3和h4,例如,其中的h2为第二代码段中的第二代码元素3642b,当该第一代码元素3641b被触发时,则在调试窗口364将该第二代码段3642中第二代码元素3642b进行突出显示。以提示用户该第二代码元素3642b与第一代码元素3641b是相互关联的代码元素。
在一些实施例中,如果用户想要调取某个代码段中的代码进行执行,用户可以触发调用窗口364中该代码段对应的窗口中的目标代码3641a,调用窗口就会将选定目标代码的指令发送至调试单元320。调试单元320停止当前逻辑系统设计302的运行,从逻辑系统设计302中确定对应的目标代码3641a的位置,并控制逻辑系统设计302跳转至该目标代码3641a进行执行。各个代码段之间也可以相互切换进行调用,这样用户无需重新执行逻辑系统设计302来查找,节省逻辑系统设计302的调试时间,给调试过程带来便利。
如图3C所示,当调试结束时,该表格map 120可能存储了很多代码段,用户可以对比查看这些代码段,综合分析错误的来源,以提高调试的效率。用户可以在这些代码段对应的窗口中查看代码,并触发该代码段进行再次调试,从而深究内部的细节。
本公开实施例的调试工具,在逻辑系统设计运行过程中,用户可以触发逻辑系统设计中的多个时刻对应的多个代码段并进行存储,进而将多个代码段按照运行的时间顺序在调试窗口中进行显示,这样用户就可以通过调试窗口直观的看到自己对应标记的各个代码段,如果调试过程中出现异常结果,用户可以在调试窗口显示的各个代码段中寻找异常结果的源头,无需一步步反向进行查找,提高程序调试的效率。
本申请实施例还提供了一种调试逻辑系统设计的方法,方便用户查看对应的代码段,以及基于该代码段对调试异常结果的源头进行查找。
图4示出了本公开实施例所提供的一种调试逻辑系统设计的示例性方法400的流程示意图。方法400可以由图1的电子设备100执行,更具体地,由在电子设备100上运行的调试工具300执行。方法400可以包括如下步骤。
在步骤401,调试工具300可以运行所述逻辑系统设计。调试工具300可以从存储单元340中调取逻辑系统设计(例如,图3A中的302),并进行运行。可以理解的是,调试工具300通常与仿真工具200(例如,图2所示的仿真工具200)同时使用,调试工具300可以访问并调用仿真工具200的结果。
在步骤402,调试工具300可以在第一时刻(例如,图3B的时刻t1)暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第一时刻调用的第一代码段(例如,图3B的第一代码段3641)。如上所述,调试工具300可以在时刻t1暂停逻辑系统设计302的运行,并保存第一代码段在该时刻t1的状态。第一代码段可以是在运行中报错的一段代码或者是用户要进行调试的一段代码。
在一些实施例中,调试工具300在第一时刻(例如,时刻t1)可以保存所述逻辑系统设计在所述第一时刻调用的第三代码段(例如,图3D中的第三代码段3643),并且在调试窗口(例如,图3A-图3B的调试窗口360)的第一时刻处显示所述第三代码段(例如,图3D中在时刻t1显示存储的第一调用栈3641的基础上,显示存储第三代码段3643)。
在一些实施例中,调试工具300可以接收用户在所述第一代码段中选定目标代码的指令;以及根据所述第一时刻控制所述逻辑系统设计跳转至所述目标代码进行执行。
在步骤403,调试工具300可以恢复所述逻辑系统设计的运行到第二时刻(例如,图3B的时刻t2)。调试工具300可以根据用户的指令恢复逻辑系统设计302的运行,直到时刻t2。
在步骤404,调试工具300可以在所述第二时刻暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第二时刻调用的第二代码段(例如,图3B所示的在时刻t2对应的第二代码段3642)。对于逻辑系统设计而言,观察多个代码段(例如,函数、任务等)在不同时刻的状态(例如,各种变量的值的变化)是调试的关键。因此,本申请的实施例可以在例如时刻t2暂停并保存在时刻t2调用的第二代码段及其状态。
所述第一代码段可以包括:多个代码行。以第一代码段为例,其中的所述多个代码行可以包括第一代码元素,所述第一代码元素包括:函数、变量、指针、或数组。可以理解的是,本申请中的任何代码段均与第一代码段类似,可以包括多个代码行以及各种代码元素。
在一些实施例中,调试工具300可以接收用户在所述第一代码段中选定所述第一代码元素的指令;并且响应于所述指令,在所述调试窗口中突出显示所述第二代码段中与所述第一代码元素(例如,图3G中时刻t1的第一代码段3641选中的第一代码元素3641b)关联的第二代码元素(例如,图3G中在时刻t2的第二代码段3642中的第二代码元素3642b突出显示)。在一些调试情况中,通过在第二代码段中突出显示(例如,高亮、放大、加粗、变色、闪烁或者添加标示线等)与第一代码元素关联的第二代码元素,可以向用户有效显示逻辑系统设计从时刻t1运行到时刻t2的过程中发生的变化,方便用户的调试。例如,在时刻t1,第一代码段中的变量A被赋值;这一赋值使得第二代码段的变量B在时刻t2发生了值的变化。可以理解的是,与变量A关联的变量可能有多个,此处假定第二代码段中存在的关联变量为变量B。此时,根据本申请的实施例,当用户在时刻t1对应的窗口中选定变量A时,在时刻t2对应的窗口中变量B会相应高亮,从而向用户指示变量A和变量B在t1到t2这段时间的关系。因此,调试工具300可以根据所述逻辑系统设计的描述确定与所述第一代码元素(例如,上文的变量A)关联的多个代码元素;并且在所述第二代码段中确定所述多个代码元素中的第二代码元素(例如,上文的变量B)。
在步骤405,调试工具300可以在调试窗口(例如,图3A-图3B的调用窗口360)的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段(如图3B所示,在时刻t1显示的第一代码段3641和时刻t2显示的第二代码段3642)。
在一些实施例中,在调试窗口的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段可以进一步包括:根据所述第一代码段与所述第二代码段分别构建对应的第一窗口与第二窗口(例如,图3B中的第一窗口364a和第二窗口364b);以及在调试窗口的所述第一时刻和第二时刻处分别显示所述第一窗口和所述第二窗口。也就是说,调试工具300可以根据不同的时刻在不同的窗口中显示对应的代码段。
通过在调试窗口360中的不同“子”窗口(例如,上述第一窗口和第二窗口)显示不同时刻处调用的不同代码段,本申请的实施例允许用户沿着逻辑系统设计的运行时间来观察程序的执行,以及同时调试在不同时刻调用的多个代码段。
在一些实施例中,在调试窗口的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段可以进一步包括:根据所述第一代码段与所述第二代码段分别生成对应的第一调试标记与第二调试标记(例如,图3F中的第一代码段3641和第二代码段3642分别对应相应的第一调试标记和第二调试标记);按照所述第一时刻和第二时刻的排列顺序,将所述第一调试标记与第二调试标记存储到表格(例如,图3F中的表格364c)中;以及将所述表格进行显示。
本公开实施例提供的调试逻辑系统设计的方法,在逻辑系统设计运行过程中,用户可以触发逻辑系统设计中的多个时刻对应的多个代码段并进行存储,进而将多个代码段按照运行的时间顺序在调试窗口中进行显示,这样用户就可以通过调试窗口直观的看到自己对应标记的各个代码段,如果调试过程中出现异常结果,用户可以在调试窗口显示的各个代码段中寻找异常结果的源头,无需一步步反向进行查找,提高程序调试的效率。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种调试逻辑系统设计的方法,包括:
运行所述逻辑系统设计;
在第一时刻暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第一时刻调用的第一代码段;
恢复所述逻辑系统设计的运行到第二时刻;
在所述第二时刻暂停所述逻辑系统设计的运行以保存所述逻辑系统设计在所述第二时刻调用的第二代码段;以及
在调试窗口的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段。
2.如权利要求1所述的方法,进一步包括:
在所述第一时刻保存所述逻辑系统设计在所述第一时刻调用的第三代码段;以及
在所述调试窗口的第一时刻处显示所述第三代码段。
3.如权利要求1所述的方法,其中,所述第一代码段包括:多个代码行,其中,所述多个代码行中包括第一代码元素,所述第一代码元素包括:函数、变量、指针、或数组。
4.如权利要求3所述的方法,进一步包括:
接收用户在所述第一代码段中选定所述第一代码元素的指令;
响应于所述指令,在所述调试窗口中突出显示所述第二代码段中与所述第一代码元素关联的第二代码元素。
5.如权利要求4所述的方法,其中,在所述调试窗口中突出显示所述第二代码段中与所述第一代码元素关联的第二代码元素进一步包括:
根据所述逻辑系统设计的描述确定与所述第一代码元素关联的多个代码元素;
在所述第二代码段中确定所述多个代码元素中的第二代码元素。
6.根据权利要求1所述的方法,其中,在调试窗口的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段进一步包括:
根据所述第一代码段与所述第二代码段分别构建对应的第一窗口与第二窗口;
在调试窗口的所述第一时刻和第二时刻处分别显示所述第一窗口和所述第二窗口。
7.根据权利要求1所述的方法,其中,在调试窗口的所述第一时刻和第二时刻处分别显示所述第一代码段和第二代码段进一步包括:
根据所述第一代码段与所述第二代码段分别生成对应的第一调试标记与第二调试标记;
按照所述第一时刻和第二时刻的排列顺序,将所述第一调试标记与第二调试标记存储到表格中;
将所述表格进行显示。
8.根据权利要求3所述的方法,进一步包括:
接收用户在所述第一代码段中选定目标代码的指令;
根据所述第一时刻控制所述逻辑系统设计跳转至所述目标代码进行执行。
9.一种电子设备,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行该组指令以进行如权利要求1至8任意一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行权利要求1至8任一所述的方法。
CN202111303072.XA 2021-11-04 2021-11-04 调试逻辑系统设计的方法、电子设备及存储介质 Active CN114237557B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111303072.XA CN114237557B (zh) 2021-11-04 2021-11-04 调试逻辑系统设计的方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111303072.XA CN114237557B (zh) 2021-11-04 2021-11-04 调试逻辑系统设计的方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN114237557A CN114237557A (zh) 2022-03-25
CN114237557B true CN114237557B (zh) 2023-08-15

Family

ID=80748433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111303072.XA Active CN114237557B (zh) 2021-11-04 2021-11-04 调试逻辑系统设计的方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114237557B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115455876B (zh) * 2022-09-21 2023-09-22 芯华章科技(北京)有限公司 用于调试逻辑系统设计的方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739333A (zh) * 2008-11-25 2010-06-16 国际商业机器公司 应用程序的调试方法、调试工具及调试装置
US20130074036A1 (en) * 2011-09-16 2013-03-21 Joel R. Brandt Methods and apparatus for code segment handling
CN108063959A (zh) * 2016-11-09 2018-05-22 北京国双科技有限公司 机顶盒的调试方法、客户端、服务器及系统
CN112765032A (zh) * 2021-01-25 2021-05-07 广州市百果园网络科技有限公司 程序调试方法、装置、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739333A (zh) * 2008-11-25 2010-06-16 国际商业机器公司 应用程序的调试方法、调试工具及调试装置
US20130074036A1 (en) * 2011-09-16 2013-03-21 Joel R. Brandt Methods and apparatus for code segment handling
CN108063959A (zh) * 2016-11-09 2018-05-22 北京国双科技有限公司 机顶盒的调试方法、客户端、服务器及系统
CN112765032A (zh) * 2021-01-25 2021-05-07 广州市百果园网络科技有限公司 程序调试方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"PyCharm交互式运行指定代码片段";Iotfsd;《https://blog.csdn.net/u012915636/article/details/105795219》;第1-3页 *

Also Published As

Publication number Publication date
CN114237557A (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
US8935673B1 (en) System and method for debugging computer program based on execution history
CN106021102B (zh) 自动化测试文件的生成方法及装置
US20140359573A1 (en) Troubleshooting visuals and transient expressions in executing applications
US9921946B2 (en) Method and system to display and browse program trace using source code decoration
CN111209203B (zh) 一种基于源代码的模型验证方法
CN107203465A (zh) 系统接口测试方法及装置
CN106021101B (zh) 对移动终端进行测试的方法及装置
US9519739B1 (en) Parallel execution of function calls in a graphical model
CN114237557B (zh) 调试逻辑系统设计的方法、电子设备及存储介质
US9471465B2 (en) Trace value correlation with data field declarations
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
US10289219B2 (en) Communicating with an unsupported input device
CN112181411A (zh) 一种菜单生成方法、菜单生成装置及诊断设备
CN115951868B (zh) 执行脚本命令的方法、设备及存储介质
CN111382044A (zh) 性能瓶颈的定位方法、定位装置、电子设备及存储介质
CN114328062B (zh) 校验缓存一致性的方法、装置和存储介质
EP2820547B1 (en) Debugging method and computer program product
CN115906730A (zh) 验证逻辑系统设计的方法、设备及存储介质
CN115080113A (zh) 项目代码检测方法和装置、可读存储介质、电子设备
CN111240972B (zh) 一种基于源代码的模型验证装置
CN114968751A (zh) 一种无代码开发平台的程序调试方法和程序调试装置
US20200310791A1 (en) Error checking of notebook code blocks
WO2016001982A1 (ja) テストデータ生成支援装置、及びテストデータ生成支援方法
CN115455876B (zh) 用于调试逻辑系统设计的方法及电子设备
CN115756627A (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