CN114398290A - 一种程序调试方法、装置、设备及介质 - Google Patents

一种程序调试方法、装置、设备及介质 Download PDF

Info

Publication number
CN114398290A
CN114398290A CN202210066026.0A CN202210066026A CN114398290A CN 114398290 A CN114398290 A CN 114398290A CN 202210066026 A CN202210066026 A CN 202210066026A CN 114398290 A CN114398290 A CN 114398290A
Authority
CN
China
Prior art keywords
debugging
program
preset
debugger
target
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
Application number
CN202210066026.0A
Other languages
English (en)
Other versions
CN114398290B (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.)
Hangzhou Era Yitong Software Ltd By Share Ltd
Original Assignee
Hangzhou Era Yitong Software Ltd By Share 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 Hangzhou Era Yitong Software Ltd By Share Ltd filed Critical Hangzhou Era Yitong Software Ltd By Share Ltd
Priority to CN202210066026.0A priority Critical patent/CN114398290B/zh
Publication of CN114398290A publication Critical patent/CN114398290A/zh
Application granted granted Critical
Publication of CN114398290B publication Critical patent/CN114398290B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • 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)
  • 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

一种程序调试方法、装置、设备及介质
技术领域
本发明涉及计算机程序调试领域,特别涉及一种程序调试方法、装置、设备及介质。
背景技术
如今无论是企业的运转还是个人的生活都离不开各种各样的软件支撑,但想要开发一款软件需要专业的编程知识,这大大提升了非专业人员想要制作一款软件的难度。为降低开发门槛,市面上出现了一些软件开发平台,这些平台屏蔽了大量底层逻辑只需要学习少量的编程知识并通过可视化图形技术就可直观的使任何人都能快速开发出一款自己想要的软件。
所谓可视化图形技术就是用简单易懂的流程图方式去替代代码逻辑,然后通过平台将流程图转换为可用代码。但市面上可视化开发平台往往仅有流程图的代码生成功能,然后运行系统通过输出结果,来判断流程是否正确。
由上可见,在可视化图形技术进行软件开发过程中,如何对可视化开发平台生成的代码进行调试是本领域有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种程序调试方法、装置、设备及介质,能够将可视化的程序流程图与生成的代码进行关联,并为排查错误和校验数据提供直观的界面支持,进而实现对可视化开发平台生成的代码进行调试。其具体方案如下:
第一方面,本申请公开了一种程序调试法,包括:
获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码;
利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系;
将调试器与所述预设绘图工具进行连接;
利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
可选的,所述利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系,包括:
利用antlr4对所述源码进行解析,以获取所述各流程组件在所述源码中对应的位置信息,并形成位置映射关系。
可选的,所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试,包括:
利用所述调试器通过JDI接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
可选的,所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试,包括:
通过预设组件获取接口确定目标断点组件,并将所述目标断点组件确定为目标流程组件;
通过所述调试器为所述程序流程图中的所述目标流程组件上添加断点标识,并在所述目标代码位置进行断点;
基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置;
利用预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
可选的,所述利用预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息之后,还包括:
通过预设的步长调试按键获取步长调试命令;所述步长调试命令包括用于进入下一流程的命令、用于进入调用流程的命令、用于跳出当前流程的命令以及用于在中断后继续调试的命令中的任意一种或多种;
根据所述步长调试命令重新确定目标流程组件;
基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置;
利用所述预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
可选的,所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试之前,包括:
根据预设的命令行程序获取远程调试参数,并利用所述远程调试参数进行调试配置。
可选的,所述向所述调试器返回相应的调试信息,包括:
获取当前的可用变量信息;
将所述可用变量信息以预设格式发送至调试器的预设参数显示界面中,并将当前目标流程组件以预设显示格式进行显示。
第二方面,本申请公开了一种程序调试装置,包括:
源码获取模块,用于获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码;
位置信息获取模块,用于利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系;
工具连接模块,用于将调试器与所述预设绘图工具进行连接;
程序调试模块,用于利用所述调试器通过预设调试接口结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的程序调试方法。
第四方面,本申请公开了一种计算机存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的程序调试方法的步骤。
本申请先获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码,然后利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系,最后将调试器与所述预设绘图工具进行连接,利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。本申请通过调试器针对程序流程图对平台生成的源码进行调试,为排查错误和校验数据提供直观的界面支持,可以直接在原有开发平台上对生成的源码进行调试不需要使用第三方代码工具,极大的提升了排查问题和校验数据的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种程序调试方法流程图;
图2为本申请提供的一种具体的程序调试方法流程图;
图3为本申请提供的一种程序流程图的示例;
图4为本申请提供的一种源码的示例;
图5为本申请提供的一种带有断点标识的程序流程图的示例;
图6为本申请提供的一种高亮显示流程组件的示例;
图7为本申请提供的另一种高亮显示流程组件的示例;
图8为本申请提供的一种参数显示界面;
图9为本申请提供的一种程序调试装置结构示意图;
图10为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,可视化开发平台往往仅有程序流程图的代码生成功能,判断生成的代码是否正确只能通过查看输出结果来判断。在本申请中,可以实现通过对程序流程图中的各流程组件进行调试,进而对代码各部分的参数生成结果进行直观的判断,提升了对于图形化调试中排查问题和校验数据的效率。
本发明实施例公开了一种程序调试方法,参见图1所述,该方法包括:
步骤S11:获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码。
可以理解的是,本实施例中所述程序流程图为利用所述与设绘图工具绘制的,所述源码为通过可视化开发平台对所述程序流程图进行代码生成的结果,所述源码与所述程序流程图是相对应的。
步骤S12:利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系。
可以理解的是,在可视化流程里,一个程序流程(Flow)对应一个java类,类中有指定方法execute,而程序流程中的组件(Activity)对应的是execute方法体内的逻辑步骤。因此只需要在生成代码时记录每个组件对应在源码中的位置即可。生成的代码工具包括但不限于使用velocity模板,但在记录位置时只能记录组件在execute方法体内相对的位置。例如execute方法的第1行可能对应整个类所在位置的第8行,因此此时需要计算execute方法的起始位置,但由于一个类可能存在不同导包或注解,那么execute方法的起始位置就不是固定的,这就需要在生成完整类代码后再计算。所以本方法中所述源码为完整的类代码。
所述利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系,包括:利用antlr4对所述源码进行解析,以获取所述各流程组件在所述源码中对应的位置信息,并形成位置映射关系。可以理解的是,利用解析工具可以快速找到execute方法在类中的起始位置,以此获得了一个完整程序流程图所有组件所对应的源码位置。所述预设解析工具包括但不限于antlr4。
步骤S13:将调试器与所述预设绘图工具进行连接。
本实施例中,将调试器与所述预设绘图工具连接便可利用所述调试器基于所述预设绘图工具中的程序流程图进行调试。
步骤S14:利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试之前,包括:根据预设的命令行程序获取远程调试参数,并利用所述远程调试参数进行调试配置。在一种具体的实施例中,所述远程调试参数的命令可以是:-agentlib:jdwp=transport=dt_socket,address=10033,server=y,suspend=y。
本实施例中还要将调试器与目标虚拟机连接,通过com.sun.jdi.connect.AttachingConnector类,可以设置hostname及port(上步中的address=10033)就可以连接上目标虚拟机。
所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试,包括:利用所述调试器通过JDI(Java DebugInterface)接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。使用JDI接口的本质就是调试器对目标虚拟机注册关注的事件,当事件触发会向调试器返回通知。jvm每通知一个事件都会自动挂起,通过调试接口等待并获取下一步指令。JDI中每个事件都有对应的Request和Event,Request相当于注册一个事件,Event相当于通知一个事件,例如断点事件(BreakPointRequest,BreakPointEvent),步长事件(StepRequest,StepEvent),方法进入事件(MethodEntryRequest,MethodEntryEvent)等。可以理解的是,本实施例中在调试前先要进行对相关事件的注册。
所述向所述调试器返回相应的调试信息,包括:获取当前的可用变量信息;将所述可用变量信息以预设格式发送至调试器的预设参数显示界面中,并将当前目标流程组件以预设显示格式进行显示。本实施例中,在LocatableEvent中可以拿到目标虚拟机当前执行线程中的栈信息,从栈信息中可以获得区域内所有可用变量,将变量属性显示在界面以供校验。可以理解的是,在调试过程中,当前的可用变量信息会以预设的格式在相应的参数显示界面进行显示,可直观化的看到各流程的参数变化,极大的提升了排查问题的效率。
本申请先获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码,然后利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系,最后将调试器与所述预设绘图工具进行连接,利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。本申请通过调试器针对程序流程图对平台生成的源码进行调试,为排查错误和校验数据提供直观的界面支持,可以直接在原有开发平台上对生成的源码进行调试不需要使用第三方代码工具,极大的提升了排查问题和校验数据的效率。
图2为本申请实施例提供的一种具体的程序调试方法流程图。参见图2所示,该方法包括:
步骤S21:获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码。
步骤S22:利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系。
步骤S23:将调试器与所述预设绘图工具进行连接。
步骤S24:通过预设组件获取接口确定目标断点组件,并将所述目标断点组件确定为目标流程组件。
可以理解的是,所述目标断点组件是通过所述预设组件获取接口获取的,且所述目标断点组件为所述程序流程图中的某一组件,且在同一调试过程中,可以允许有多个目标断点组件。
步骤S25:通过所述调试器为所述程序流程图中的所述目标流程组件上添加断点标识,并在所述目标代码位置进行断点。
本步骤在用户端的图形化界面中为目标断点组件添加可视化的断点标识。
步骤S26:基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置。
本实施例中,利用所述位置映射关系,通过com.sun.jdi.request.EventRequestManager类对目标断点组件所在的位置就可以发起断点请求并设置断点,当程序代码运行中进入相应断点位置时,断点事件将被通知,此时将会通过调试接口等待下一步调试指令。
步骤S27:利用预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
步骤S28:通过预设的步长调试按键获取步长调试命令,并根据所述步长调试命令重新确定目标流程组件;所述步长调试命令包括用于进入下一流程的命令、用于进入调用流程的命令、用于跳出当前流程的命令以及用于在中断后继续调试的命令中的任意一种或多种。
可以理解的是,如果断点是我们调试流程的入口,那么如何控制调试器进入哪一步则是步长事件需要做的事情。在接收到断点事件后,我们可以通过com.sun.jdi.request.EventRequestManager类发送StepRequest请求来设置步长事件。StepRequest有2个关键性参数:size和depth。通过对参数size和depth的组合,对应图形界面的步长调试按键包括但不限于StepOver(进入下一流程)、StepInto(如果当前组件调用其他流程,进入该流程)、StepOut(跳出当前流程)、Resume(中断后继续调试)。通过预设的步长调试按键获取步长调试命令,并基于所述步长调试命令对程序流程图以及源码进行相应的运行与跳转。
步骤S29:基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置;利用所述预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
所述向所述调试器返回相应的调试信息,包括:获取当前的可用变量信息;将所述可用变量信息以预设格式发送至调试器的预设参数显示界面中,并将当前目标流程组件以预设显示格式进行显示。可以理解的是,本实施例中在使用调试器对程序流程进行调试的过程中,当运行到达断点位置或到达步长命令对应位置停止时,会从LocatableEvent中可以拿到虚拟机当前执行线程中的栈信息,从栈信息中可以获得区域内所有可用变量,并向用户端图形化界面中展示当前的可用变量信息以供校验。
当调试流程时,需要对是否取消步长事件进行判断,以按StepOver为例可能分为以下几种情况:
在第一种具体的实施方式中,当前组件不是流程中的结束组件,则跳入当前流程的下一个组件;
在第二种具体的实施方式中,当前组件是流程中的结束组件,但该流程被其他流程调用,此时应该跳入调用流程的界面继续调试;
在第三种具体的实施方式中,当前组件是流程中的结束组件且当前流程没有被其他流程调用,此时应该结束步长。
通过上述情况分析,在第三种具体的实施方式中需要通过调试器发送结束步长事件的请求,否则调试器仍将持续接收到步长事件,会在非调试模式下挂起程序。因此判断当前调试中是否含有后续组件代码时,通过LocatableEvent可以获得当前线程的所有线程栈信息,并通过判断所有栈信息所处的代码位置可以准确判断后续调试中是否还包含组件代码,以此来确定是否自动结束步长。
本实施例中详细展开了对于利用调试器对程序流程图中的相应位置打上断点,并利用预设的步长事件对程序的调试过程进行控制的过程,极大的在画面可视性提升的情况下,提升了排查问题和校验数据的效率。
如图3为一种程序流程图的示例,图中展示了包含“开始”、“创建Role对象”、“设置Role属性”、“结束”四个流程组件的流程图,图4为利用可视化开发平台对图3所示的程序流程图进行代码生成所生成的源码,在调试开始时,当获取到以“创建Role对象”为目标流程组件的命令时,则将“创建Role对象”的流程组件打上如图5所示的断点标识,当利用预设运行工具运行当前代码时,如图6所示将“创建Role对象”的流程组件高亮显示,此时在获取到基于StepOver按钮输入的步长调试命令后,如图7所示进入下一流程组件,即“设置Role属性”流程组件,并将“设置Role属性”流程组件高亮显示,并且会在参数显示界面中显示如图8所示的当前可用变量信息。
参见图9所示,本申请实施例公开了一种程序调试装置,具体可以包括:
源码获取模块11,用于获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码;
位置信息获取模块12,用于利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系;
工具连接模块13,用于将调试器与所述预设绘图工具进行连接;
程序调试模块14,用于利用所述调试器通过预设调试接口结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
本申请先获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码,然后利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系,最后将调试器与所述预设绘图工具进行连接,利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。本申请通过调试器针对程序流程图对平台生成的源码进行调试,为排查错误和校验数据提供直观的界面支持,可以直接在原有开发平台上对生成的源码进行调试不需要使用第三方代码工具,极大的提升了排查问题和校验数据的效率。
在一些具体实施例中,所述位置信息获取模块12,包括:
源码解析单元,用于利用antlr4对所述源码进行解析,以获取所述各流程组件在所述源码中对应的位置信息,并形成位置映射关系。
在一些具体实施例中,所述程序调试模块14,包括:
接口调用单元,用于利用所述调试器通过JDI接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
在一些具体实施例中,所述程序调试模块14,包括:
目标流程组件确定单元,用于通过预设组件获取接口确定目标断点组件,并将所述目标断点组件确定为目标流程组件;
组件断点单元,用于通过所述调试器为所述程序流程图中的所述目标流程组件上添加断点标识,并在所述目标代码位置进行断点;
第一位置确定单元,用于基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置;
第一信息返回单元,用于利用预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
在一些具体实施例中,所述第一信息返回单元之后,包括:
命令获取单元,用于通过预设的步长调试按键获取步长调试命令;所述步长调试命令包括用于进入下一流程的命令、用于进入调用流程的命令、用于跳出当前流程的命令以及用于在中断后继续调试的命令中的任意一种或多种;
组件重新确定单元,用于根据所述步长调试命令重新确定目标流程组件;
第二位置确定单元,用于基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置;
第二信息返回单元,用于利用所述预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
在一些具体实施例中,所述程序调试模块14之前,还包括:
调试配置单元,用于根据预设的命令行程序获取远程调试参数,并利用所述远程调试参数进行调试配置。
在一些具体实施例中,所述向所述调试器返回相应的调试信息,包括:
变量信息获取单元,获取当前的可用变量信息;
信息显示单元,将所述可用变量信息以预设格式发送至调试器的预设参数显示界面中,并将当前目标流程组件以预设显示格式进行显示。
进一步的,本申请实施例还公开了一种电子设备,图10是根据示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图10为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25、通信接口26以及通信总线27。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的程序调试方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的程序调试方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的程序调试方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的程序调试方法、装置、设备、存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种程序调试方法,其特征在于,包括:
获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码;
利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系;
将调试器与所述预设绘图工具进行连接;
利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
2.根据权利要求1所述的程序调试方法,其特征在于,所述利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系,包括:
利用antlr4对所述源码进行解析,以获取所述各流程组件在所述源码中对应的位置信息,并形成位置映射关系。
3.根据权利要求1所述的程序调试方法,其特征在于,所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试,包括:
利用所述调试器通过JDI接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
4.根据权利要求1所述的程序调试方法,其特征在于,所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试,包括:
通过预设组件获取接口确定目标断点组件,并将所述目标断点组件确定为目标流程组件;
通过所述调试器为所述程序流程图中的所述目标流程组件上添加断点标识,并在所述目标代码位置进行断点;
基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置;
利用预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
5.根据权利要求4所述的程序调试方法,其特征在于,所述利用预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息之后,还包括:
通过预设的步长调试按键获取步长调试命令;所述步长调试命令包括用于进入下一流程的命令、用于进入调用流程的命令、用于跳出当前流程的命令以及用于在中断后继续调试的命令中的任意一种或多种;
根据所述步长调试命令重新确定目标流程组件;
基于所述位置映射关系确定所述目标流程组件在源码中对应的目标代码位置;
利用所述预设运行工具运行所述源码,以便在运行至所述目标代码位置时停止运行,并向所述调试器返回相应的调试信息。
6.根据权利要求1所述的程序调试方法,其特征在于,所述利用所述调试器通过预设调试接口,结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试之前,还包括:
根据预设的命令行程序获取远程调试参数,并利用所述远程调试参数进行调试配置。
7.根据权利要求4至6任一项所述的程序调试方法,其特征在于,所述向所述调试器返回相应的调试信息,包括:
获取当前的可用变量信息;
将所述可用变量信息以预设格式发送至调试器的预设参数显示界面中,并将当前目标流程组件以预设显示格式进行显示。
8.一种程序调试装置,其特征在于,包括:
源码获取模块,用于获取使用预设绘图工具绘制的程序流程图与基于所述程序流程图生成的源码;
位置信息获取模块,用于利用预设解析工具对所述源码进行解析,以获取所述程序流程图中的各流程组件在所述源码中对应的位置信息,并形成位置映射关系;
工具连接模块,用于将调试器与所述预设绘图工具进行连接;
程序调试模块,用于利用所述调试器通过预设调试接口结合所述各流程组件对应的位置信息对所述程序流程图中的目标流程组件进行调试。
9.一种电子设备,其特征在于,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至7任一项所述的程序调试方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的程序调试方法。
CN202210066026.0A 2022-01-20 2022-01-20 一种程序调试方法、装置、设备及介质 Active CN114398290B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210066026.0A CN114398290B (zh) 2022-01-20 2022-01-20 一种程序调试方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210066026.0A CN114398290B (zh) 2022-01-20 2022-01-20 一种程序调试方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN114398290A true CN114398290A (zh) 2022-04-26
CN114398290B CN114398290B (zh) 2023-02-28

