CN107665167B - 程序调试方法、装置及程序开发设备 - Google Patents

程序调试方法、装置及程序开发设备 Download PDF

Info

Publication number
CN107665167B
CN107665167B CN201610609793.6A CN201610609793A CN107665167B CN 107665167 B CN107665167 B CN 107665167B CN 201610609793 A CN201610609793 A CN 201610609793A CN 107665167 B CN107665167 B CN 107665167B
Authority
CN
China
Prior art keywords
primitive
execution
stack
information
debugging
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
CN201610609793.6A
Other languages
English (en)
Other versions
CN107665167A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610609793.6A priority Critical patent/CN107665167B/zh
Publication of CN107665167A publication Critical patent/CN107665167A/zh
Application granted granted Critical
Publication of CN107665167B publication Critical patent/CN107665167B/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/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/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种程序调试方法、装置及程序开发设备,属于软件开发技术领域,所述方法包括:向目标代码中添加特征代码,目标代码根据可视化业务流程图生成,特征代码与可视化业务流程图中的图元对应,特征代码用于在调试日志中写入图元的图元信息;运行目标程序并生成调试日志,目标程序根据目标代码编译生成;获取调试日志中包含的图元信息;根据图元信息在可视化业务流程图中标识图元的执行轨迹。本发明实施例解决了开发人员仍旧需要基于目标代码进行程序调试,调试难度较高且效率较低的问题;达到了根据调试日志中包含的图元信息,在可视化业务流程图中标识出业务执行路径,实现基于可视化业务流程图的程序调试,从而降低了调试难度,提高了调试效率。

Description

