CN114077538A - 程序调试方法、装置及可读存储介质 - Google Patents

程序调试方法、装置及可读存储介质 Download PDF

Info

Publication number
CN114077538A
CN114077538A CN202010839155.XA CN202010839155A CN114077538A CN 114077538 A CN114077538 A CN 114077538A CN 202010839155 A CN202010839155 A CN 202010839155A CN 114077538 A CN114077538 A CN 114077538A
Authority
CN
China
Prior art keywords
program
debugged
instruction
trigger point
debugging method
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.)
Pending
Application number
CN202010839155.XA
Other languages
English (en)
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.)
Futaihua Industry Shenzhen Co Ltd
Hon Hai Precision Industry Co Ltd
Original Assignee
Futaihua Industry Shenzhen Co Ltd
Hon Hai Precision Industry 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 Futaihua Industry Shenzhen Co Ltd, Hon Hai Precision Industry Co Ltd filed Critical Futaihua Industry Shenzhen Co Ltd
Priority to CN202010839155.XA priority Critical patent/CN114077538A/zh
Priority to US17/404,563 priority patent/US11397662B2/en
Publication of CN114077538A publication Critical patent/CN114077538A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3068Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data format conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/321Display for diagnostics, e.g. diagnostic result display, self-test user interface
    • G06F11/322Display of waveforms, e.g. of logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种程序调试方法、装置及计算机可读存储介质,用于识别并修复程序中的错误,所述方法包括:建立待调试程序对应的模拟运行环境;将所述待调试程序中的指令和与所述指令对应的理论波形进行映射;在所述待调试程序内设置触发点;从所述触发点运行所述待调试程序,并存储对应的仿真波形;以及将所述仿真波形与所述理论波形进行对比,当所述仿真波形与所述理论波形比对不一致时,识别所述错误,并对所述错误进行修复。

Description

