本文作者:kaifamei

断点调试功能的实现方法、系统、设备及介质与流程

更新时间:2025-12-19 23:04:01 0条评论

断点调试功能的实现方法、系统、设备及介质与流程



1.本发明涉及工业自动化控制技术领域,尤其涉及一种断点调试功能的实现方法、系统、设备及介质。


背景技术:



2.plc(可编程逻辑控制器)广泛应用于工业控制领域。通过将用户编写的(程序)控制指令加载到内存,并根据用户配置的任务周期被cpu调度执行,从而完成对各种机械与电气系统进行逻辑控制,模拟量控制,运动控制等。在实际应用中,plc系统通常采用断点调试来检测程序设计的正确性及完备性;断点调试通过控制逻辑中的断点干预控制器运算任务的运行过程,其中涉及到控制器对控制逻辑的执行机制。
3.目前,断点调试包括有软件断点和硬件断点;硬件断点通常需要设置处理器中寄存器的值来产生断点。软件断点需要修改正在运行的代码指令,通过把断点位置处的指令修改为特殊的断点指令(int3软中断指令),当程序运行到断点指令位置后产生中断信号或异常事件,由对应的断点服务程序接管处理,取消断点时,断点位置的指令会重新恢复成原来的字节内容。
4.然而,当前软件断点通常使用系统信号捕捉的机制来实现断点位置异常回调处理,捕获异常的常用方式是使用结构化异常和未捕获异常。而windows x64使用上述两种方式无法捕获所有的异常。


技术实现要素:



5.本发明的主要目的在于提出一种断点调试功能的实现方法、系统、设备及介质,旨在通过代码迁移的技术实现基于软plc直接在pc上运行实现了断点调试功能,以及提高断点调试的准确率。
6.为实现上述目的,本发明提供一种断点调试功能的实现方法,所述断点调试功能的实现方法应用于断点调试功能的实现系统,所述断点调试功能的实现系统包括用户开发环境工具和软plc控制器,所述断点调试功能的实现方法包括如下步骤:
7.通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器;
8.通过所述软plc控制器根据所述断点信息将当前断点的真实指令替换为断点指令;
9.当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的异常处理程序完成断点处理;
10.通过所述用户开发环境工具再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令。
11.优选地,所述通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器的步骤包括:
12.通过所述用户开发环境工具在软件程序中设置断点,获取所述断点对应的断点信息,并通过tcp socket服务接口将所述断点信息发送至所述软plc控制器;其中,所述断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址。
13.优选地,所述通过所述软plc控制器根据所述断点信息将当前断点的真实指令替换为断点指令的步骤包括:
14.在所述软plc控制器接收到所述断点信息时,通过内存寻址及拷贝将当前断点的真实指令保存至所述软plc控制器的堆区内存池的对应位置,其中,所述断点信息包括当前断点的内存偏移地址、当前指令大小、断点指令字节编码、后续断点位置偏移地址;
15.根据所述断点信息,通过所述软plc控制器将所述断点指令的字节编码通过内存拷贝的方式复制到所述当前断点的内存偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存。
16.优选地,所述断点指令包括当前断点的内存偏移地址,当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的进程异常处理程序完成断点处理的步骤包括:
17.当所述软件程序运行到所述断点指令时,通过所述软plc控制器的处理器执行所述断点指令,触发非法指令异常,并由所述软plc控制器的操作系统将所述异常分发至所述软plc控制器的异常处理程序中;
18.通过所述异常处理程序保存当前环境上下文,获取当前任务信息,并根据所述当前环境上下文的ip寄存器值与所述当前断点的内存偏移地址相等,从所述堆区内存池中出所述断点指令对应的断点信息;其中,所述当前环境上下文包括ip寄存器值、sp寄存器值及bp寄存器值;
19.设置当前软件程序状态为断点暂停,并通知所述软plc控制器的任务调度器停止当前任务的调度,且当前软件程序的任务进入调试循环;其中,所述软件程序停止在当前断点。
20.优选地,所述通过所述用户开发环境工具再次启动所述软件程序的运行任务的步骤包括:
21.通过所述用户开发环境工具再次启动所述软件程序的任务或单步运行,将当前任务状态切换至运行状态,且当前软件程序的任务退出调试循环;
22.通知所述软plc控制器的任务调度器恢复当前任务的调度,控制所述软件程序离开断点处理。
23.优选地,所述将所述断点指令恢复至所述真实指令的步骤包括:
24.根据所述堆区内存池中的后继断点位置偏移地址,通过所述软plc控制器将所述断点指令的字节编码以内存拷贝的方式复制到所述后继断点位置偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存,以将后继断点的真实指令替换为下一断点指令;
25.根据所述堆区内存池中所述当前断点的内存偏移地址和当前指令大小,通过内存拷贝的方式写入所述当前断点的内存偏移地址,以将所述当前断点的断点指令恢复至所述真实指令。
26.优选地,所述通过所述用户开发环境工具再次启动所述软件程序的运行任务,并
将所述断点指令恢复至所述真实指令的步骤之后,还包括:
27.进入下一断点调试,返回步骤:通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器。
28.此外,为实现上述目的,本发明还提供一种断点调试功能的实现系统,所述断点调试功能的实现系统包括:
29.用户开发环境工具,用于获取软件程序中的断点信息,并将所述断点信息发送至软plc控制器;
30.软plc控制器,用于根据所述断点信息将断点处的真实指令替换为断点指令;
31.还用于当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的异常处理程序完成断点处理;
32.所述用户开发环境工具,还用于再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令。
33.此外,为实现上述目的,本发明还提供一种计算机设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的断点调试功能的实现程序,所述断点调试功能的实现程序被所述处理器执行时实现如上所述的断点调试功能的实现方法的步骤。
34.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有断点调试功能的实现程序,所述断点调试功能的实现程序被处理器执行时实现如上所述的断点调试功能的实现方法的步骤。
35.本发明提出的断点调试功能的实现方法、系统、设备及介质;所述断点调试功能的实现方法应用于断点调试功能的实现系统,所述断点调试功能的实现系统包括用户开发环境工具和软plc控制器。本发明首先通过用户开发环境工具获取软件程序中的断点信息,并将断点信息发送至软plc控制器;通过软plc控制器根据断点信息将当前断点的真实指令替换为断点指令;当软件程序运行到断点指令时,触发非法指令异常,并通过软plc控制器的异常处理程序完成断点处理;通过用户开发环境工具再次启动软件程序的运行任务,并将断点指令恢复至真实指令;从而通过代码迁移的技术实现基于软plc直接在pc上运行实现了断点调试功能,以及提高断点调试的准确率。
附图说明
36.图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
37.图2为本发明断点调试功能的实现方法第一实施例的流程示意图;
38.图3为本发明断点调试功能的实现方法用户开发环境(ide)工具和软plc控制器结合的断点调试交互过程示意图;
39.图4为本发明断点调试功能的实现方法断点调试处理步骤示意图;
40.图5为本发明断点调试功能的实现方法第二实施例的流程示意图;
41.图6为本发明断点调试功能的实现方法第三实施例的流程示意图;
42.图7为本发明断点调试功能的实现方法第四实施例的流程示意图;
43.图8为本发明断点调试功能的实现方法第五实施例的流程示意图;
44.图9为本发明断点调试功能的实现方法第六实施例的流程示意图;
45.图10为本发明断点调试功能的实现系统第一实施例的功能模块示意图。
46.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
47.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
48.如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
49.本发明实施例设备可以是移动终端或服务器设备。
50.如图1所示,该设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
51.本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
52.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及断点调试功能的实现程序。
53.其中,操作系统是管理和控制终端设备与软件资源的程序,支持网络通信模块、用户接口模块、断点调试功能的实现程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1002;用户接口模块用于管理和控制用户接口1003。
54.在图1所示的设备中,所述设备通过处理器1001调用存储器1005中存储的断点调试功能的实现程序,并执行下述断点调试功能的实现方法各个实施例中的操作。
55.基于上述硬件结构,提出本发明断点调试功能的实现方法实施例。
56.参照图2,图2为本发明断点调试功能的实现方法第一实施例的流程示意图,所述断点调试功能的实现方法包括:
57.步骤s10,通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器;
58.步骤s20,通过所述软plc控制器根据所述断点信息将当前断点的真实指令替换为断点指令;
59.步骤s30,当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的异常处理程序完成断点处理;
60.步骤s40,通过所述用户开发环境工具再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令。
61.本实施例通过用户开发环境工具获取软件程序中的断点信息,并将断点信息发送至软plc控制器;通过软plc控制器根据断点信息将当前断点的真实指令替换为断点指令;当软件程序运行到断点指令时,触发非法指令异常,并通过软plc控制器的异常处理程序完成断点处理;通过用户开发环境工具再次启动软件程序的运行任务,并将断点指令恢复至真实指令;从而通过代码迁移的技术实现基于软plc直接在pc上运行实现了断点调试功能,以及提高断点调试的准确率。
62.以下将对各个步骤进行详细说明:
63.步骤s10,通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至软plc控制器。
64.在本实施例中,所述断点调试功能的实现方法应用于断点调试功能的实现系统,所述断点调试功能的实现系统包括用户开发环境工具和软plc控制器。其中,用户开发环境(integrated development environment,ide)工具与软plc控制器相连接,软plc控制器和用户开发环境(ide)工具可以同时运行于相同pc或不同pc。用户开发环境(ide)工具主要用于用户程序编辑、编译、下装、调试及监视。软plc控制器通过代码移植技术,将运行在真实plc设备中的控制器核心移植到windows x64平台;软plc控制器在断点位置插入ud2的指令,当软件程序运行到该ud2指令位置后触发处理器中断,断点位置的异常使用了向量化异常注册,能够正常捕获到处理器或系统产生的软硬件异常。
65.参照图3,图3为用户开发环境(ide)工具和软plc控制器结合的断点调试交互过程示意图;本发明断点调试功能的实现方法提出了一种向量化异常捕获的方法来实现断点处理,其中提到的异常是通过查断点位置,将正常指令替换为ud2指令,从而触发cpu产生非法指令的异常。另外结合用户开发环境(ide)工具完成断点设置、断点删除、单步及运行等断点调试功能。另外软plc控制器和用户开发环境(ide)工具同时运行在相同pc,可以比较方便地用于教学演示等场景。
66.参照图4,图4为断点调试处理步骤示意图;具体参照图4中的设置断点信息(21);通过用户开发环境(ide)工具获取软件程序中的断点信息,其中,断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址;并将获取到的断点信息发送至软plc控制器。
67.步骤s20,通过所述软plc控制器根据所述断点信息将当前断点的真实指令替换为断点指令。
68.在本实施例中,参照图4,图4为断点调试处理步骤示意图;具体参照图4中的断点指令替换(23);通过软plc控制器在接收到上述的断点信息时,在断点信息对应的断点位置插入ud2指令,当软件程序运行到该ud2指令位置后触发处理器中断,断点位置的异常使用了向量化异常注册,能够正常捕获到处理器或系统产生的软硬件异常;其中,真实指令是指当前断点处原有指令;ud2指令也即为断点指令,断点指令是指当软件程序到断点指令位置后产生中断信号或异常事件。
69.步骤s30,当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的异常处理程序完成断点处理。
70.在本实施例中,参照图4,图4为断点调试处理步骤示意图;具体参照图4中的ud2指令异常捕获及断点处理(24);当软件程序运行到断点指令的位置时,断点调试功能的实现系统的处理器会执行替换后的断点指令,触发非法指令异常;由操作系统将该异常分发至软plc控制器进程异常处理程序中,通过软plc控制器的异常处理程序完成该异常的断点处理;其中,断点处理是指设置当前软件程序为断点暂停,通知任务调度器停止当前任务的调度,并且当前任务进入调试循环(loop),其中,调试循环(loop)是指软件程序在原地跳转,循环执行当前断点指令,且软件程序停止在当前断点位置。
71.步骤s40,通过所述用户开发环境工具再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令。
72.在本实施例中,参照图4,图4为断点调试处理步骤示意图;具体参照图4中的断点指令恢复(25);通过用户开发环境(ide)工具再次启动软件程序的运行任务,将当前任务状态切换至运行状态,并将当前断点位置的断点指令恢复至当前断点处原有指令,也即将当前断点位置的断点指令恢复至真实指令;从而实现断点调试功能。
73.进一步地,在一实施例中,步骤s40之后,所述断点调试功能的实现方法还包括:
74.步骤s50,进入下一断点调试,返回执行步骤:通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器。
75.在本实施例中,在当前断点指令恢复至真实指令后,根据上述断点信息,断点信息中包括有后继断点内存偏移地址,也即下一断点的位置;进入下一断点调试,执行步骤:通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器。根据后继断点内存偏移地址,用户开发环境工具获取软件程序中的下一断点信息,并将下一断点信息发送至软plc控制器;软plc控制器在接收到下一断点信息后,软plc控制器将下一断点的指令位置插入ud2指令;软件程序恢复运行后,当前指令正常执行,并因下一条指令触发断点异常处理,从而软件程序停止在下一个断点位置;通过重复上述操作,完成对软件程序中的断点调试;从而提高断点调试的效率。
76.本实施例通过用户开发环境工具获取软件程序中的断点信息,并将断点信息发送至软plc控制器;通过软plc控制器根据断点信息将当前断点的真实指令替换为断点指令;当软件程序运行到断点指令时,触发非法指令异常,并通过软plc控制器的异常处理程序完成断点处理;通过用户开发环境工具再次启动软件程序的运行任务,并将断点指令恢复至真实指令;从而通过代码迁移的技术实现基于软plc直接在pc上运行实现了断点调试功能,以及提高断点调试的准确率。
77.进一步地,基于本发明断点调试功能的实现方法第一实施例,提出本发明断点调试功能的实现方法第二实施例。
78.断点调试功能的实现方法的第二实施例与断点调试功能的实现方法的第一实施例的区别在于本实施例是对步骤s10,通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器的细化,参照图5,该步骤具体包括:
79.步骤s11,通过所述用户开发环境工具在软件程序中设置断点,获取所述断点对应的断点信息,并通过tcp socket服务接口将所述断点信息发送至所述软plc控制器;其中,所述断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址。
80.在本实施例中,通过用户开发环境工具在软件程序中设置断点,获取断点对应的断点信息,并通过tcp socket服务接口将断点信息发送至软plc控制器;其中,断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址;从而通过用户开发环境工具与软plc控制器结合的断点调试交互过程,以通过软plc控制器实现断点调试。
81.以下将对各个步骤进行详细说明:
82.步骤s11,通过所述用户开发环境工具在软件程序中设置断点,获取所述断点对应
的断点信息,并通过tcp socket服务接口将所述断点信息发送至所述软plc控制器;其中,所述断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址。
83.在本实施例中,参照图4,图4为断点调试处理步骤示意图;具体参照图4中的设置断点信息(21);调试开始后,通过用户开发环境(ide)工具在软件程序中设置断点,其中,断点的位置和数量可根据实际情况进行设置,且每一断点具有唯一的断点地址;并获取断点对应的断点信息;其中,断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址。
84.通过tcp socket服务接口将断点信息发送至软plc控制器,以便软plc控制器在接收到该断点信息后,根据该断点信息对当前断点进行断点指令替换。
85.在本实施例中,通过用户开发环境工具在软件程序中设置断点,获取断点对应的断点信息,并通过tcp socket服务接口将断点信息发送至软plc控制器;其中,断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址;从而通过用户开发环境工具与软plc控制器结合的断点调试交互过程,以通过软plc控制器实现断点调试。
86.进一步地,基于本发明断点调试功能的实现方法第一、二实施例,提出本发明断点调试功能的实现方法第三实施例。
87.断点调试功能的实现方法的第三实施例与断点调试功能的实现方法的第一、二实施例的区别在于本实施例是对步骤s20,通过所述软plc控制器根据所述断点信息将当前断点的真实指令替换为断点指令的细化,参照图6,该步骤具体包括:
88.步骤s21,在所述软plc控制器接收到所述断点信息时,通过内存寻址及拷贝将当前断点的真实指令保存至所述软plc控制器的堆区内存池的对应位置,其中,所述断点信息包括当前断点的内存偏移地址、当前指令大小、断点指令字节编码、后续断点位置偏移地址;
89.步骤s22,根据所述断点信息,通过所述软plc控制器将所述断点指令的字节编码通过内存拷贝的方式复制到所述当前断点的内存偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存。
90.在本实施例中,通过在软plc控制器接收到断点信息时,通过内存寻址及拷贝将当前断点的真实指令保存至软plc控制器的堆区内存池的对应位置,其中,断点信息包括当前断点的内存偏移地址、当前指令大小、断点指令字节编码、后续断点位置偏移地址;根据断点信息,通过软plc控制器将断点指令的字节编码通过内存拷贝的方式复制到当前断点的内存偏移地址,并刷新断点调试功能的实现系统的处理器缓存;从而通过软plc控制器实现当前断点的真实位置替换为断点指令。
91.以下将对各个步骤进行详细说明:
92.步骤s21,在所述软plc控制器接收到所述断点信息时,通过内存寻址及拷贝将当前断点的真实指令保存至所述软plc控制器的堆区内存池的对应位置,其中,所述断点信息包括当前断点的内存偏移地址、当前指令大小、断点指令字节编码、后续断点位置偏移地址。
93.在本实施例中,在软plc控制器接收到断点信息后,其中,断点信息具体包括当前断点的内存偏移地址、当前指令大小、断点指令字节编码、后续断点位置偏移地址;通过在软plc的堆区内存池中对断点信息进行统一管理,具体是:将每个断点信息都保存在堆区内存池中对应的内存结构中,通过内存寻址及拷贝的方式将当前断点的真实指令保存至内存结构的对应位置。
94.步骤s22,根据所述断点信息,通过所述软plc控制器将所述断点指令的字节编码通过内存拷贝的方式复制到所述当前断点的内存偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存。
95.在本实施例中,根据上述的断点信息,通过软plc控制器将ud2指令(也即,断点指令)的字节编码通过内存拷贝的方式复制到当前断点对应的内存偏移地址中;而后,刷新断点调试功能的实现系统的处理器缓存;完成上述步骤后,也即完成了将当前断点的真实指令替换为断点指令;从而当软件程序运行到该断点指令的位置时,断点调试功能的实现系统的处理器会执行替换后的断点指令,触发非法指令异常。
96.在本实施例中,通过在软plc控制器接收到断点信息时,通过内存寻址及拷贝将当前断点的真实指令保存至软plc控制器的堆区内存池的对应位置,其中,断点信息包括当前断点的内存偏移地址、当前指令大小、断点指令字节编码、后续断点位置偏移地址;根据断点信息,通过软plc控制器将断点指令的字节编码通过内存拷贝的方式复制到当前断点的内存偏移地址,并刷新断点调试功能的实现系统的处理器缓存;从而通过软plc控制器实现当前断点的真实位置替换为断点指令。
97.进一步地,基于本发明断点调试功能的实现方法第一、二、三实施例,提出本发明断点调试功能的实现方法第四实施例。
98.断点调试功能的实现方法的第四实施例与断点调试功能的实现方法的第一、二、三实施例的区别在于本实施例是对步骤s30,当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的进程异常处理程序完成断点处理的细化,参照图7,该步骤具体包括:
99.步骤s31,当所述软件程序运行到所述断点指令时,通过所述软plc控制器的处理器执行所述断点指令,触发非法指令异常,并由所述软plc控制器的操作系统将所述异常分发至所述软plc控制器的异常处理程序中;
100.步骤s32,通过所述异常处理程序保存当前环境上下文,获取当前任务信息,并根据所述当前环境上下文的ip寄存器值与所述当前断点的内存偏移地址相等,从所述堆区内存池中出所述断点指令对应的断点信息;其中,所述当前环境上下文包括ip寄存器值、sp寄存器值及bp寄存器值;
101.步骤s33,设置当前软件程序状态为断点暂停,并通知所述软plc控制器的任务调度器停止当前任务的调度,且当前软件程序的任务进入调试循环;其中,所述软件程序停止在当前断点。
102.在本实施例中,当软件程序运行到断点指令时,通过软plc控制器的处理器执行断点指令,触发非法指令异常,并通过软plc控制器的进程异常处理程序完成断点处理;从而通过软plc控制器实现断点调试功能。
103.以下将对各个步骤进行详细说明:
104.步骤s31,当所述软件程序运行到所述断点指令时,通过所述软plc控制器的处理器执行所述断点指令,触发非法指令异常,并由所述软plc控制器的操作系统将所述异常分发至所述软plc控制器的异常处理程序中。
105.在本实施例中,当软件程序正常运行到断点位置当前断点位置时,软plc控制器的处理器执行替换后的ud2指令(也即,断点指令),触发非法指令异常;并由软plc控制器的操作系统将该异常分发至软plc控制器的异常处理程序中,然后在异常处理程序中完成断点处理。
106.步骤s32,通过所述异常处理程序保存当前环境上下文,获取当前任务信息,并根据所述当前环境上下文的ip寄存器值与所述当前断点的内存偏移地址相等,从所述堆区内存池中出所述断点指令对应的断点信息;其中,所述当前环境上下文包括ip寄存器值、sp寄存器值及bp寄存器值。
107.在本实施例中,通过软plc控制器的异常处理程序保存当前环境上下文,其中,当前环境上下文包括ip寄存器值、sp寄存器值及bp寄存器值;获取当前任务信息;由于当前环境上下文的ip寄存器值与当前断点的内存偏移地址相等的情况,可从软plc控制器的堆区内存池中出断点指令对应的断点信息。
108.步骤s33,设置当前软件程序状态为断点暂停,并通知所述软plc控制器的任务调度器停止当前任务的调度,且当前软件程序的任务进入调试循环;其中,所述软件程序停止在当前断点。
109.在本实施例中,将当前软件程序状态设置为断点暂停,并通知软plc控制器的任务调度器停止当前任务的调度,同时,当前软件程序的任务进入调试循环;其中,在当前软件程序的任务进入调试循环后,软件程序停止在当前断点。
110.在本实施例中,当软件程序运行到断点指令时,通过软plc控制器的处理器执行断点指令,触发非法指令异常,并通过软plc控制器的进程异常处理程序完成断点处理;从而通过软plc控制器实现断点调试功能。
111.进一步地,基于本发明断点调试功能的实现方法第一、二、三、四实施例,提出本发明断点调试功能的实现方法第五实施例。
112.断点调试功能的实现方法的第五实施例与断点调试功能的实现方法的第一、二、三、四实施例的区别在于本实施例是对步骤s40,通过所述用户开发环境工具再次启动所述软件程序的运行任务的细化,参照图8,该步骤具体包括:
113.步骤a10,通过所述用户开发环境工具再次启动所述软件程序的任务或单步运行,将当前任务状态切换至运行状态,且当前软件程序的任务退出调试循环;
114.步骤a20,通知所述软plc控制器的任务调度器恢复当前任务的调度,控制所述软件程序离开断点处理。
115.本实施例通过用户开发环境工具再次启动软件程序的任务或单步运行,将当前任务状态切换至运行状态,且当前软件程序的任务退出调试循环;通知软plc控制器的任务调度器恢复当前任务的调度,控制软件程序离开断点处理;从而在软plc控制器完成断点处理后,通过用户开发环境工具再次启动软件程序的运行任务。
116.以下将对各个步骤进行详细说明:
117.步骤a10,通过所述用户开发环境工具再次启动所述软件程序的任务或单步运行,
将当前任务状态切换至运行状态,且当前软件程序的任务退出调试循环。
118.在本实施例中,在软plc控制器的异常处理程序完成断点处理后,通过用户开发环境(ide)工具再次启动软件程序的任务或单步运行,以将软件程序的当前任务状态切换至运行状态;同时,当前软件程序的任务退出调试循环(loop)。
119.步骤a20,通知所述软plc控制器的任务调度器恢复当前任务的调度,控制所述软件程序离开断点处理。
120.在本实施例中,在当前软件程序的任务退出调试循环(loop)后,通知软plc控制器的任务调度器恢复当前任务的调度,且软plc控制器控制软件程序离开断点处理;从而在软plc控制器完成断点处理后,通过用户开发环境工具再次启动软件程序的运行任务,以及通过软plc控制器继续执行软件程序。
121.在本实施例中,通过用户开发环境工具再次启动软件程序的任务或单步运行,将当前任务状态切换至运行状态,且当前软件程序的任务退出调试循环;通知软plc控制器的任务调度器恢复当前任务的调度,控制软件程序离开断点处理;从而在软plc控制器完成断点处理后,通过用户开发环境工具再次启动软件程序的运行任务。
122.进一步地,基于本发明断点调试功能的实现方法第一、二、三、四、五实施例,提出本发明断点调试功能的实现方法第六实施例。
123.断点调试功能的实现方法的第六实施例与断点调试功能的实现方法的第一、二、三、四、五实施例的区别在于本实施例是对步骤s40,将所述断点指令恢复至所述真实指令的细化,参照图9,该步骤具体包括:
124.步骤b10,根据所述堆区内存池中的后继断点位置偏移地址,通过所述软plc控制器将所述断点指令的字节编码以内存拷贝的方式复制到所述后继断点位置偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存,以将后继断点的真实指令替换为下一断点指令;
125.步骤b20,根据所述堆区内存池中所述当前断点的内存偏移地址和当前指令大小,通过内存拷贝的方式写入所述当前断点的内存偏移地址,以将所述当前断点的断点指令恢复至所述真实指令。
126.本实施例通过根据堆区内存池中的后继断点位置偏移地址,通过软plc控制器将断点指令的字节编码以内存拷贝的方式复制到后继断点位置偏移地址,并刷新断点调试功能的实现系统的处理器缓存,以将后继断点的真实指令替换为下一断点指令;根据堆区内存池中当前断点的内存偏移地址和当前指令大小,通过内存拷贝的方式写入当前断点的内存偏移地址,以将当前断点的断点指令恢复至真实指令;从而在完成断点处理后,通过用户开发环境工具将当前断点处的断点指令恢复至真实指令。
127.以下将对各个步骤进行详细说明:
128.步骤b10,根据所述堆区内存池中的后继断点位置偏移地址,通过所述软plc控制器将所述断点指令的字节编码以内存拷贝的方式复制到所述后继断点位置偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存,以将后继断点的真实指令替换为下一断点指令。
129.在本实施例中,根据堆区内存池中保存的断点信息中的后继断点位置偏移地址,通过软plc控制器将ud2指令(也即,断点指令)的字节编码以内存拷贝的方式复制到后继断
点位置偏移地址,以将后继断点的真实指令替换为下一断点指令;并在后继断点的位置指令替换后,刷新断点调试功能的实现系统的处理器缓存;完成上述步骤后,也即完成了将后继断点的真实指令替换为断点指令;从而当软件程序运行到后继断点的断点指令的位置时,断点调试功能的实现系统的处理器会执行替换后的断点指令,触发非法指令异常。
130.步骤b20,根据所述堆区内存池中所述当前断点的内存偏移地址和当前指令大小,通过内存拷贝的方式写入所述当前断点的内存偏移地址,以将所述当前断点的断点指令恢复至所述真实指令。
131.在本实施例中,根据软plc控制器的堆区内存池中当前断点的内存偏移地址和当前指令大小,通过内存拷贝的方式将该当前断点的内存偏移地址和当前指令大小写入当前断点的内存偏移地址中,以将当前断点的断点指令恢复至真实指令;在当前断点的断点指令恢复至真实指令后,将该断点删除;从而在完成断点处理后,通过用户开发环境工具将当前断点处的断点指令恢复至真实指令。
132.在本实施例中,根据堆区内存池中的后继断点位置偏移地址,通过软plc控制器将断点指令的字节编码以内存拷贝的方式复制到后继断点位置偏移地址,并刷新断点调试功能的实现系统的处理器缓存,以将后继断点的真实指令替换为下一断点指令;根据堆区内存池中当前断点的内存偏移地址和当前指令大小,通过内存拷贝的方式写入当前断点的内存偏移地址,以将当前断点的断点指令恢复至真实指令;从而在完成断点处理后,通过用户开发环境工具将当前断点处的断点指令恢复至真实指令。
133.本发明还提供一种断点调试功能的实现装置。参照图10,本发明断点调试功能的实现装置包括:
134.用户开发环境工具10,用于获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器;
135.软plc控制器20,用于根据所述断点信息将断点处的真实指令替换为断点指令;
136.还用于当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的异常处理程序完成断点处理;
137.所述用户开发环境工具10,还用于再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令。
138.此外,本发明还提供一种计算机可读存储介质,其上存储有断点调试功能的实现程序,断点调试功能的实现程序被处理器执行时实现如上所述的断点调试功能的实现方法的步骤。
139.其中,在所述处理器上运行的断点调试功能的实现程序被执行时所实现的方法可参照本发明断点调试功能的实现方法各个实施例,此处不再赘述。
140.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
141.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
142.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方
法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
143.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书与附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