程序调试方法、装置及程序开发设备
技术领域
本发明涉及软件开发技术领域,特别涉及一种程序调试方法、装置及程序开发设备。
背景技术
为了降低软件开发难度并提高开发效率,利用图形化业务开发环境(英文:Service Creation Environment;简称:SCE)进行程序开发已逐渐成为主流。
图形化SCE中提供了大量图元供开发人员使用,其中,不同的图元用于实现不同的功能,比如,选择(英文:switch)图元用于实现选择功能,状态(英文:condition)图元则用于实现判断功能。在程序开发过程中,开发人员只需要根据业务逻辑选择相应的图元,并将图元组合成可视化业务流程图,最终由图形化SCE通过代码自动生成技术将该业务流程图转换成相应的目标代码。
虽然利用图形化的开发方式能够显著提高代码的编写效率,但是开发人员仍旧需要基于目标代码进行程序调试,当目标代码的代码量庞大时,调试难度较高且效率较低。
发明内容
为了解决开发人员仍旧需要基于目标代码进行程序调试,当目标代码的代码量庞大时,调试难度较高且效率较低的问题,本发明实施例提供了一种程序调试方法、装置及程序开发设备。所述技术方案如下:
第一方面,提供了一种程序调试方法,该方法包括:
向目标代码中添加特征代码,所述目标代码根据可视化业务流程图生成,所述特征代码与所述可视化业务流程图中的图元对应,所述特征代码用于在调试日志中写入所述图元的图元信息;
运行目标程序并生成所述调试日志,所述目标程序根据所述目标代码编译生成;
获取所述调试日志中包含的所述图元信息;
根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹。
本实施方式中,在对目标代码进行编译运行前,根据可视化业务流程图中包含的图元,向目标代码中插入用于输出图元信息的特征代码;当对目标代码进行编译运行并生成调试日志时,即可根据该调试日志中包含的图元信息在可视化业务流程图中标识出图元的执行轨迹,方便开发人员基于可视化业务流程图进行程序调试,从而降低了调试难度,提高了调试效率。
结合第一方面,在第一方面的第一种可能的实施方式中,所述向目标代码中添加特征代码之前,包括:
根据预存策略预置所述可视化业务流程图中的失效分支,所述失效分支指所述图元中不符合业务逻辑的出口分支;
和/或,
接收失效分支设置指令;根据所述失效分支设置指令设置所述失效分支。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹之后,还包括:
根据所述图元信息检测所述执行轨迹中是否包含所述失效分支;
若所述执行轨迹中包含所述失效分支,则在所述执行轨迹中对所述失效分支进行标识。
本实施例中,通过预置失效分支的方式标识出可视化业务流程图中不符合业务逻辑的图元出口分支,并在调试过程中根据调试日志中包含的图元信息对执行轨迹中包含的失效分支进行标识,使得开发人员能够快速定位程序运行异常位置,进一步提高了调试效率。
结合第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述获取所述调试日志中包含的所述图元信息之后,还包括:
根据所述图元信息生成树形执行栈,所述树形执行栈与所述执行轨迹对应,所述树形执行栈中包括调用栈信息,所述调用栈信息用于指示各个执行栈调用的函数方法;
根据所述图元信息在所述树形执行栈中标识所述失效分支。
本实施例中,在可视化业务流程图中标识执行轨迹的同时,生成包含各个执行栈对应调用栈信息的树形调用栈,并在该树形执行栈中对失效分支进行标识,方便开发人员快速定位发生异常的执行栈,提高了程序调试效率。
结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,所述方法,还包括:
接收对所述执行轨迹中图元或所述树形执行栈中执行栈的选择信号;
显示所述选择信号所指示的图元或执行栈的上下文信息,所述上下文信息包括所述图元或所述执行栈的取值。
本实施例中,当开发人员选择查看执行轨迹中的某一图元或树形执行栈中的某一执行栈时,计算机显示包含当前图元或当前执行栈取值的上下文信息,方便开发人员根据该上下文信息确定异常根源,提高了调试效率。
结合第一方面的第四种可能的实施方式,在第一方面的第五种可能的试试方式中,所述方法,还包括:
接收单步调试指令,所述单步调试指令包括执行当前栈、进入下层栈、返回上层栈和跳过当前栈中的至少一种;
根据所述单步调试指令对所述执行轨迹中对应的图元进行标识;
根据所述单步调试指令对所述树形执行栈中对应的执行栈进行标识;
更新所述上下文信息。
本实施例中,当开发人员需要对程序进行单步调试时,计算机根据单步调试指令对执行轨迹和树形执行栈进行同步标识,并更新相应的上下文信息,方便开发人员进行异常根源回溯,进一步提高了开发调试效率。
结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式、第一方面的第三种可能的实施方式、第一方面的第四种可能的实施方式会第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式中,所述向目标代码中添加特征代码,包括:
获取所述可视化业务流程图中各个图元的图元信息,所述图元信息包括图元标识、图元出口分支标识和图元参数中的至少一种;
根据所述图元信息生成所述特征代码;
将所述特征代码插入所述图元对应代码在所述目标代码中所处的位置。
本实施例中,计算机根据图元信息为各个图元生成对应的特征代码,并将该特征代码添加到图元对应代码在目标代码中所处的位置,确保业务执行过程中所经过图元的图元信息均能够写入调试日志中,保证了标识出的执行轨迹的准确性。
第二方面,提供了一种程序调试装置,所述装置包括至少一个单元,该至少一个单元用于实现上述第一方面或第一方面的可能的实施方式中所提供的程序调试方法。
第三方面,提供了一种程序开发设备,所述设备包括:处理器以及与所述处理器相连的存储器,其中,所述存储器用于存储一个或者一个以上的指令,所述指令被配置成由所述处理器执行;所述处理器通过执行所述存储器中的指令来实现第一方面或第一方面的可能的实施方式中所提供的程序调试方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明一个示例性实施例提供的程序调试方法的方法流程图;
图2A示出了本发明另一个示例性实施例提供的程序调试方法的方法流程图;
图2B是预置失效分支过程的实施示意图;
图2C是图2A所示程序调试方法所涉及的添加特征代码过程的流程图;
图2D是可视化业务流程图中执行轨迹的示意图;
图2E示出了本发明再一个示例性实施例提供的程序调试方法的方法流程图;
图2F是可视化SCE的界面示意图;
图3示出了本发明实施例提供的程序开发设备300的结构示意图;
图4示出了本发明一个实施例提供的程序调试装置的结构方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了方便理解,下面对本发明实施例中涉及的名词进行解释。
可视化业务流程图:用于描述业务执行逻辑的视图。可视化业务流程图的中包含至少一个图元,并通过各个图元之间的连接关系描述业务执行逻辑。
图元:可视化业务流程图的基本单位,用于在可视化业务流程图中实现特定功能,比如,switch图元用于实现选择功能,condition图元则用于实现判断功能。并且,每个图元包含至少一个出口分支,具体的,switch图元包含至少两个出口分支,condition图元包含两个出口分支(true和false)。
失效分支:指图元中不符合业务逻辑的出口分支。比如,condition图元包括出口分支true和false,其中,出口分支true为成功加载数据库时执行的分支,出口分支false为加载数据库失败时执行的分支,出口分支false即为失效分支。
调试日志:用于反应程序执行情况的信息记录。通常情况下,调试日志中包含程序执行路径上变量的输出值,开发人员根据调试日志即可确定程序运行状态是否正常,并对运行异常位置进行定位。
本发明各个实施例提供的程序调试方法,应用于配置有图形化SCE的程序开发设备中,例如配置有图形化SCE的计算机。同时,该程序开发设备还具有编译和调试功能,能够将目标代码编译成目标程序,并对该目标程序进行运行调试。为了方便描述,下述各个实施例以该程序调试方法应用于计算机为例进行说明,并不对本发明构成限定。
请参考图1,其示出了本发明一个示例性实施例提供的程序调试方法的方法流程图。本实施例以该程序调试方法应用在配置有图形化SCE的计算机为例进行说明,该方法包括:
步骤101,向目标代码中添加特征代码,该目标代码根据可视化业务流程图生成,该特征代码与可视化业务流程图中的图元对应,该特征代码用于在调试日志中写入图元的图元信息。
相关技术中,当开发人员根据业务逻辑构建完可视化业务流程图时,计算机中的图形化SCE通过代码自动生成技术将该可视化业务流程图转换为目标代码,并直接对该目标代码进行编译运行;而本发明实施例中,计算机将可视化业务流程图转换为目标代码后,进一步根据可视化业务流程图中各个图元的图元信息,向目标代码中添加图元对应的特征代码,使得编译运行目标代码所生成的调试日志中包含执行轨迹上各个图元的图元信息。
步骤102,运行目标程序并生成调试日志,目标程序根据目标代码编译生成。
计算机对包含特征代码的目标代码进行编译,生成相应的目标程序,并在运行该目标程序时生成调试日志,该调试日志即包含业务执行轨迹上各个图元的图元信息。
步骤103,获取调试日志中包含的图元信息。
步骤104,根据该图元信息在可视化业务流程图中标识图元的执行轨迹。
计算机根据调试日志中包含的图元信息,确定业务执行轨迹上包含的图元,并在可视化业务流程图中对该图元进行标识,使得开发人员能够从可视化业务流程图中直观了解到业务的执行轨迹,方便后续的程序调试。
相较于在目标代码中打断点等方式进行程序调试,本实施例实现了基于可视化业务流程图的程序调试,更加直观地展现了业务的执行轨迹,省去了开发人员手动打断点确定业务执行轨迹的过程,极大地提高了开发人员的调试效率。
综上所述,本实施例提供的程序调试方法,通过在对目标代码进行编译运行前,根据可视化业务流程图中包含的图元,向目标代码中插入用于输出图元信息的特征代码;当对目标代码进行编译运行并生成调试日志时,即可根据该调试日志中包含的图元信息在可视化业务流程图中标识出图元的执行轨迹;解决了开发人员仍旧需要基于目标代码进行程序调试,调试难度较高且效率较低的问题;达到了根据调试日志中包含的图元信息,在可视化业务流程图中标识出业务执行路径,实现基于可视化业务流程图的程序调试,从而降低了调试难度,提高了调试效率。
为了进一步提高调试效率,开发人员完成可视化业务流程图构建后,计算机中的图形化SCE预置该可视化业务流程图中不符合业务逻辑的失效分支;SCE根据调试日志中包含的图元信息标识执行轨迹的同时,对该执行轨迹中包含的失效分支进行标识,使得开发人员能够快速定位程序异常位置并进行调试。下面采用一个示意性的实施例进行说明。
请参考图2A,其示出了本发明另一个示例性实施例提供的程序调试方法的方法流程图。本实施例以该程序调试方法应用在配置有图形化SCE的计算机为例进行说明,该方法包括:
步骤201,根据预存策略预置可视化业务流程图中的失效分支,失效分支指图元中不符合业务逻辑的出口分支。
在可视化业务流程图构建阶段,计算机中的图形化SCE根据预存策略预置可视化业务流程图中的失效分支,其中,该失效分支用于指示可视化业务流程图中可预知的异常分支。
在一种可能的实施方式中,图形化SCE可以将condition图元中的false出口分支预置为失效分支。比如,可视化业务流程图中包含condition图元,且该condition图元包括出口分支true和false。在正常的业务逻辑下,执行condition图元后需要进一步执行与出口分支true相连的图元;当业务执行过程中出现异常时,需要执行与出口分支false相连的图元(即进入不符合业务逻辑的分支),图形化SCE即将出口分支false预置为失效分支。
需要说明的是,在计算机自动预置失效节点的基础上,开发人员还可以根据实际情况设置失效分支。在一种可能的实施方式中,计算机还可以接收失效分支设置指令,并根据该失效分支设置指令设置(或更新)失效分支。
比如,如图2B所示,计算机对可视化业务流程图中各个图元21及其出口分支22进行显示,开发人员可以通过勾选的方式预置失效分支,相应的,计算机将预置失效分支进行存储。
步骤202,根据可视化业务流程图生成目标代码。
完成失效分支设置后,计算机中的图形化SCE通过代码自动生成技术将构建的可视化业务流程图转换为目标代码。本发明实施例并不对采用何种代码自动生成技术进行限定。
步骤203,向目标代码中添加特征代码,特征代码与可视化业务流程图中的图元对应,特征代码用于在调试日志中写入图元的图元信息。
与相关技术中直接根据目标代码编译生成目标程序不同的是,图形化SCE根据可视化业务流程图生成目标代码的同时,需要根据可视化业务流程图中各个图元的图元信息,向目标代码中插入各个图元对应的特征代码,其中,该特征代码用于在调试日志中写入图元的图元信息。在一种可能的实施方式中,如图2C所示,本步骤可以包括如下步骤。
步骤203A,获取可视化业务流程图中各个图元的图元信息,图元信息包括图元标识、图元出口分支标识和图元参数中的至少一种。
可视化业务流程图由图元构成,且每个图元对应一个模型,该模型用于记录图元的图元信息,计算机中的图形化SCE即从该模型中获取图元的图元信息。其中,图元的图元信息可以包括图元标识、图元出口分支标识和图元参数中的至少一种。
比如,图形化SCE获取到condition图元的图元信息中,包括图元的图元标识001,图元出口分支标识T0=true,图元出口分支标识T1=false。
需要说明的是,当图形化SCE中包含多个工程时,图形化SCE还需要获取图元所处工程的工程标识,并将该工程标识确定为图元信息,本实施例并不对此进行限定。
步骤203B,根据该图元信息生成特征代码。
根据获取到的图元信息,图形化SCE根据预定代码生成方式,生成相应的特征代码。当该特征代码被编译运行时,即可在调试日志输出相应的图元信息。
比如,对于condition图元,计算机中图形化SCE生成的特征代码如下:
STATE_DIAGRAM_LOG_BEGIN();//出口分支true对应的特征代码
_ide_diagram_log_info_+=“Diagram:Name=Condition,Type=Condition,Project=Test_Ser,Id=1\n”;//图元名称、类型、工程名和图元标识
_ide_diagram_log_info_+=_print_value(true“globalCondition”);//图元参数
_ide_diagram_log_info_+=“Exit=true\n”;//出口分支标识
_ide_diagram_log_info_+=“Comment:null”;//注释
STATE_DIAGRAM_LOG_END();
STATE_DIAGRAM_LOG_BEGIN();//出口分支false对应的特征代码
_ide_diagram_log_info_+=“Diagram:Name=Condition,Type=Condition,Project=Test_Ser,Id=1\n”;//图元名称、类型、工程名和图元标识
_ide_diagram_log_info_+=_print_value(false“globalCondition”);//图元参数
_ide_diagram_log_info_+=“Exit=false\n”;//出口分支标识
_ide_diagram_log_info_+=“Comment:null”;//注释
STATE_DIAGRAM_LOG_END();
步骤203C,将特征代码插入图元对应代码在目标代码中所处的位置。
生成图元对应的特征代码后,计算机的图形化SCE将该特征代码插入图元对应代码在目标代码中所处的位置,使得图元对应代码被执行的同时,特征代码也能够被执行,确保调试日志中包含执行轨迹上各个图元对应的图元信息。
需要说明的是,插入目标代码的特征代码并不会对业务执行逻辑造成影响。
经过上述步骤,根据可视化业务流程图生成的目标代码中包含用于写入图元信息的特征代码,计算机的图形化SCE即根据该目标代码进行编译运行。
步骤204,运行目标程序并生成调试日志,目标程序根据目标代码编译生成。
计算机的图形化SCE对包含特征代码的目标代码进行编译,得到目标程序,并在运行目标程序过程中生成相应的调试日志,该调试日志中即包含业务执行过程中经过图元的图元信息。
步骤205,获取调试日志中包含的图元信息。
在一种可能的实施方式中,计算机的图形化SCE导入调试日志,根据关键词从调试日志中获取图元信息,并将该图元信息存储到内存中。比如,特征代码中包含关键词“Diagram”,图形化SCE即将Diagram的后续内容确定为图元信息。示意性的,获取到的图元信息如下:
Diagram:
Project=Test_Ser,Id=1
Context:
globalCondition=false
Exit=false.
其中,Project为图元所在工程的工程名,Id为图元标识,Context为图元的上下文信息(参数变量名及参数的取值),Exit为图元出口分支标识。
步骤206,根据图元信息在可视化业务流程图中标识图元的执行轨迹。
进一步的,图形化SCE根据获取到的图元信息确定业务执行过程中经过的图元,并在可视化业务流程图对经过的图元进行标识,从而标识出业务的执行轨迹。其中,对执行轨迹进行标记的方法包括:对图元进行高亮处理、对图元进行加粗、使用图元进行着色。本实施例并不对标识执行轨迹的具体方式进行限定。
在一种可能的实施方式中,如图2D所示,计算机根据图元信息确定业务的执行路径为图元1→2→3→6→7,并在可视化业务流程图中对图元1、2、3、6、7进行加粗。
步骤207,根据图元信息检测执行轨迹中是否包含失效分支。
为了进一步提高调试效率,方便开发人员快速定位业务执行异常点,完成执行轨迹标识后,图形化SCE根据图元信息检测该执行轨迹中是否包含预置的失效分支。
比如,图元3的出口分支false被预置为失效分支,图形化SCE即检测执行轨迹中包含图元3的出口分支false时。
步骤208,若执行轨迹中包含失效分支,则在执行轨迹中对失效分支进行标识。
当检测到执行轨迹中包含失效分支时,图形化SCE即在执行轨迹中对该失效分支进行标识。
比如,如图2D所示,图元3的出口分支false被预置为失效分支,且执行轨迹中包含图元3的出口分支false,图形化SCE即在该失效分支对应位置添加标识“×”。
需要说明的是,本实施例仅以上述失效分支标识方式为例进行示意性说明,并不对本发明构成限定。
综上所述,本实施例提供的程序调试方法,通过在对目标代码进行编译运行前,根据可视化业务流程图中包含的图元,向目标代码中插入用于输出图元信息的特征代码;当对目标代码进行编译运行并生成调试日志时,即可根据该调试日志中包含的图元信息在可视化业务流程图中标识出图元的执行轨迹;解决了开发人员仍旧需要基于目标代码进行程序调试,调试难度较高且效率较低的问题;达到了根据调试日志中包含的图元信息,在可视化业务流程图中标识出业务执行路径,实现基于可视化业务流程图的程序调试,从而降低了调试难度,提高了调试效率。
本实施例中,通过预置失效分支的方式标识出可视化业务流程图中不符合业务逻辑的图元出口分支,并在调试过程中根据调试日志中包含的图元信息对执行轨迹中包含的失效分支进行标识,使得开发人员能够快速定位程序运行异常位置,进一步提高了调试效率。
本实施例中,计算机根据图元信息为各个图元生成对应的特征代码,并将该特征代码添加到图元对应代码在目标代码中所处的位置,确保业务执行过程中所经过图元的图元信息均能够写入调试日志中,保证了标识出的执行轨迹的准确性。
为了进一步提高开发人员的调试效率,在图2A的基础上,如图2E所示,该方法还可以包括如下步骤。
步骤209,根据图元信息生成树形执行栈,树形执行栈与执行轨迹对应,树形执行栈中包括调用栈信息,调用栈信息用于指示各个执行栈调用的函数方法。
计算机的图形化SCE根据图元信息标识执行轨迹的同时,生成与执行轨迹对应的树形执行栈,该树形执行栈中包含执行轨迹上各个执行栈以及对应的调用栈信息,其中,调用栈信息指示执行栈运行时调用的函数方法。同时,该树形执行栈中还包含对应图元的图元标识以及图元出口分支标识。
可选的,为了提高开发人员的程序修改效率,该树形执行栈中还包含各个执行栈在目标代码中所处的位置。在一种可能的实施方式中,树形执行栈的对应位置可以显示有执行栈所处的代码行。
示意性的,树形执行栈中显示有:235Method003-3-T1:false,其中Method003为执行栈的调用的函数方法,3为执行栈对应图元的图元标识,T1-false为图元出口分支标识,235为执行栈调用的函数方法所处的代码行。
步骤210,根据图元信息在树形执行栈中标识失效分支。
与上述步骤208相似的,图形化SCE在执行轨迹中标识失效分支的同时,在对树形执行栈中包含的失效分支进行标识。
步骤211,接收对执行轨迹中图元或树形执行栈中执行栈的选择信号。
开发人员对程序进行调试时,可以通点击图元(或执行栈)等方式,选择查看执行轨迹上的某一图元(或树形执行栈中的某一执行栈)。相应的,图形化SCE接收到用户触发的选择信号后,对用户选择的图元(或执行栈)进行突出显示。需要说明的是,由于执行轨迹和树形执行栈相关联,因此,图形化SCE接收到对某一图元(或执行栈)的选择信号时,会对对应的执行栈(或图元)进行同步显示。
步骤212,显示选择信号所指示的图元或执行栈的上下文信息,上下文信息包括图元或执行栈的取值。
为了方便开发人员进行异常回溯,图形化SCE接收到开发人员对图元或执行栈的选择信号后,在调试界面的相应位置显示选中的图元或执行栈的上下文信息(包含在调试日志中),该上下文信息中即包含图元或执行栈中参数的取值。相应的,开发人员可以根据该上下文信息进一步回溯异常的出示发生点。
步骤213,接收单步调试指令,单步调试指令包括执行当前栈、进入下层栈、返回上层栈和跳过当前栈中的至少一种。
图形化SCE还支持单步调试功能。开发人员可以通过触发相应的单步调试指令,指示图形化SCE执行当前栈、进入下层栈、返回上层栈或跳过当前栈,从而实现对执行轨迹的遍历。
比如,如图2F所示,图形化SCE中包含单步调试按钮23、24和25,其中,按钮23用于指示返回上层栈,按钮24用于指示执行当前栈,按钮25用于指示进入下层栈。开发人员通过点击相应的按钮即可实现单步调试。
步骤214,根据单步调试指令对执行轨迹中对应的图元进行标识。
相应的,图形化SCE根据接收到的单步调试指令,对执行轨迹中对应的图元进行标识。
比如,如图2F所示,图形化SCE使用虚线框26对执行轨迹中对应的图元进行标识。
步骤215,根据单步调试指令对树形执行栈中对应的执行栈进行标识。
与上述步骤215相似的,图形化SCE根据接收到的单步调试指令,对树形执行栈中对应的执行栈进行标识。
比如,如图2F所示,图形化SCE使用虚线框27对树形执行栈中对应的执行栈进行标识。
步骤216,更新上下文信息。
在进行单步调试的同时,图形化SCE在指定区域对当前图元或执行栈的上下文信息,方便开发人员进行异常回溯,从而提高调试效率。
比如,如图2F所示,图形化SCE在上下文信息显示区域28对当前图元或执行栈的上下文信息进行显示。
本实施例中,在可视化业务流程图中标识执行轨迹的同时,生成包含各个执行栈对应调用栈信息的树形调用栈,并在该树形执行栈中对失效分支进行标识,方便开发人员快速定位发生异常的执行栈,提高了程序调试效率。
本实施例中,当开发人员选择查看执行轨迹中的某一图元或树形执行栈中的某一执行栈时,计算机显示包含当前图元或当前执行栈取值的上下文信息,方便开发人员根据该上下文信息确定异常根源,提高了调试效率。
请参考图3,其示出了本发明实施例提供的程序开发设备300的结构示意图。
程序开发设备300可以包括:处理器310、总线320和存储器330。其中,处理器310通过总线320与存储器330相连。
处理器310包括一个或一个以上处理核心。处理器310通过运行操作系统或应用程序模块,实现流计算系统中的管理功能。
可选地,存储器330可存储操作系统331、至少一个功能所需的应用程序模块332。应用程序模块332包括处理模块332a、运行模块332b、获取模块332c和显示模块332d。
处理模块332a,用于向目标代码中添加特征代码,所述目标代码根据可视化业务流程图生成,所述特征代码与所述可视化业务流程图中的图元对应,所述特征代码用于在调试日志中写入所述图元的图元信息;
运行模块332b,用于运行目标程序并生成所述调试日志,所述目标程序根据所述目标代码编译生成;
获取模块332c,用于获取所述调试日志中包含的所述图元信息;
显示模块332d,用于根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹。
此外,存储器330可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
本领域技术人员可以理解,图3中所示出的结构并不构成对程序开发设备300的限定,可以包括比图示更多或更少的部件或组合某些部件,或者不同的部件布置。
图4示出了本发明一个实施例提供的程序调试装置的结构方框图。该程序调试装置可以通过专用硬件电路,或者,软硬件的组合实现成为管理节点240的全部或一部分。该流计算装置包括:处理单元410、运行单元420、获取单元430和显示单元440。
处理单元410,用于向目标代码中添加特征代码,所述目标代码根据可视化业务流程图生成,所述特征代码与所述可视化业务流程图中的图元对应,所述特征代码用于在调试日志中写入所述图元的图元信息;
运行单元420,用于运行目标程序并生成所述调试日志,所述目标程序根据所述目标代码编译生成;
获取单元430,用于获取所述调试日志中包含的所述图元信息;
显示单元440,用于根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹。
可选的,
所述处理单元410,用于为根据预存策略预置所述可视化业务流程图中的失效分支,所述失效分支指所述图元中不符合业务逻辑的出口分支;
和/或,
所述处理单元410,还用于接收失效分支设置指令;根据所述失效分支设置指令设置所述失效分支。
可选的,所述处理单元410,还用于根据所述图元信息检测所述执行轨迹中是否包含所述失效分支;
所述显示单元440,还用于当所述执行轨迹中包含所述失效分支时,在所述执行轨迹中对所述失效分支进行标识。
可选的,所述处理单元410,还用于根据所述图元信息生成树形执行栈,所述树形执行栈与所述执行轨迹对应,所述树形执行栈中包括调用栈信息,所述调用栈信息用于指示各个执行栈调用的函数方法;
所述显示单元440,还用于根据所述图元信息在所述树形执行栈中标识所述失效分支。
可选的,所述处理单元410,还用于接收对所述执行轨迹中图元或所述树形执行栈中执行栈的选择信号;
所述显示单元440,还用于显示所述选择信号所指示的图元或执行栈的上下文信息,所述上下文信息包括所述图元或所述执行栈的取值。
可选的,所述处理单元410,还用于接收单步调试指令,所述单步调试指令包括执行当前栈、进入下层栈、返回上层栈和跳过当前栈中的至少一种;
所述显示单元440,还用于根据所述单步调试指令对所述执行轨迹中对应的图元进行标识;
所述显示单元440,还用于根据所述单步调试指令对所述树形执行栈中对应的执行栈进行标识;
所述处理单元410,还用于更新所述上下文信息。
可选的,所述处理单元410,还用于获取所述可视化业务流程图中各个图元的图元信息,所述图元信息包括图元标识、图元出口分支标识和图元参数中的至少一种;
所述处理单元410,还用于根据所述图元信息生成所述特征代码;
所述处理单元410,还用于将所述特征代码插入所述图元对应代码在所述目标代码中所处的位置。
相关细节可结合参考图1、图2A、图2C和图2E所述的方法实施例。
需要说明的是:上述实施例提供的程序调试装置在生成流图并进行程序调试时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的程序调试装置与程序调试方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种程序调试方法,其特征在于,所述方法包括:
根据预存策略预置可视化业务流程图中的失效分支,所述失效分支指所述可视化业务流程图中的图元中不符合业务逻辑的出口分支;和/或,接收失效分支设置指令,根据所述失效分支设置指令设置所述失效分支;
向目标代码中添加特征代码,所述目标代码根据所述可视化业务流程图生成,所述特征代码与所述可视化业务流程图中的图元对应,所述特征代码用于在调试日志中写入所述图元的图元信息;
运行目标程序并生成所述调试日志,所述目标程序根据所述目标代码编译生成;
获取所述调试日志中包含的所述图元信息;
根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹,以及根据所述图元信息生成树形执行栈,所述树形执行栈与所述执行轨迹对应,所述树形执行栈中包括调用栈信息,所述调用栈信息用于指示各个执行栈调用的函数方法;
根据所述图元信息在所述树形执行栈中标识所述失效分支。
2.根据权利要求1所述的方法,其特征在于,所述根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹之后,还包括:
根据所述图元信息检测所述执行轨迹中是否包含所述失效分支;
若所述执行轨迹中包含所述失效分支,则在所述执行轨迹中对所述失效分支进行标识。
3.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
接收对所述执行轨迹中图元或所述树形执行栈中执行栈的选择信号;
显示所述选择信号所指示的图元或执行栈的上下文信息,所述上下文信息包括所述图元或所述执行栈的取值。
4.根据权利要求3所述的方法,其特征在于,所述方法,还包括:
接收单步调试指令,所述单步调试指令包括执行当前栈、进入下层栈、返回上层栈和跳过当前栈中的至少一种;
根据所述单步调试指令对所述执行轨迹中对应的图元进行标识;
根据所述单步调试指令对所述树形执行栈中对应的执行栈进行标识;
更新所述上下文信息。
5.根据权利要求1至4任一所述的方法,其特征在于,所述向目标代码中添加特征代码,包括:
获取所述可视化业务流程图中各个图元的图元信息,所述图元信息包括图元标识、图元出口分支标识和图元参数中的至少一种;
根据所述图元信息生成所述特征代码;
将所述特征代码插入所述图元对应代码在所述目标代码中所处的位置。
6.一种程序调试装置,其特征在于,所述装置包括:
处理单元,用于根据预存策略预置可视化业务流程图中的失效分支,所述失效分支指所述可视化业务流程图中的图元中不符合业务逻辑的出口分支;和/或,接收失效分支设置指令,根据所述失效分支设置指令设置所述失效分支;
所述处理单元,还用于向目标代码中添加特征代码,所述目标代码根据所述可视化业务流程图生成,所述特征代码与所述可视化业务流程图中的图元对应,所述特征代码用于在调试日志中写入所述图元的图元信息;
运行单元,用于运行目标程序并生成所述调试日志,所述目标程序根据所述目标代码编译生成;
获取单元,用于获取所述调试日志中包含的所述图元信息;
显示单元,用于根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹;
所述处理单元,还用于根据所述图元信息生成树形执行栈,所述树形执行栈与所述执行轨迹对应,所述树形执行栈中包括调用栈信息,所述调用栈信息用于指示各个执行栈调用的函数方法;
所述显示单元,还用于根据所述图元信息在所述树形执行栈中标识所述失效分支。
7.根据权利要求6所述的装置,其特征在于,
所述处理单元,还用于根据所述图元信息检测所述执行轨迹中是否包含所述失效分支;
所述显示单元,还用于当所述执行轨迹中包含所述失效分支时,在所述执行轨迹中对所述失效分支进行标识。
8.根据权利要求6所述的装置,其特征在于,
所述处理单元,还用于接收对所述执行轨迹中图元或所述树形执行栈中执行栈的选择信号;
所述显示单元,还用于显示所述选择信号所指示的图元或执行栈的上下文信息,所述上下文信息包括所述图元或所述执行栈的取值。
9.根据权利要求8所述的装置,其特征在于,
所述处理单元,还用于接收单步调试指令,所述单步调试指令包括执行当前栈、进入下层栈、返回上层栈和跳过当前栈中的至少一种;
所述显示单元,还用于根据所述单步调试指令对所述执行轨迹中对应的图元进行标识;
所述显示单元,还用于根据所述单步调试指令对所述树形执行栈中对应的执行栈进行标识;
所述处理单元,还用于更新所述上下文信息。
10.根据权利要求6至9任一所述的装置,其特征在于,
所述处理单元,还用于获取所述可视化业务流程图中各个图元的图元信息,所述图元信息包括图元标识、图元出口分支标识和图元参数中的至少一种;
所述处理单元,还用于根据所述图元信息生成所述特征代码;
所述处理单元,还用于将所述特征代码插入所述图元对应代码在所述目标代码中所处的位置。
11.一种程序开发设备,其特征在于,所述设备包括:处理器以及与所述处理器相连的存储器,其中,所述存储器用于存储一个或者一个以上的指令,所述处理器用于通过执行所述指令来完成下述操作;
所述处理器,用于根据预存策略预置可视化业务流程图中的失效分支,所述失效分支指所述可视化业务流程图中的图元中不符合业务逻辑的出口分支;和/或,接收失效分支设置指令,根据所述失效分支设置指令设置所述失效分支;
所述处理器,还用于向目标代码中添加特征代码,所述目标代码根据所述可视化业务流程图生成,所述特征代码与所述可视化业务流程图中的图元对应,所述特征代码用于在调试日志中写入所述图元的图元信息;
所述处理器,还用于运行目标程序并生成所述调试日志,所述目标程序根据所述目标代码编译生成;
所述处理器,还用于获取所述调试日志中包含的所述图元信息;
所述处理器,还用于根据所述图元信息在所述可视化业务流程图中标识所述图元的执行轨迹;
所述处理器,还用于根据所述图元信息生成树形执行栈,所述树形执行栈与所述执行轨迹对应,所述树形执行栈中包括调用栈信息,所述调用栈信息用于指示各个执行栈调用的函数方法;
所述处理器,还用于根据所述图元信息在所述树形执行栈中标识所述失效分支。
12.根据权利要求11所述的设备,其特征在于,
所述处理器,还用于根据所述图元信息检测所述执行轨迹中是否包含所述失效分支;
所述处理器,还用于当所述执行轨迹中包含所述失效分支时,在所述执行轨迹中对所述失效分支进行标识。
13.根据权利要求11所述的设备,其特征在于,
所述处理器,还用于接收对所述执行轨迹中图元或所述树形执行栈中执行栈的选择信号;
所述处理器,还用于显示所述选择信号所指示的图元或执行栈的上下文信息,所述上下文信息包括所述图元或所述执行栈的取值。
14.根据权利要求13所述的设备,其特征在于,
所述处理器,还用于接收单步调试指令,所述单步调试指令包括执行当前栈、进入下层栈、返回上层栈和跳过当前栈中的至少一种;
所述处理器,还用于根据所述单步调试指令对所述执行轨迹中对应的图元进行标识;
所述处理器,还用于根据所述单步调试指令对所述树形执行栈中对应的执行栈进行标识;
所述处理器,还用于更新所述上下文信息。
15.根据权利要求11至14任一所述的设备,其特征在于,所述处理器,还用于获取所述可视化业务流程图中各个图元的图元信息,所述图元信息包括图元标识、图元出口分支标识和图元参数中的至少一种;
所述处理器,还用于根据所述图元信息生成所述特征代码;
所述处理器,还用于将所述特征代码插入所述图元对应代码在所述目标代码中所处的位置。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至5任一所述的方法。
CN201610609793.6A 2016-07-28 2016-07-28 程序调试方法、装置及程序开发设备 Active CN107665167B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610609793.6A CN107665167B (zh) 2016-07-28 2016-07-28 程序调试方法、装置及程序开发设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610609793.6A CN107665167B (zh) 2016-07-28 2016-07-28 程序调试方法、装置及程序开发设备