程序调试方法、装置及可读存储介质
技术领域
本发明涉及软件调试技术领域,具体涉及一种程序调试方法、装置及计算机可读存储介质。
背景技术
当系统应用程序产生错误(Bug)时,通常是在现场可编程门阵列(field-programmable gate array,FPGA)验证时产生的问题,进行系统应用程序仿真时,这些问题容易被忽略或者本身不易产生。目前,一般通过两种方式查找此类错误,其中,第一种方式为设置调试端口连接内部逻辑电路,并且利用逻辑分析仪获取信号并找到错误,但是调试端口的设置不一定就在错误发生的位置上,可能需要多次重复和分析才能正确设置调试端口,并找到错误发生的原因,查找错误的过程比较费时。第二种方式为利用仿真的设备搭配软件代码找到错误,这种方式虽然查找错误的效率比较高,但是仿真的设备和环境成本较高。
发明内容
鉴于以上内容,有必要提出一种可快速查找程序错误,且成本较低的程序调试方法、装置及可读存储介质。
本申请的第一方面提供一种程序调试方法,用于识别并修复待调试程序中的错误,所述方法包括:
建立待调试程序对应的模拟运行环境;
将所述待调试程序中的指令和与所述指令对应的理论波形进行映射;
在所述待调试程序内设置触发点;
从所述触发点运行所述待调试程序,并存储对应的仿真波形;以及
将所述仿真波形与所述理论波形进行对比,当所述仿真波形与所述理论波形比对不一致时,识别所述错误,并对所述错误进行修复。
优选地,所述“建立待调试程序对应的模拟运行环境”的步骤包括:
读取所述待调试程序对应的程序文件;以及
运行所述的程序文件,以模拟所述待调试程序执行的过程。
优选地,所述“在所述待调试程序内设置触发点”的步骤包括:
模拟执行所述待调试程序,并根据执行结果确定产生所述错误的指令;以及
在产生所述错误的指令执行之前设置所述触发点。
优选地,所述“在所述待调试程序内设置触发点”的步骤包括:
在所述待调试程序的中间位置设置触发点。
优选地,所述程序调试方法还包括:
判断所述错误是否修复完毕;以及
如果所述错误没有修复完毕,则返回至所述“在所述待调试程序内设置触发点”的步骤,直至所述错误修复完毕结束。
优选地,所述“将所述待调试程序中的指令和与所述指令对应的理论波形进行映射”的步骤包括:
获取所述指令与机器代码编译器的列表文件;以及
根据所述列表文件将所述指令与所述理论波形进行对应。
优选地,所述程序文件为bin格式或者hex格式文件。
优选地,所述触发点为基本输入输出信号。
本申请的第二方面提供一种程序调试装置,所述程序调试装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述程序调试方法。
本申请的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的程序调试方法。
本发明所述程序调试方法、装置及计算机可读存储介质通过设置触发点,并从所述触发点对待调试程序进行仿真及仿真波形数据的存储,可减少调试过程中重复的次数,减少调试时间,加快仿真速度,同时,可减少存储仿真波形数据所占用的硬盘空间。此外,调试过程无需配置仿真设备,因此,成本较低。
附图说明
图1是本发明一实施方式的程序调试装置的功能模块图。
图2是本发明一实施方式的程序调试系统的功能模块图。
图3是本发明一实施方式的程序调试方法的流程图。
主要元件符号说明
程序调试装置 1
存储器 10
处理器 20
显示器 30
输入装置 40
程序调试系统 100
建立模块 101
映射模块 102
设置模块 103
仿真模块 104
判断模块 105
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
进一步需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
图1为本发明程序调试装置较佳实施例的功能模块图。
请参阅图1,本实施例中,程序调试装置1可为计算机装置。所述程序调试装置1包括电性连接的存储器10、至少一个处理器20、显示器30、输入装置40以及存储在所述存储器10中并可在所述处理器20上运行的程序调试系统100。
所述处理器20执行所述统程序调试系统100时实现程序调试方法实施例中的步骤,例如,图3所示的步骤S301~S306。或者,所述处理器20执行所述程序调试系统100时实现程序调试系统100实施例中各模块的功能,例如图2中的模块101~105。
所述程序调试系统100可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器10中,并由所述处理器20执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,所述指令段用于描述所述程序调试系统100在所述程序调试装置1中的执行过程。例如,所述程序调试系统100可以被分割成图2中的建立模块101、映射模块102、设置模块103、仿真模块104、及判断模块105。各模块具体功能参见下图2中各模块的功能。
本领域技术人员可以理解,所述示意图仅是程序调试装置1的示例,并不构成对程序调试装置1的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述程序调试装置1还可以包括网络接入设备、总线等。
所称处理器20可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者所述处理器20也可以是任何常规的处理器等,所述处理器20可以利用各种接口和总线连接程序调试装置1的各个部分。
所述存储器10可用于存储所述程序调试程序100和/或模块,所述处理器20通过运行或执行存储在所述存储器10内的计算机程序和/或模块,以及调用存储在存储器10内的数据,实现所述程序调试装置1的各种功能。所述存储器10可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
所述显示器30用于显示进行程序调试过程中的各种数据,例如,所述程序运行指令的理论波形以及仿真波形。
所述输入装置40可包括鼠标、键盘等输入设备,用于接收调试人员输入的数据。
图2为本发明程序调试系统较佳实施例的功能模块图。
参阅图2所示,程序调试系统100可以包括建立模块101、映射模块102、设置模块103、仿真模块104以及判断模块105。在一实施方式中,上述模块可以为存储于所述存储器10中且可被所述处理器20调用执行的可程序化软件指令。可以理解的是,在其他实施方式中,上述模块也可为固化于所述处理器20中的程序指令或固件(firmware)。
所述建立模块101用于建立待调试程序对应的模拟运行环境。所述映射模块102用于将所述待调试程序中的指令和与所述指令对应的理论波形进行映射。所述设置模块103用于在所述待调试程序内设置触发点。所述仿真模块104用于从所述触发点运行所述待调试程序,并存储对应的仿真波形。所述判断模块105用于将所述仿真波形与所述理论波形进行对比,当所述仿真波形与所述理论波形比对不一致时,识别所述错误,并对所述错误进行修复。
图3为本发明一实施方式中程序调试方法的流程图。根据不同的需求,所述流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S301,所述建立模块101建立待调试程序对应的模拟运行环境。
在本较佳实施例中,所述“建立待调试程序对应的模拟运行环境”的步骤包括:
步骤a1,读取所述待调试程序对应的程序文件。所述程序文件为bin格式或者hex格式文件,预存于所述存储器10内。
步骤a2,运行所述的程序文件,以模拟所述待调试程序执行的过程。
步骤S302,所述映射模块102将所述待调试程序中的指令和与所述指令对应的理论波形进行映射。所述理论波形是指所述指令中不存在错误时,执行所述指令生成的波形。
在本较佳实施例中,所述“将所述待调试程序中的指令和与所述指令对应的理论波形进行映射”的步骤包括:
步骤b1,获取所述指令与机器代码编译器的列表文件。所述列表文件可预存于所述存储器10内。
步骤b2,根据所述列表文件将所述指令与所述理论波形进行对应。
步骤S303,所述设置模块103在所述待调试程序内设置触发点。通过所述触发点,在后续仿真过程中,可方便查找对应的位置。
在本发明第一较佳实施例中,所述“在所述待调试程序内设置触发点”的步骤包括:
步骤c1,模拟执行所述待调试程序,并根据执行结果确定产生所述错误的指令。
步骤c2,在产生所述错误的指令执行之前设置所述触发点。
在本发明第二较佳实施例中,所述“在所述程序内设置触发点”的步骤包括:在所述待调试程序的中间位置设置触发点。
步骤S304,所述仿真模块104从所述触发点运行所述程序,并存储对应的仿真波形。
步骤S305,所述判断模块105将所述仿真波形与所述理论波形进行对比,当所述仿真波形与所述理论波形比对不一致时,识别所述错误,并对所述错误进行修复。可以理解,所述判断模块105可利用所述显示器30显示所述仿真波形与所述理论波形,方便调试人员查看。
步骤S306,所述判断模块105还进一步判断所述错误是否修复完毕,具体地,可由调试人员判断错误是否修复完毕,所述判断模块105利用所述输入装置40获取所述判断结果,如果没有修复完毕,则返回至所述步骤S303,再次重复步骤S303至S305,直至所述错误修复完毕结束。如果已经修复完毕,则结束流程。
上述程序调试方法、装置1及计算机可读存储介质通过设置触发点,并从所述触发点对待调试程序进行仿真及仿真波形数据的存储,可减少调试过程中重复的次数,减少调试时间,加快仿真速度,同时,可减少存储仿真波形数据所占用的硬盘空间。此外,调试过程无需配置仿真设备,因此,成本较低。
对本领域的技术人员来说,可以根据本发明的发明方案和发明构思结合生产的实际需要做出其他相应的改变或调整,而这些改变和调整都应属于本发明所公开的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