技术特征:


1.一种断点调试功能的实现方法,其特征在于,所述断点调试功能的实现方法应用于断点调试功能的实现系统,所述断点调试功能的实现系统包括用户开发环境工具和软plc控制器,所述断点调试功能的实现方法包括如下步骤:通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器;通过所述软plc控制器根据所述断点信息将当前断点的真实指令替换为断点指令;当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的异常处理程序完成断点处理;通过所述用户开发环境工具再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令。2.如权利要求1所述的断点调试功能的实现方法,其特征在于,所述通过用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器的步骤包括:通过所述用户开发环境工具在软件程序中设置断点,获取所述断点对应的断点信息,并通过tcp socket服务接口将所述断点信息发送至所述软plc控制器;其中,所述断点信息包括断点位置的内存区编号、内存偏移地址、断点插入指令、断点插入指令大小、断点进入回调函数指针、断点离开回调函数指针以及后继断点内存偏移地址。3.如权利要求1所述的断点调试功能的实现方法,其特征在于,所述通过软plc控制器根据所述断点信息将当前断点的真实指令替换为断点指令的步骤包括:在所述软plc控制器接收到所述断点信息时,通过内存寻址及拷贝将当前断点的真实指令保存至所述软plc控制器的堆区内存池的对应位置,其中,所述断点信息包括当前断点的内存偏移地址、当前指令大小、断点指令字节编码、后续断点位置偏移地址;根据所述断点信息,通过所述软plc控制器将所述断点指令的字节编码通过内存拷贝的方式复制到所述当前断点的内存偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存。4.如权利要求1所述的断点调试功能的实现方法,其特征在于,所述断点指令包括当前断点的内存偏移地址,当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的进程异常处理程序完成断点处理的步骤包括:当所述软件程序运行到所述断点指令时,通过所述软plc控制器的处理器执行所述断点指令,触发非法指令异常,并由所述软plc控制器的操作系统将所述异常分发至所述软plc控制器的异常处理程序中;通过所述异常处理程序保存当前环境上下文,获取当前任务信息,并根据所述当前环境上下文的ip寄存器值与所述当前断点的内存偏移地址相等,从所述堆区内存池中出所述断点指令对应的断点信息;其中,所述当前环境上下文包括ip寄存器值、sp寄存器值及bp寄存器值;设置当前软件程序状态为断点暂停,并通知所述软plc控制器的任务调度器停止当前任务的调度,且当前软件程序的任务进入调试循环;其中,所述软件程序停止在当前断点。5.如权利要求4所述的断点调试功能的实现方法,其特征在于,所述通过用户开发环境工具再次启动所述软件程序的运行任务的步骤包括:通过所述用户开发环境工具再次启动所述软件程序的任务或单步运行,将当前任务状
态切换至运行状态,且当前软件程序的任务退出调试循环;通知所述软plc控制器的任务调度器恢复当前任务的调度,控制所述软件程序离开断点处理。6.如权利要求3所述的断点调试功能的实现方法,其特征在于,所述将所述断点指令恢复至所述真实指令的步骤包括:根据所述堆区内存池中的后继断点位置偏移地址,通过所述软plc控制器将所述断点指令的字节编码以内存拷贝的方式复制到所述后继断点位置偏移地址,并刷新所述断点调试功能的实现系统的处理器缓存,以将后继断点的真实指令替换为下一断点指令;根据所述堆区内存池中所述当前断点的内存偏移地址和当前指令大小,通过内存拷贝的方式写入所述当前断点的内存偏移地址,以将所述当前断点的断点指令恢复至所述真实指令。7.如权利要求1所述的断点调试功能的实现方法,其特征在于,所述通过用户开发环境工具再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令的步骤之后,还包括:进入下一断点调试,返回执行步骤:通过所述用户开发环境工具获取软件程序中的断点信息,并将所述断点信息发送至所述软plc控制器。8.一种断点调试功能的实现系统,其特征在于,所述断点调试功能的实现系统包括:用户开发环境工具,用于获取软件程序中的断点信息,并将所述断点信息发送至软plc控制器;软plc控制器,用于根据所述断点信息将断点处的真实指令替换为断点指令;还用于当所述软件程序运行到所述断点指令时,触发非法指令异常,并通过所述软plc控制器的异常处理程序完成断点处理;所述用户开发环境工具,还用于再次启动所述软件程序的运行任务,并将所述断点指令恢复至所述真实指令。9.一种计算机设备,其特征在于,所述计算机设备包括处理器,存储器以及存储在所述存储器中的断点调试功能的实现程序,所述断点调试功能的实现程序被所述处理器运行时,实现如权利要求1-7中任一项所述的断点调试功能的实现方法的步骤。10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有断点调试功能的实现程序,所述断点调试功能的实现程序被处理器运行时实现如权利要求1-7中任一项所述断点调试功能的实现方法的步骤。

