一种断点设置方法、装置、设备及存储介质与流程
未命名
09-13
阅读:116
评论:0
1.本发明涉及计算机技术领域,特别涉及一种断点设置方法、装置、设备及存储介质。
背景技术:
2.随着工业程序组态的规模增大,程序运行的正确性和可靠性验证难度也随着增加。断点调试便于工程人员随时调试程序和验证其功能是否符合预期。断点调试的实现方式一般分为软中断、硬件中断和内存中断。软中断一般是基于中断指令实现,可设置断点的数量没有限制,如x86体系结构中使用int3中断指令实现。硬件断点是基于寄存器实现的,由于寄存器数量有限,因此可以设置断点的数量也有限。现有技术存在以下缺点:操作系统没有软中断时,无法进行断点调试;可扩展性较差,只能针对现有指令集;开发与维护成本高。
技术实现要素:
3.有鉴于此,本发明的目的在于提供一种断点设置方法、装置、设备和存储介质,能够提高断点调试的通用性与扩展性,降低开发和维护成本。其具体方案如下:
4.第一方面,本技术公开了一种断点设置方法,应用于上位机软件,包括:
5.编译当前程序,以得到抽象语法树;
6.基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;
7.基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。
8.可选的,所述编译当前程序,以得到抽象语法树之前,还包括:
9.获取程序组织单元列表,并设置列表初始值;
10.将所述列表初始值确定为当前列表值,并判断所述当前列表值是否小于所述程序组织单元列表的数目;
11.若所述当前列表值不小于所述程序组织单元列表的数目,则结束;
12.若所述当前列表值小于所述程序组织单元列表的数目,则从所述程序组织单元列表中的全部列表信息中获取目标列表信息。
13.可选的,所述编译当前程序,以得到抽象语法树,包括:
14.编译所述全部列表信息中的每一条列表信息,以得到每一条所述列表信息对应的所述抽象语法树。
15.可选的,所述基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则之前,还包括:
16.获取每个所述抽象语法树对应的语句逻辑,并设置语句逻辑初始值。
17.可选的,所述基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则,包括:
18.获取所述目标列表信息对应的目标抽象语法树,并获取所述目标抽象语法树的目
标语句逻辑;
19.将所述语句逻辑初始值确定为当前语句逻辑值;
20.判断所述当前语句逻辑值是否小于所述目标语句逻辑的数目;
21.若所述当前语句逻辑值不小于所述目标语句逻辑的数目,则确定所述当前位置对应的所述断点插入规则为直接插入弹栈语句;
22.若所述当前语句逻辑值小于所述目标语句逻辑的数目,则从所述语句逻辑对应的全部语句中获取当前语句;
23.判断所述当前语句是否为所述语句逻辑对应的第一条语句;
24.若所述当前语句为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为直接插入压栈语句;
25.若所述当前语句不为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为在所述当前语句前插入预设断点语句。
26.可选的,所述基于所述断点插入规则在所述当前位置插入所述断点之后,还包括:
27.当所述断点插入规则为直接插入所述压栈语句,或,所述断点插入规则为在所述当前语句前插入所述预设断点语句时,将所述当前语句逻辑值加1,以得到新的语句逻辑值;
28.将所述新的语句逻辑值确定为所述当前语句逻辑值,并重新进入所述判断所述当前语句逻辑值是否小于所述目标语句逻辑的数目的步骤;
29.当所述断点插入规则为直接插入所述弹栈语句时,将所述当前列表值加1,以得到新的当前列表值;
30.将所述新的当前列表值确定为所述当前列表值,并重新进入所述判断所述当前列表值是否小于所述程序组织单元列表的数目的步骤。
31.可选的,所述基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序之后,还包括:
32.运行所述调整后程序,并判断是否运行到所述断点;
33.若运行到所述断点,则通过操作系统执行对应的调试函数,以控制所述调整后程序暂停;
34.判断用户当前操作是否触发程序继续运行操作,若是则继续运行所述调整后程序。
35.第二方面,本技术公开了一种断点设置装置,应用于上位机软件,包括:
36.程序编译模块,用于编译当前程序,以得到抽象语法树;
37.规则确定模块,用于基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;
38.断点插入模块,用于基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。
39.第三方面,本技术公开了一种电子设备,包括:
40.存储器,用于保存计算机程序;
41.处理器,用于执行所述计算机程序,以实现如前述公开的断点设置方法的步骤。
42.第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,
所述计算机程序被处理器执行时实现如前述公开的断点设置方法。
43.可见,本技术提供了一种断点设置方法,包括:编译当前程序,以得到抽象语法树;基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。由此可见,本技术通过获取当前程序的抽象语法树获取全部的程序语句然后通过预设断点判断方法判断每个抽象语法树中每个位置对应的断点插入规则,根据断点插入规则插入断点语句,在不同的位置插入不同的断点语句,当没有中断指令或新增指令集的情况下达到断点调试的目的,提高了断点调试的通用性与扩展性,降低了开发和维护成本。
附图说明
44.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
45.图1为本技术公开的一种断点设置方法流程图;
46.图2为本技术公开的一种软中断断点调试流程图;
47.图3为本技术公开的一种具体的断点设置方法流程图;
48.图4为本技术公开的插入断点逻辑语句流程示意图;
49.图5为本技术公开的软中断实现断点调试流程图;
50.图6为本技术提供的断点设置装置结构示意图;
51.图7为本技术提供的一种电子设备结构图。
具体实施方式
52.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.目前,随着工业程序组态的规模增大,程序运行的正确性和可靠性验证难度也随着增加。断点调试便于工程人员随时调试程序和验证其功能是否符合预期。断点调试的实现方式一般分为软中断、硬件中断和内存中断。软中断一般是基于中断指令实现,可设置断点的数量没有限制,硬件断点是基于寄存器实现的,由于寄存器数量有限,因此可以设置断点的数量也有限。现有技术存在以下缺点:操作系统没有软中断时,无法进行断点调试;可扩展性较差,只能针对现有指令集;开发与维护成本高。为此,本技术提供了一种断点设置方法,能够提高断点调试的通用性与扩展性,降低开发和维护成本。
54.本发明实施例公开了一种断点设置方法,参见图1所示,应用于上位机软件,该方法包括:
55.步骤s11:编译当前程序,以得到抽象语法树。
56.本实施例中,编译当前程序,以得到抽象语法树。具体的,编译所述全部列表信息中的每一条列表信息,以得到每一条所述列表信息对应的所述抽象语法树。可以理解的是,
编译当前程序得到抽象语法树之前,获取程序组织单元列表,并设置列表初始值;将所述列表初始值确定为当前列表值,并判断所述当前列表值是否小于所述程序组织单元列表的数目;若所述当前列表值不小于所述程序组织单元列表的数目,则结束;若所述当前列表值小于所述程序组织单元列表的数目,则从所述程序组织单元列表中的全部列表信息中获取目标列表信息。
57.步骤s12:基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则。
58.本实施例中,编译当前程序,以得到抽象语法树之后,基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则。在基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则之前,获取每个所述抽象语法树对应的语句逻辑,并设置语句逻辑初始值。进一步的,获取所述目标列表信息对应的目标抽象语法树,并获取所述目标抽象语法树的目标语句逻辑;将所述语句逻辑初始值确定为当前语句逻辑值;判断所述当前语句逻辑值是否小于所述目标语句逻辑的数目;若所述当前语句逻辑值不小于所述目标语句逻辑的数目,则确定所述当前位置对应的所述断点插入规则为直接插入弹栈语句;若所述当前语句逻辑值小于所述目标语句逻辑的数目,则从所述语句逻辑对应的全部语句中获取当前语句;判断所述当前语句是否为所述语句逻辑对应的第一条语句;若所述当前语句为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为直接插入压栈语句;若所述当前语句不为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为在所述当前语句前插入预设断点语句。
59.步骤s13:基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。
60.本实施例中,基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则之后,基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。
61.可以理解的是,目前现有的断点调试流程如图2所示,在增加断点时,替换断点所在行需要执行的指令为软中断指令,当程序运行到该软中断指令时,跳转执行调试函数,然后将原有指令还原,此时程序暂停用户可以查看关心变量等信息;当用户触发再次运行程序的操作时,再替换为软中断指令,确保下一次仍可命中断点。现有技术存在以下缺点:操作系统没有软中断时,无法进行断点调试;可扩展性不好,只能针对现有指令集;开发,维护成本高;对于不同的指令集需要写不同代码来调用中断指令,如果增加一套新的指令集,断点调试方法中需要新增该指令集对应的软中断指令翻译。
62.随着国家工业领域自主可控和国产化的步伐加速,国产操作系统、指令集、硬件的上市及应用,原有的断点调试方法无法满足在新系统上使用。本发明采用将上位机和rts(runtime system,运行时系统)结合的方式,以此来调试iec(international electrotechnical commission,国际电工委员会)语言(在iec61131-3标准中规定的编程语言),实现了一种通用的,与中断指令无关的软中断断点调试方法。
63.可见,本技术提供了一种断点设置方法,包括:编译当前程序,以得到抽象语法树;基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;基于所述
断点插入规则在所述当前位置插入所述断点,以得到调整后程序。由此可见,本技术通过获取当前程序的抽象语法树获取全部的程序语句然后通过预设断点判断方法判断每个抽象语法树中每个位置对应的断点插入规则,根据断点插入规则插入断点语句,在不同的位置插入不同的断点语句,当没有中断指令或新增指令集的情况下达到断点调试的目的,提高了断点调试的通用性与扩展性,降低了开发和维护成本。
64.参见图3所示,本发明实施例公开了一种断点设置方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。
65.步骤s21:编译当前程序,以得到抽象语法树。
66.步骤s22:基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则。
67.步骤s23:基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。
68.本实施例中,基于所述断点插入规则在所述当前位置插入所述断点之后,当所述断点插入规则为直接插入所述压栈语句,或,所述断点插入规则为在所述当前语句前插入所述预设断点语句时,将所述当前语句逻辑值加1,以得到新的语句逻辑值;将所述新的语句逻辑值确定为所述当前语句逻辑值,并重新进入所述判断所述当前语句逻辑值是否小于所述目标语句逻辑的数目的步骤;当所述断点插入规则为直接插入所述弹栈语句时,将所述当前列表值加1,以得到新的当前列表值;将所述新的当前列表值确定为所述当前列表值,并重新进入所述判断所述当前列表值是否小于所述程序组织单元列表的数目的步骤。
69.可以理解的是,本发明在将iec语言翻译成抽象语法树时,为每一句可以增加断点的逻辑增加一段断点调试语句,该部分在上位机软件侧实现,如图4所示,开始后获取pou列表(程序组织单元列表),并将i值设为0(即设置列表初始值),判断i是否小于pou数目(程序组织单元列表的数目),若i不小于pou数目则结束;若i小于pou数目则获取pou(目标列表信息),编译pou以得到对应的抽象语法树,获取pou语句逻辑并使得j为0(即设置语句逻辑初始值),判断j是否小于当前抽象语法树对应的pou语句逻辑总数,若j小于pou语句逻辑总数则插入pou弹栈语句,并执行++i后重新进入判断i是否小于pou数目的步骤;若j不小于pou语句逻辑总数则获取当前pou语句,判断该pou语句是否为第一条语句,若为第一条语句则插入压栈语句,若不为第一条语句则在pou语句前插入断点语句,当插入所述压栈语句或所述断点语句之后,执行++j操作,并重新进入判断j是否小于pou语句逻辑的步骤。需要指出的是,一个i可以对应多个j,断点语句中包含压栈、弹栈、断点是否激活和断点函数,这些功能均在os(operating system,操作系统)侧以外部函数方式实现。
70.例如,有名为prg1的程序,其中只有赋值语句a:=b;在未添加断点调试语句前,伪语法树如下:
71.a:=b;
72.在增加断点调试语句后,抽象语法树变为:
73.压栈
74.if(是否激活断点)
75.{
76.断点函数;
77.}
78.a:=b;
79.弹栈
80.if(是否激活断点)
81.{
82.断点函数;
83.}
84.步骤s24:运行所述调整后程序,并判断是否运行到所述断点。
85.本实施例中,基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序之后,运行所述调整后程序,并判断是否运行到所述断点。可以理解的是,如图5所示,在全部断点设置完成后,得到调整后程序并运行。判断是否运行到所述断点,若未运行到断点处则继续运行。
86.步骤s25:若运行到所述断点,则通过操作系统执行对应的调试函数,以控制所述调整后程序暂停。
87.本实施例中,运行所述调整后程序,并判断是否运行到所述断点之后,若运行到所述断点,则通过操作系统执行对应的调试函数,以控制所述调整后程序暂停。可以理解的是,如上述图5所示,若运行到所述断点,则通过os执行调试函数(即断点语句),即此时断点出的断点语句,是得到程序暂停。当程序暂停时便于工程人员随时调试程序和验证其功能是否符合预期,工程人员操作完成后,判断用户操作是否触发程序继续运行,若未触发则继续暂停,做触发则继续运行程序直至结束。
88.步骤s26:判断用户当前操作是否触发程序继续运行操作,若是则继续运行所述调整后程序。
89.本实施例中,通过操作系统执行对应的调试函数,以控制所述调整后程序暂停之后,判断用户当前操作是否触发程序继续运行操作,若是则继续运行所述调整后程序。可以理解的是,当工程人员调试程序结束后或验证其功能符合预期后,会触发程序继续运行操作,因此当用户当前操作触发程序继续运行操作后继续运行所述调整后程序,若用户当前操作未触发程序继续运行操作则继续暂停所述调整后程序。
90.本发明通过在上位机侧和os侧联合实现一种与指令集、中断指令无关的软中断的方法,解决了没有中断指令以及在以后新增指令集的情况下也可以达到断点调试的目的,提高了该方法通用性,扩展性及减少该方法开发和维护成本。
91.关于上述步骤s21、s22的具体内容可以参考前述实施例中公开的相应内容,在此不再进行赘述。
92.可见,本技术实施例通过编译当前程序,以得到抽象语法树;基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序;运行所述调整后程序,并判断是否运行到所述断点;若运行到所述断点,则通过操作系统执行对应的调试函数,以控制所述调整后程序暂停;判断用户当前操作是否触发程序继续运行操作,若是则继续运行所述调整后程序,提高了断点调试的通用性与扩展性,降低了开发和维护成本。
93.参见图6所示,本技术实施例还相应公开了一种断点设置装置,应用于上位机软
件,包括:
94.程序编译模块11,用于编译当前程序,以得到抽象语法树;
95.规则确定模块12,用于基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;
96.断点插入模块13,用于基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。
97.可见,本技术包括:编译当前程序,以得到抽象语法树;基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。由此可见,本技术通过获取当前程序的抽象语法树获取全部的程序语句然后通过预设断点判断方法判断每个抽象语法树中每个位置对应的断点插入规则,根据断点插入规则插入断点语句,在不同的位置插入不同的断点语句,当没有中断指令或新增指令集的情况下达到断点调试的目的,提高了断点调试的通用性与扩展性,降低了开发和维护成本。
98.在一些具体实施例中,所述程序编译模块11,具体包括:
99.列表获取单元,用于获取程序组织单元列表;
100.列表初始值设置单元,用于设置列表初始值;
101.第一当前列表值确定单元,用于将所述列表初始值确定为当前列表值;
102.当前列表值判断单元,用于判断所述当前列表值是否小于所述程序组织单元列表的数目;
103.结束单元,用于若所述当前列表值不小于所述程序组织单元列表的数目,则结束;
104.目标列表信息获取单元,用于若所述当前列表值小于所述程序组织单元列表的数目,则从所述程序组织单元列表中的全部列表信息中获取目标列表信息;
105.列表信息编译单元,用于编译所述全部列表信息中的每一条列表信息,以得到每一条所述列表信息对应的所述抽象语法树。
106.在一些具体实施例中,所述规则确定模块12,具体包括:
107.语句逻辑获取单元,用于获取每个所述抽象语法树对应的语句逻辑;
108.逻辑初始值设置单元,用于设置语句逻辑初始值;
109.目标抽象语法树获取单元,用于获取所述目标列表信息对应的目标抽象语法树;
110.目标语句逻辑获取单元,用于获取所述目标抽象语法树的目标语句逻辑;
111.第一当前语句逻辑值确定单元,用于将所述语句逻辑初始值确定为当前语句逻辑值;
112.当前语句逻辑值判断单元,用于判断所述当前语句逻辑值是否小于所述目标语句逻辑的数目;
113.第一断点插入规则确定单元,用于若所述当前语句逻辑值不小于所述目标语句逻辑的数目,则确定所述当前位置对应的所述断点插入规则为直接插入弹栈语句;
114.当前语句获取单元,用于若所述当前语句逻辑值小于所述目标语句逻辑的数目,则从所述语句逻辑对应的全部语句中获取当前语句;
115.当前语句判断单元,用于判断所述当前语句是否为所述语句逻辑对应的第一条语句;
116.第二断点插入规则确定单元,用于若所述当前语句为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为直接插入压栈语句;
117.第三断点插入规则确定单元,用于若所述当前语句不为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为在所述当前语句前插入预设断点语句。
118.在一些具体实施例中,所述断点插入模块13,具体包括:
119.断点插入单元,用于基于所述断点插入规则在所述当前位置插入所述断点;
120.新的语句逻辑值计算单元,用于当所述断点插入规则为直接插入所述压栈语句,或,所述断点插入规则为在所述当前语句前插入所述预设断点语句时,将所述当前语句逻辑值加1,以得到新的语句逻辑值;
121.第二当前语句逻辑值确定单元,用于将所述新的语句逻辑值确定为所述当前语句逻辑值,并重新进入所述判断所述当前语句逻辑值是否小于所述目标语句逻辑的数目的步骤;
122.新的当前列表值计算单元,用于当所述断点插入规则为直接插入所述弹栈语句时,将所述当前列表值加1,以得到新的当前列表值;
123.第二当前列表值确定单元,用于将所述新的当前列表值确定为所述当前列表值,并重新进入所述判断所述当前列表值是否小于所述程序组织单元列表的数目的步骤;
124.断点判断单元,用于运行所述调整后程序,并判断是否运行到所述断点;
125.程序暂停单元,用于若运行到所述断点,则通过操作系统执行对应的调试函数,以控制所述调整后程序暂停;
126.程序运行判断单元,用于判断用户当前操作是否触发程序继续运行操作;
127.程序运行单元,用于若是则继续运行所述调整后程序。
128.进一步的,本技术实施例还提供了一种电子设备。图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
129.图7为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的断点设置方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
130.本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
131.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
132.其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是windows server、netware、unix、linux等。计算机程序222除了包括能够用于
完成前述任一实施例公开的由电子设备20执行的断点设置方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
133.进一步的,本技术实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的断点设置方法步骤。
134.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
135.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
136.以上对本发明所提供的一种断点设置方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:
1.一种断点设置方法,其特征在于,应用于上位机软件,包括:编译当前程序,以得到抽象语法树;基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。2.根据权利要求1所述的断点设置方法,其特征在于,所述编译当前程序,以得到抽象语法树之前,还包括:获取程序组织单元列表,并设置列表初始值;将所述列表初始值确定为当前列表值,并判断所述当前列表值是否小于所述程序组织单元列表的数目;若所述当前列表值不小于所述程序组织单元列表的数目,则结束;若所述当前列表值小于所述程序组织单元列表的数目,则从所述程序组织单元列表中的全部列表信息中获取目标列表信息。3.根据权利要求2所述的断点设置方法,其特征在于,所述编译当前程序,以得到抽象语法树,包括:编译所述全部列表信息中的每一条列表信息,以得到每一条所述列表信息对应的所述抽象语法树。4.根据权利要求3所述的断点设置方法,其特征在于,所述基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则之前,还包括:获取每个所述抽象语法树对应的语句逻辑,并设置语句逻辑初始值。5.根据权利要求4所述的断点设置方法,其特征在于,所述基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则,包括:获取所述目标列表信息对应的目标抽象语法树,并获取所述目标抽象语法树的目标语句逻辑;将所述语句逻辑初始值确定为当前语句逻辑值;判断所述当前语句逻辑值是否小于所述目标语句逻辑的数目;若所述当前语句逻辑值不小于所述目标语句逻辑的数目,则确定所述当前位置对应的所述断点插入规则为直接插入弹栈语句;若所述当前语句逻辑值小于所述目标语句逻辑的数目,则从所述语句逻辑对应的全部语句中获取当前语句;判断所述当前语句是否为所述语句逻辑对应的第一条语句;若所述当前语句为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为直接插入压栈语句;若所述当前语句不为所述语句逻辑对应的第一条语句,则确定所述当前位置对应的所述断点插入规则为在所述当前语句前插入预设断点语句。6.根据权利要求5所述的断点设置方法,其特征在于,所述基于所述断点插入规则在所述当前位置插入所述断点之后,还包括:当所述断点插入规则为直接插入所述压栈语句,或,所述断点插入规则为在所述当前语句前插入所述预设断点语句时,将所述当前语句逻辑值加1,以得到新的语句逻辑值;将所述新的语句逻辑值确定为所述当前语句逻辑值,并重新进入所述判断所述当前语
句逻辑值是否小于所述目标语句逻辑的数目的步骤;当所述断点插入规则为直接插入所述弹栈语句时,将所述当前列表值加1,以得到新的当前列表值;将所述新的当前列表值确定为所述当前列表值,并重新进入所述判断所述当前列表值是否小于所述程序组织单元列表的数目的步骤。7.根据权利要求1至6任一项所述的断点设置方法,其特征在于,所述基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序之后,还包括:运行所述调整后程序,并判断是否运行到所述断点;若运行到所述断点,则通过操作系统执行对应的调试函数,以控制所述调整后程序暂停;判断用户当前操作是否触发程序继续运行操作,若是则继续运行所述调整后程序。8.一种断点设置装置,其特征在于,应用于上位机软件,包括:程序编译模块,用于编译当前程序,以得到抽象语法树;规则确定模块,用于基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;断点插入模块,用于基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。9.一种电子设备,其特征在于,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的断点设置方法的步骤。10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的断点设置方法。
技术总结
本申请公开了一种断点设置方法、装置、设备及存储介质,涉及计算机技术领域,包括:编译当前程序,以得到抽象语法树;基于预设断点判断方法以及所述抽象语法树确定当前位置对应的断点插入规则;基于所述断点插入规则在所述当前位置插入所述断点,以得到调整后程序。本申请通过获取当前程序的抽象语法树获取全部的程序语句然后通过预设断点判断方法判断每个抽象语法树中每个位置对应的断点插入规则,根据断点插入规则插入断点语句,在不同的位置插入不同的断点语句,当没有中断指令或新增指令集的情况下达到断点调试的目的,提高了断点调试的通用性与扩展性,降低了开发和维护成本。本。本。
技术研发人员:郑方龙 任建鑫 姚凯 洪波
受保护的技术使用者:杭州和利时自动化有限公司
技术研发日:2023.05.31
技术公布日:2023/9/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:穿刺针成型模组的制作方法 下一篇:一种密封圈加工用定位机构的制作方法