Publications (2)

Publication Number Publication Date
CN107665167A CN107665167A (zh) 2018-02-06
CN107665167B true CN107665167B (zh) 2021-04-09

Family

ID=61113092

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610609793.6A Active CN107665167B (zh) 2016-07-28 2016-07-28 程序调试方法、装置及程序开发设备

Country Status (1)

Country Link
CN (1) CN107665167B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542792B (zh) * 2018-11-28 2024-01-16 努比亚技术有限公司 一种位图处理方法、设备及计算机可读存储介质
CN109977005B (zh) * 2019-02-13 2022-11-25 网易(杭州)网络有限公司 端到端测试方法、介质、装置和计算设备
CN111831542B (zh) * 2019-04-23 2022-04-05 华为技术有限公司 Api应用调测方法及装置、存储介质
CN112631949B (zh) * 2020-12-10 2021-09-21 浙江华创视讯科技有限公司 一种调试方法、装置、计算机设备及存储介质
CN113626332B (zh) * 2021-08-13 2023-03-10 北京百度网讯科技有限公司 调试方法、装置、设备、存储介质以及计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046766A (zh) * 2006-04-24 2007-10-03 华为技术有限公司 一种基于模型驱动进行电信级业务开发的调试方法及装置
CN103514072A (zh) * 2012-06-28 2014-01-15 中兴通讯股份有限公司 一种用于可视化编程的图形化业务的调试方法及装置
CN104331294A (zh) * 2014-11-05 2015-02-04 中国建设银行股份有限公司 一种可视化程序生成方法和装置
US9251013B1 (en) * 2014-09-30 2016-02-02 Bertram Capital Management, Llc Social log file collaboration and annotation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046766A (zh) * 2006-04-24 2007-10-03 华为技术有限公司 一种基于模型驱动进行电信级业务开发的调试方法及装置
CN103514072A (zh) * 2012-06-28 2014-01-15 中兴通讯股份有限公司 一种用于可视化编程的图形化业务的调试方法及装置
US9251013B1 (en) * 2014-09-30 2016-02-02 Bertram Capital Management, Llc Social log file collaboration and annotation
CN104331294A (zh) * 2014-11-05 2015-02-04 中国建设银行股份有限公司 一种可视化程序生成方法和装置