Family

ID=81232658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210066026.0A Active CN114398290B (zh) 2022-01-20 2022-01-20 一种程序调试方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN114398290B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050246690A1 (en) * 2004-04-29 2005-11-03 Microsoft Corporation Visualizer system and methods for debug environment
CN103514072A (zh) * 2012-06-28 2014-01-15 中兴通讯股份有限公司 一种用于可视化编程的图形化业务的调试方法及装置
CN104572425A (zh) * 2013-10-12 2015-04-29 上海海尔集成电路有限公司 程序调试方法、装置及系统
CN111913696A (zh) * 2020-08-07 2020-11-10 平安科技(深圳)有限公司 基于GDB的OpenCV程序可视化方法、装置、设备及存储介质
CN113742237A (zh) * 2021-09-13 2021-12-03 北京奕斯伟计算技术有限公司 程序调试方法、装置、设备以及存储介质
CN113778854A (zh) * 2021-07-06 2021-12-10 深圳点猫科技有限公司 一种代码错误定位方法、装置、电子设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050246690A1 (en) * 2004-04-29 2005-11-03 Microsoft Corporation Visualizer system and methods for debug environment
CN103514072A (zh) * 2012-06-28 2014-01-15 中兴通讯股份有限公司 一种用于可视化编程的图形化业务的调试方法及装置
CN104572425A (zh) * 2013-10-12 2015-04-29 上海海尔集成电路有限公司 程序调试方法、装置及系统
CN111913696A (zh) * 2020-08-07 2020-11-10 平安科技(深圳)有限公司 基于GDB的OpenCV程序可视化方法、装置、设备及存储介质
CN113778854A (zh) * 2021-07-06 2021-12-10 深圳点猫科技有限公司 一种代码错误定位方法、装置、电子设备及存储介质
CN113742237A (zh) * 2021-09-13 2021-12-03 北京奕斯伟计算技术有限公司 程序调试方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
CN114398290B (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
JP4420968B2 (ja) コマンディングのために方法及びコンピュータ可読媒体
US7805705B2 (en) Graphically depicting program code depth
CN112035101B (zh) 结合rpa及ai的命令库创建方法、装置、介质及设备
CN107678948B (zh) 测试用例生成方法、终端及存储介质
CN113364515B (zh) 基于Xstate的卫星遥控方法、装置、设备和存储介质
CN113360144B (zh) 软件开发的辅助处理方法、设备、存储介质及程序产品
CN104536398B (zh) 一种变频器监控方法和系统
CN115934566A (zh) 一种调试信息显示方法、装置、电子设备及存储介质
CN115658529A (zh) 用户页面的自动化测试方法以及相关设备
CN114398290B (zh) 一种程序调试方法、装置、设备及介质
CN117349183A (zh) 一种异常代码定位方法、装置、设备及存储介质
CN111142469B (zh) 一种plc的组态程序的调试方法及调试系统
CN109062784B (zh) 接口参数约束代码入口定位方法与系统
CN112825033A (zh) 界面代码的生成方法、装置、设备及存储介质
CN115688706A (zh) 一种信息校验方法、装置、设备及存储介质
CN115098116A (zh) 应用程序的模拟操作方法、装置、终端及存储介质
CN110554966B (zh) 一种驱动调试方法、行为分析方法及驱动调试系统
CN109062785B (zh) 接口参数约束代码定位方法与系统
Franke et al. Androlift: A tool for android application life cycles
JPH10301809A (ja) Gui操作手順の自動生成方法
CN111367597A (zh) 一种颜色切换方法、装置及电子设备
JP2006018477A (ja) シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体
JPH09223040A (ja) ソフトウェアのシステムテスト支援装置およびこれに用いるテストシナリオ生成装置
CN115543438A (zh) 一种提交说明的规范方法、装置、设备及存储介质
JP2009042951A (ja) プログラム中のデータ抽出方法及び装置

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