技术总结


本发明涉及工业自动化控制技术领域,公开了一种断点调试功能的实现方法、系统、设备及介质。所述断点调试功能的实现方法应用于断点调试功能的实现系统,断点调试功能的实现系统包括用户开发环境工具和软PLC控制器。本发明通过用户开发环境工具获取软件程序中的断点信息,并将断点信息发送至软PLC控制器;通过软PLC控制器根据断点信息将当前断点的真实指令替换为断点指令;当软件程序运行到断点指令时,触发非法指令异常,并通过软PLC控制器的异常处理程序完成断点处理;通过用户开发环境工具再次启动软件程序的运行任务,并将断点指令恢复至真实指令;从而通过代码迁移的技术实现基于软PLC直接在PC上运行实现了断点调试功能,以及提高断点调试的准确率。以及提高断点调试的准确率。以及提高断点调试的准确率。


技术研发人员:

吕健 袁小良

受保护的技术使用者:

深圳市汇川技术股份有限公司

技术研发日:

2022.10.26

技术公布日:

2023/1/17


文章投稿或转载声明

本文链接:http://www.wtabcd.cn/zhuanli/patent-1-71839-0.html

来源:专利查询检索下载-实用文体写作网版权所有,转载请保留出处。本站文章发布于 2023-01-23 08:11:40

发表评论

验证码:
用户名: 密码: 匿名发表
评论列表 (有 条评论
2人围观
参与讨论