Also Published As

Publication number Publication date
CN107665167A (zh) 2018-02-06

Similar Documents

Publication Publication Date Title
CN107665167B (zh) 程序调试方法、装置及程序开发设备
US9389849B2 (en) Test case pattern matching
CN102662644B (zh) 一种使用流程图生成测试案例的方法
US20090150420A1 (en) Generating debug information
US6385765B1 (en) Specification and verification for concurrent systems with graphical and textual editors
Shu et al. Javapdg: A new platform for program dependence analysis
CN105608258B (zh) 一种基于模型的系统设计及信息流可视化仿真系统及方法
US20050273757A1 (en) Methods, systems, and computer program products for summarizing operational behavior of a computer program
EP2017983A1 (en) A debugging method and apparatus for performing telecom class service development based on model driven
CN106557413A (zh) 基于代码覆盖率获取测试用例的方法和设备
JP2022505340A (ja) データ引数を動的に識別し、ソースコードを計装するためのシステムと方法
JPH02272645A (ja) プログラム・デバツグ支援方法
US20070044075A1 (en) Method for analysis of source code and display of corresponding output through a marking scheme
US20140229921A1 (en) Method and System for Computer Assisted Hot-Tracing Mechanism
US20190179733A1 (en) Software test program generation
JP2000122886A (ja) 半導体試験装置のプログラム作成方式
CN103744782A (zh) 程序执行序列的获取方法及装置
CN109766261A (zh) 覆盖测试方法、装置、计算机设备和存储介质
US20110029953A1 (en) System and Method for Scalable Handling of Debug Information
US8798971B2 (en) System and method for using a truth table graphical function in a statechart
CN103049374A (zh) 一种自动化测试的方法及装置
CN112558947B (zh) 程序调用追踪方法、装置以及存储介质
CN102867087A (zh) 图形化雷达信号处理高层集成设计平台及方法
CN106560797B (zh) 一种基于调试器的单元测试系统及方法
CN103176903B (zh) MapReduce分布式系统程序的测试方法及设备

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200210

Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant after: HUAWEI TECHNOLOGIES Co.,Ltd.

Address before: 210012 HUAWEI Nanjing base, 101 software Avenue, Yuhuatai District, Jiangsu, Nanjing

Applicant before: Huawei Technologies Co.,Ltd.

GR01 Patent grant
GR01 Patent grant