Claims (10)

1.一种程序调试方法,用于识别并修复待调试程序中的错误,其特征在于,所述方法包括:
建立待调试程序对应的模拟运行环境;
将所述待调试程序中的指令和与所述指令对应的理论波形进行映射;
在所述待调试程序内设置触发点;
从所述触发点运行所述待调试程序,并存储对应的仿真波形;以及
将所述仿真波形与所述理论波形进行对比,当所述仿真波形与所述理论波形比对不一致时,识别所述错误,并对所述错误进行修复。
2.如权利要求1所述的程序调试方法,其特征在于,所述“建立待调试程序对应的模拟运行环境”的步骤包括:
读取所述待调试程序对应的程序文件;以及
运行所述的程序文件,以模拟所述待调试程序执行的过程。
3.如权利要求1所述的程序调试方法,其特征在于,所述“在所述待调试程序内设置触发点”的步骤包括:
模拟执行所述待调试程序,并根据执行结果确定产生所述错误的指令;以及
在产生所述错误的指令执行之前设置所述触发点。
4.如权利要求1所述的程序调试方法,其特征在于,所述“在所述待调试程序内设置触发点”的步骤包括:
在所述待调试程序的中间位置设置触发点。
5.如权利要求1所述的程序调试方法,其特征在于,所述程序调试方法还包括:
判断所述错误是否修复完毕;以及
如果所述错误没有修复完毕,则返回至所述“在所述待调试程序内设置触发点”的步骤,直至所述错误修复完毕结束。
6.如权利要求1所述的程序调试方法,其特征在于,所述“将所述待调试程序中的指令和与所述指令对应的理论波形进行映射”的步骤包括:
获取所述指令与机器代码编译器的列表文件;以及
根据所述列表文件将所述指令与所述理论波形进行对应。
7.如权利要求2所述的程序调试方法,其特征在于,所述程序文件为bin格式或者hex格式文件。
8.如权利要求1所述的程序调试方法,其特征在于,所述触发点为基本输入输出信号。
9.一种程序调试装置,其特征在于:所述程序调试装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-8中任一项所述的程序调试方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-8中任一项所述的程序调试方法。
CN202010839155.XA 2020-08-19 2020-08-19 程序调试方法、装置及可读存储介质 Pending CN114077538A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010839155.XA CN114077538A (zh) 2020-08-19 2020-08-19 程序调试方法、装置及可读存储介质
US17/404,563 US11397662B2 (en) 2020-08-19 2021-08-17 Method for debugging computer program, device employing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010839155.XA CN114077538A (zh) 2020-08-19 2020-08-19 程序调试方法、装置及可读存储介质

Publications (1)

Publication Number Publication Date
CN114077538A true CN114077538A (zh) 2022-02-22

Family

ID=80270721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010839155.XA Pending CN114077538A (zh) 2020-08-19 2020-08-19 程序调试方法、装置及可读存储介质

Country Status (2)

Country Link
US (1) US11397662B2 (zh)
CN (1) CN114077538A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118093446A (zh) * 2024-04-28 2024-05-28 上海燧原智能科技有限公司 一种异构程序调试方法、系统、装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658650B1 (en) * 2000-02-18 2003-12-02 International Business Machines Corporation Service entry point for use in debugging multi-job computer programs
US20120167056A1 (en) * 2010-12-23 2012-06-28 Sap Ag Debugger for a metadata-centric development infrastructure
US9916407B2 (en) * 2013-12-05 2018-03-13 International Business Machines Corporation Phase algebra for analysis of hierarchical designs
US9165105B2 (en) * 2013-12-13 2015-10-20 Taiwan Semiconductor Manufacturing Co., Ltd. Rule checking for confining waveform induced constraint variation in static timing analysis
US10311184B2 (en) * 2016-03-02 2019-06-04 Synopsys, Inc. Circuit verification on a distributed database processing system

Also Published As

Publication number Publication date
US11397662B2 (en) 2022-07-26
US20220058109A1 (en) 2022-02-24

Similar Documents

Publication Publication Date Title
US7293204B2 (en) Computer peripheral connecting interface system configuration debugging method and system
CN111124921B (zh) 内存越界的检测方法、装置、设备和存储介质
WO2020237508A1 (zh) 一种断言验证代码绑定方法及装置
US20200381071A1 (en) Systems and methods for simulated device testing using a memory-based communication protocol
JP2017084082A (ja) シミュレーション装置、試験シナリオファイル作成方法、及び試験シナリオファイルを用いた試験方法
US8122293B2 (en) Method for automatically simulating manual testing of a computer, and testing system for performing the method
CN114662427A (zh) 一种逻辑系统设计的调试方法及设备
CN112286750A (zh) 一种gpio验证方法、装置、电子设备和介质
CN114676040A (zh) 一种测试覆盖率验证方法、装置及存储介质
CN115686961A (zh) 处理器测试方法、装置及电子设备
CN108628734B (zh) 一种功能程序调试方法和终端
CN114077538A (zh) 程序调试方法、装置及可读存储介质
CN114218882A (zh) 一种SoC芯片检验方法、装置及相关设备
CN114548027A (zh) 在验证系统中追踪信号的方法、电子设备及存储介质
CN109902001B (zh) 对未初始化变量的检测方法及终端设备
US20050091028A1 (en) Simulator and simulation method
US6845440B2 (en) System for preventing memory usage conflicts when generating and merging computer architecture test cases
CN101131663A (zh) 计算机PCI/PCI Express设备安装正确性的检测方法
CN110261758B (zh) 待测器件验证装置及相关产品
CN115827636B (zh) 存储及从波形数据库读取逻辑系统设计的仿真数据的方法
US20140281719A1 (en) Explaining excluding a test from a test suite
CN109388564B (zh) 一种测试方法、装置及电子设备
TWI761917B (zh) 程式調試方法、裝置及可讀存儲介質
CN113360402B (zh) 一种测试方法、电子设备、芯片和存储介质
CN115470125A (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