CN112631949A - 一种调试方法、装置、计算机设备及存储介质 - Google Patents
一种调试方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112631949A CN112631949A CN202110248738.XA CN202110248738A CN112631949A CN 112631949 A CN112631949 A CN 112631949A CN 202110248738 A CN202110248738 A CN 202110248738A CN 112631949 A CN112631949 A CN 112631949A
- Authority
- CN
- China
- Prior art keywords
- debugging
- program
- execution
- instruction
- information
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 121
- 238000003860 storage Methods 0.000 title claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 62
- 230000006870 function Effects 0.000 claims description 118
- 230000000007 visual effect Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 15
- 230000001960 triggered effect Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
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
技术领域
本申请涉及计算机技术领域,尤其涉及一种调试方法、装置、计算机设备及存储介质。
背景技术
随着科技的不断发展,越来越多的任务都交由设备来完成,那么就需要为设备编写各种各样的程序。通常程序编写完成之后,需要对程序进行调试,确定程序是否存在异常,例如,确定程序的执行逻辑与需求是否对应,或者,确定程序的执行逻辑中是否存在bug等。
目前,针对程序的调试方法是在程序执行之前,调试人员根据经验在程序中设置断点。针对每个断点,当程序执行到断点时暂停,调试人员在程序中编写调试逻辑,并重新执行程序,调试人员根据输出的调试信息,确定程序在断点之前是否存在异常。可见,该调试方法,需要调试人员在程序执行之前准确预判所有可能的断点,才可以对程序中相应的位置进行调试,且,在调试过程中,需要调试人员不断地编写调试逻辑,使得调试程序的效率较低。
发明内容
本申请实施例提供一种调试方法、装置、计算机设备及存储介质,用于提调试程序的效率。
第一方面,提供一种调试方法,包括:
在程序执行过程中,若接收到调试指令,则确定所述调试指令包括的至少一个执行参数;
基于所述至少一个执行参数,同步执行所述程序中的调试函数,并输出调试信息;其中,所述调试信息用于指示所述程序是否存在异常。
可选的,在若接收到调试指令,则确定所述调试指令包括的至少一个执行参数之前,还包括:
确定所述程序执行过程中,是否存在调试标识;其中,所述调试标识用于指示接收调试指令。
可选的,在确定所述调试指令包括的至少一个执行参数之前,还包括:
接收与所述程序关联的标准文件系统触发的调试指令;或者,
接收与所述程序关联的可视化界面触发的调试指令。
可选的,在输出调试信息之前,所述方法还包括:
确定所述程序执行过程中,是否存在存储标识;其中,所述存储标识用于指示存储调试信息;
若确定所述程序执行过程中存在所述存储标识,则存储调试信息。
可选的,若所述程序中包括输出标识,则所述调试信息中还包括执行结果信息;其中,所述执行结果信息用于指示所述程序执行过程中,输出标识所在位置是否已被执行。
第二方面,提供一种测试装置,包括:
接收模块:用于在程序执行过程中,若接收到调试指令,则确定所述调试指令包括的至少一个执行参数;
处理模块:用于基于所述至少一个执行参数,同步执行所述程序中的调试函数,并输出调试信息;其中,所述调试信息用于指示所述程序是否存在异常。
可选的,所述处理模块还用于:
在若接收到调试指令,则确定所述调试指令包括的至少一个执行参数之前,确定所述程序执行过程中,是否存在调试标识;其中,所述调试标识用于指示接收调试指令。
可选的,所述接收模块还用于:
在确定所述调试指令包括的至少一个执行参数之前,接收与所述程序关联的标准文件系统触发的调试指令;或者,接收与所述程序关联的可视化界面触发的调试指令。
可选的,所述处理模块还用于:
在输出调试信息之前,确定所述程序执行过程中,是否存在存储标识;其中,所述存储标识用于指示存储调试信息;
若确定所述程序执行过程中存在所述存储标识,则存储调试信息。
可选的,若所述程序中包括输出标识,则所述调试信息中还包括执行结果信息;其中,所述执行结果信息用于指示所述程序执行过程中,输出标识所在位置是否已被执行。
第三方面,一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如第一方面所述的方法。
第四方面,一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面所述的方法。
本申请实施例中,可以在程序执行过程中,接收调试指令,不需要调试人员分析程序,并提前预判所有可能的断点,简化了调试前的准备过程,提高了调试程序的效率。且,在程序执行过程中,基于调试指令中的至少一个执行参数,可以同步执行程序中的调试函数,不需要暂停程序的执行过程,且,由于调试函数编写在程序当中,因此,在执行调试函数之前,不需要重新编译程序之后再执行程序,简化了执行调试函数的过程,进一步提高了调试程序的效率。且,通过接收不同的执行参数,可以执行不同的调试逻辑,相较于直接调用固定的调试逻辑的方法来说,本申请实施例中,调试程序的灵活性更高。
附图说明
图1为本申请实施例提供的调试方法的一种应用场景示意图;
图2为本申请实施例提供的调试方法的一种流程示意图;
图3为本申请实施例提供的程序关联的可视化界面的一种示意图;
图4为本申请实施例提供的调试方法的一种原理示意图一;
图5为本申请实施例提供的调试方法的一种原理示意图二;
图6为本申请实施例提供的调试装置的结构示意图一;
图7为本申请实施例提供的调试装置的结构示意图二。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
下面对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)标准文件系统:
标准文件系统是指操作系统中,用于组织和管理文件的系统。标准文件系统可以建立文件、检索文件、修改文件或删除文件等。标准文件系统可以按照文件内容的逻辑关系组织各文件。
另外,本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。
在软件程序开发领域中,在程序编写完成之后,或者,在程序出现异常之后,需要对程序进行调试,以确定程序中是否存在异常,例如,程序的执行逻辑是否正确等。目前,常用的调试方法是在程序执行之前,调试人员根据经验在程序中设置断点。针对每个断点,当程序执行到断点时暂停,调试人员在程序中编写调试逻辑,并重新执行程序,调试人员根据输出的调试信息,确定程序在断点之前是否存在异常。然而,在该调试方法中,需要调试人员在程序执行之前准确预判所有可能的断点,才可以对程序中相应的位置进行调试,否则在调试过程中,就需要不断地调整断点的位置;且,在调试过程中,需要调试人员不断地编写调试逻辑,使得调试程序的效率较低。
鉴于此,本申请提供一种调试方法,该方法可以应用于终端设备或网络设备中。终端设备可以是手机、平板电脑或个人计算机等;网络设备可以是本地服务器、第三方服务器或云服务器等。
本申请实施例中,可以在程序执行过程中,接收调试指令,不需要调试人员分析程序,并提前预判所有可能的断点,简化了调试前的准备过程,提高了调试程序的效率。且,基于调试指令中的至少一个执行参数,可以同步执行程序中的调试函数,不需要暂停程序的执行过程,且,由于调试函数编写在程序当中,因此,在执行调试函数之前,不需要重新编译程序之后再执行程序,简化了执行调试函数的过程,进一步提高了调试程序的效率。且,通过接收不同的执行参数,可以执行不同的调试逻辑,相较于直接调用固定的调试逻辑的方法来说,本申请实施例中,调试程序的灵活性更高。
请参考图1,为本申请实施例提供的调试方法的一种应用场景示意图。该应用场景包括终端设备101、调试设备102和显示设备103。终端设备101和调试设备102之间可以通信,调试设备102和显示设备103之间可以通信,终端设备101和显示设备103之间可以通信。通信方式可以是有线通信方式,例如通过连接网线或串口线进行通信;也可以是无线通信方式,例如蓝牙或无线保真(wireless fidelity,WIFI)等技术进行通信,具体不做限制。
终端设备101泛指可以向调试设备102发送调试执行的设备。调试设备102泛指可以执行程序,并对程序进行调试的设备,例如服务器、终端设备或客户端等。客户端可以是安装在终端设备中的第三方应用程序或终端设备可以访问的网页等。显示设备103泛指可以显示调试信息的设备,例如显示屏或终端设备中的客户端等。
作为一种实施例,终端设备101和调试设备102可以是同一个设备,或者,调试设备102和显示设备103可以是同一个设备,或者,终端设备101和显示设备103可以是同一个设备,或者,终端设备101、调试设备102和显示设备103可以是同一个设备。本申请实施例中,以终端设备101、调试设备102和显示设备103为不同的设备为例进行介绍。
下面基于图1的应用场景,对各个设备之间的交互过程进行简单介绍。
在程序执行的过程中,终端设备101可以向调试设备102发送调试指令,调试设备102接收来自终端设备101的调试指令。调试设备102确定调试指令中包括的至少一个执行参数,调试设备102基于至少一个执行参数,同步执行程序中的调试函数,并输出调试信息。调试设备102向显示设备103发送调试信息,显示设备103接收来自调试设备102的调试信息,并显示调试信息。其中,调试信息用于指示程序是否存在异常。
本申请实施例中,在程序执行的过程中,基于至少一个执行参数,同步执行相应的调试函数,不需要在程序执行之前设置断点,且,在执行调试函数时,不需要重新执行程序,提高了调试程序的效率。
请参考图2,为本申请实施例提供的调试方法的一种流程示意图。下面对调试方法进行具体介绍。
S201,在程序执行过程中,接收调试指令。
终端设备101可以响应于调试人员的设置操作,设置操作用于设置至少一个执行参数。终端设备101根据设置的至少一个执行参数生成调试指令。终端设备101向调试设备102发送调试指令,调试设备102接收来自终端设备101的调试指令。
作为一种实施例,设置执行参数可以是指针对某一执行参数名称,设置该执行参数名称对应的执行参数取值;或者,可以是指利用程序所使用的编程语言,编写完整编程语句或完整编程语句中的指定部分等,执行参数的具体形式不做限制。
作为一种实施例,在接收调试指令之前,可以先确定程序中是否存在调试标识。如果确定存在调试标识,那么可以接收调试指令。如果程序中包括多个调试函数,那么在确定程序中存在调试标识之后,可以接收针对调试标识所在上层函数调用的调试函数的调试指令。如果确定不存在调试标识,那么不可以接收调试指令。由于编写程序过程当中,可能会编写一些本次上线任务当中没有要求的相关程序,因此,可能并不是所有的程序都可以进行调试,通过设置调试标识,只有编写了调试标识的上层函数中调用的调试函数,才可以接收调试指令,避免了接收到针对一些不必要调试的程序发送调试指令等误操作的情况,同时,在终端设备101中可以仅显示可设置的执行参数,不需要将所有程序中的参数均显示出来,不仅可以更加快捷地设置执行参数,并生成调试指令,还可以提高终端设备101中显示界面的简洁性。
调试设备102接收终端设备101生成的调试指令的方法有多种,下面以其中的两种为例进行介绍。
由于程序中通常包括大量的函数,因此,调试人员在某个函数中编写调试代码时,需要在大量的代码中找到该函数的所在位置,使得调试程序的效率较低,本申请实施例中,终端设备101可以响应于调试人员的设置操作,生成调试指令,不需要调试人员在程序中寻找该函数的位置,就可以在对应位置的函数中写入调试代码,提高了调试程序的效率。
方法一:
接收与程序关联的可视化界面触发的调试指令。
终端设备101可以通过程序关联的可视化界面,向调试人员展示可以进行设置的所有执行参数。终端设备101响应于调试人员针对程序关联的可视化界面进行的设置操作,生成调试指令。
请参考图3,为程序关联的可视化界面的一种示意图。该可视化界面中可以显示调试函数、调试信息、可以进行设置的执行参数和操作按键等。调试函数包括第一调试函数、第二调试函数和第三调试函数。调试信息包括第一调试信息、第二调试信息和第三调试信息。执行参数包括第一执行参数和第二执行参数。操作按键包括终止按键、清屏按键、暂停/继续按键和设置按键。
调试函数用于指示程序中包括的所有调试函数,选择不同的调试函数之后,可以为不同调试函数设置执行参数,或可以查看不同的调试函数输出的调试信息等。
调试信息包括用于指示当前程序执行过程当中,执行逻辑是否存在异常的相关信息,例如,调试信息包括程序执行过程中,调用的各个接口名称、当前正在执行的函数名称、执行某一函数之后的返回值、函数返回值与预设返回值是否匹配、调用了调试函数的上层函数名称、当前进程,或执行各函数的时间等一种或多种的组合。
执行参数包括调试函数所有可以进行设置的执行参数,例如,第一执行参数为第一执行参数名称对应的第一执行参数取值,第二执行参数为与程序所使用的编程语言对应的编程语句等。
操作按键包括用于生成调试指令的功能按键,例如,用于根据执行参数生成调试指令的设置按键;或者,用于生成用于控制程序执行与否的功能按键,例如,终止按键可以用于终止程序的执行,暂停/继续按键可以用于暂停程序的执行或继续执行程序;或者,用于控制可视化界面的功能按键,例如,清屏按键可以用于清除当前可视化界面中显示的数据等。
作为一种实施例,图3仅为一种可视化界面的示例,可视化界面中包括的内容不作具体限制,只要能够为调试人员提供设置执行参数的功能即可。
方法二:
接收与程序关联的标准文件系统触发的调试指令。
如果程序执行在linux系统中,终端设备101可以通过程序关联的标准文件系统,响应于调试人员的设置操作,生成调试指令。标准文件系统可以根据程序中各个函数的执行逻辑,生成具有层级关系的各个文件,例如/proc/文件系统。调试人员可以在对应的文件中编写编程语句,用于设置至少一个执行参数。
作为一种实施例,编写编程语句的文件在标准文件系统中的层级位置,可以表示调用调试函数的上层函数在程序中的位置。
作为一种实施例,在终端设备101响应于调试人员的设置操作之后,可以先判断设置操作是否合法,如果设置操作合法,那么可以基于设置操作,生成调试指令;如果设置操作不合法,那么可以提示调试人员重新进行设置。其中的操作合法可以是指操作符合相应操作规范,操作不合法可以是指操作不符合相应操作规范。例如,调试人员在设置某一执行参数名称对应的执行参数取值时,该执行参数取值仅接受英文大写、英文小写和数字,如果调试人员将该执行参数取值设置为汉字,那么可以确定该执行参数设置不合法等。
又例如,调试人员在设置某一执行参数的编程语句时,该执行参数仅接收C语言相应的语法规则,如果调试人员按照其他编程语言的语法规则来设置该执行参数,那么可以确定该执行参数设置不合法等。
S202,在程序执行过程中,若接收到调试指令,则确定调试指令包括的至少一个执行参数。
在程序执行过程中,如果调试设备102接收到调试指令,可以对调试指令进行解析,获得调试指令中包括的至少一个执行参数。
作为一种实施例,针对上述方法一,将调试人员选择的调试函数,确定为至少一个执行参数关联的调试函数;针对上述方法二,将编写编程语句的文件在标准文件系统中的位置,在程序中对应的调试函数,确定为至少一个执行参数关联的调试函数。
S203,基于至少一个执行参数,同步执行程序中的调试函数。
调试设备102在获得至少一个执行参数之后,将至少一个执行参数作为调试函数的输入,并执行调试函数。调试函数的执行与程序的执行同步进行,不需要暂停程序的执行过程。因此,调试函数不仅可以用于执行监听逻辑,例如查看程序中某个函数的返回值,或查看程序的执行逻辑等,还可以用于执行控制逻辑,例如修改程序中某个变量的取值,或者,可以用于修改程序的执行逻辑等。根据输入调试函数的至少一个执行参数不同,调试函数可以执行不同的调试逻辑。例如,至少一个执行参数包括不同的执行参数时,可以执行不同的调试逻辑,或者,至少一个执行参数中的执行参数取值不同时,可以执行不同的调试逻辑等,具体不做限制。从而,实现了程序的在线调试。在执行调试函数时,不需要重新编译程序并执行程序,提高了调试程序的效率。
S204,输出调试信息。
在调试函数执行之后,调试设备102可以输出调试信息,调试信息可以用于指示程序是否存在异常。调试信息可以包括程序执行过程中,调用的各个接口名称、执行调试函数之后的返回值、调试函数返回值与预设返回值是否匹配、当前进程,或执行调试函数的时间等一种或多种的组合。
在输出调试信息之后,调试人员可以根据调试信息,确定与调试函数同步执行的程序中是否存在异常,或者,调试设备102可以将调试信息中的各个信息分别与预设的相应信息进行比对,确定与调试函数同步执行的程序中是否存在异常等。
作为一种实施例,调试设备102可以通过显示设备103输出调试信息。调试设备102向显示设备103发送调试信息,显示设备103接收调试设备102发送的调试信息。显示设备103将调试信息转码,以适应当前的显示条件,并在显示设备103上显示调试信息。
显示设备103可以通过视频显示方式显示调试信息,或者可以通过音频显示方式显示调试信息等。例如,视频显示方式包括文字显示,视频显示或图像显示等。音频显示方式包括语音播报等。
作为一种实施例,调试信息的输出过程不限于上述S201~S204,调试信息的输出过程可以有多种,下面以其中的三种为例进行介绍。
过程一:
实时输出调试信息。
在程序执行过程中,在生成调试信息时,可以实时将调试信息输出。例如,当某一函数执行之后,生成了返回值,此时可以将该返回值作为调试信息输出等,从而及时地监听程序的执行情况。
过程二:
在确定程序中存在输出标识时输出调试信息。
如果调试设备102确定存在输出标识,那么调试设备102可以向显示设备103发送执行结果信息,或包括执行结果信息的调试信息。执行结果信息用于指示输出标识所在位置是否已被执行,或者,用于指示输出标识所在位置对应的上层函数是否已被执行等。
如果在调试设备102未接收到调试指令时,确定程序中存在输出标识,那么向调试人员输出的调试信息包括执行程序所产生的信息,从而可以更加全面的监听程序的执行情况。调试人员可以根据调试信息所展示的程序的执行情况,确定程序是否需要调试;或者,调试设备102可以根据调试信息中的各个信息分别与预设的相应信息进行比对,确定程序是否需要调试。如果调试设备102确定程序需要调试,可以向调试人员发送提示信息,以使调试人员通过终端设备101向调试设备102发送调试指令。
如果在调试设备102接收到调试指令之后,确定程序中存在输出标识,那么向调试人员输出的调试信息包括执行调试函数所产生的信息,和执行程序所产生的信息。例如,在调试函数中存在输出标识,那么可以在调试信息中包括调试函数是否执行的执行结果信息等。
如果在确定程序中存在调试标识之前,确定程序中存在输出标识,那么调试设备102可以向显示设备103发送执行结果信息,或包括执行结果信息的调试信息,而调试人员无法通过终端设备101向调试设备102发送调试指令。
例如,请继续参考图3,第一调试函数的上层函数中,存在调试标识和输出标识,那么调试人员可以在调试信息中查看当前程序中该上层函数的执行情况,例如,调用了第一调试函数的上层函数是否已被执行,或调用了第一调试函数的上层函数的返回值是否与预设返回值匹配等。在程序执行的过程当中,调试人员可以随时在可视化界面的调试函数中选择需要执行的调试函数,如第一调试函数。调试人员可以在执行参数中设置第一调试函数的执行参数,并点击设置按键,生成针对第一调试函数的调试指令,以使第一调试函数基于调试指令执行。
过程三:
在确定程序中存在存储标识之后输出调试信息。
如果调试设备102确定存在存储标识,那么调试设备102可以将调试信息存储至内存中。调试设备102可以以一定时长为周期,输出存储的调试信息;或者,调试设备102可以根据调试人员的查询操作,输出指定时间段内的调试信息;或者,调试设备102可以在确定程序中存在输出标识之后,输出存储的调试信息等,具体输出调试信息的条件不做限制。
作为一种实施例,可以通过定义接口的方式,在程序中调用不同功能的接口,实现本申请实施例提供的调试方法,下面以调试标识为Monitor_Init接口,输出标识为Monitor_SetFunc接口,存储标识为Monitor_OutputDebugString接口为例,对调试方法进行示例介绍。
请参考图4,为本申请实施例提供的调试方法的一种原理示意图。该实施例中,以调试设备102为目标机,终端设备101和显示设备103为同一个设备,该设备为个人计算机(personal computer,PC)为例。
目标机中包括两个模块,用户模块(user stub)和核心模块(kernel stub)。userstub包括两个子模块,接口库(monitor.so)和通信单元(daemon)。monitor.so用于提供可以被调用的各个接口,daemon用于存储调试信息,以及向PC发送调试信息。kernel stub包括两个子模块,核心单元(monitor.ko)和通信单元(proc_mod.ko)。monitor.ko用于实现user stub中的monitor.so相应的功能,proc_mod.ko用于接收PC发送的调试信息。目标机可以是linux系统,或者可以是windows系统等,具体不做限制。
PC至少包括显示模块(client),用于显示可视化界面或标准文件系统,以及显示调试信息等,还用于与目标机进行信息交互。PC可以是linux系统,或者可以是windows系统等,具体不做限制。
由于daemon和proc_mod.ko都可以与PC进行信息交互,daemon和proc_mod.ko需要访问目标机中user stub和kernel stub的所有数据,因此,可以在目标机中使用内存映射技术(memory mapping,mmap),使得user stub和kernel stub共用同一个内存空间,节约了需要存储的数据量的大小。
作为一种实施例,请参考图5,为本申请实施例提供的调试方法的一种原理示意图。该实施例中,包括三个需要调试的程序,第一程序,第二程序和第三程序。如果需要调试的程序为多个,多个程序可以同时进行调试,PC可以显示每个程序分别关联的可视化界面,或每个程序分别关联的标准文件系统,不需要在一个程序调试完成之后,再对下一个程序进行调试,进一步提高了调试程序的效率。
目标机中可以在monitor.ko定义各个接口,以使monitor.so可以实现各个接口的功能。本申请实施例中,定义了Monitor_Init接口、Monitor_SetFunc接口、Monitor_OutputDebugString接口、Monitor_RegisterDebugCB接口和Monitor_DebugIOCtl接口五个接口,下面对monitor.so中各个接口的功能进行示例说明。
Monitor_Init接口用于注册一个调试节点。在程序执行过程中,只有调用过该接口之后,才可以接收调试指令,对程序进行调试;或者,在程序执行过程中,对于一个上层函数,只有调用过该接口之后,才可以接收针对该上层函数中的调试函数的调试指令,对程序进行调试;或者,在程序执行过程中,只有调用过该接口之后,才可以接收针对该接口指示的调试函数的调试指令等。
例如,程序在调用Monitor_Init("A",handle)之后,可以接收针对调试函数A的调试指令。
Monitor_SetFunc接口用于记录函数已被调用过。在程序执行过程中,只要某一函数中调用过该接口,那么可以输出执行结果信息,执行结果信息用于指示在程序执行过程中,该函数是否已被执行。执行结果信息可以通过daemon发送给PC。
Monitor_OutputDebugString接口用于存储调试信息,在程序执行过程中,只要某一函数中调用过该接口,那么可以存储调试信息,用于通过daemon发送给PC。
例如,昨天程序在执行过程中出了异常,具体表现为IPC产品的球机控制云台转动异常,那么调试人员就可以通过PC查看昨天存储的调试信息,如程序中关键变量的取值,或某些函数是否被调用等。
作为一种实施例,Monitor_OutputDebugString接口还可以用于存储与程序执行相关的信息,例如,程序异常位置,或执行程序的硬件异常等信息。
Monitor_RegisterDebugCB接口用于存放调试函数,通过至少一个执行参数,调用该接口,可以执行调试函数。Monitor_DebugIOCtl接口用于向Monitor_RegisterDebugCB接口传递至少一个执行参数,具体可以是在Monitor_DebugIOCtl接口中调用Monitor_RegisterDebugCB接口,实现传递至少一个执行参数;或者,可以是先调用Monitor_DebugIOCtl接口,Monitor_DebugIOCtl接口将至少一个执行参数存储于内存中,再调用Monitor_RegisterDebugCB接口,Monitor_RegisterDebugCB接口从内存中读取至少一个执行参数,并执行Monitor_RegisterDebugCB接口中的调试函数等。
例如,程序先调用了Monitor_DebugIOCtl(a,b,c),将a,b,c参数存储于内存中,程序再调用Monitor_RegisterDebugCB(do_something),读取a,b,c参数,并基于a,b,c参数,执行do_something调试函数。
例如,请参考图5,在目标机中执行第一程序,如果第一程序中调用了Monitor_Init接口,那么目标机可以接收针对第一程序的调试指令。如果在第一程序执行过程中,某一函数中调用了Monitor_SetFunc接口,那么目标机通过daemon向PC发送该函数已被调用的信息。如果在第一程序执行过程中,调用了Monitor_OutputDebugString接口,那么目标机存储当前第一程序执行过程中的相关信息,例如第一程序是否存在异常,或者,出现异常时第一程序所执行的位置,或者,目标机硬件异常等。
下面基于图4,对本申请实施例提供的调试方法进行示例介绍。
程序在目标机中开始执行,在程序执行的过程当中,目标机可以实时向PC发送调试信息,以使调试人员可以基于调试信息向目标机发送调试指令,对程序进行调试。
如果确定程序中调用了Monitor_Init接口,那么,PC可以通过client以无线通信的方式,向目标机发送调试指令,目标机可以通过proc_mod.ko以无线通信的方式,接收PC发送的调试指令。其中,PC可以基于调试人员针对程序关联的可视化界面,或程序关联的标准文件系统的设置操作,生成调试指令。
目标机在接收到调试指令之后,确定调试指令包括的至少一个执行参数,通过Monitor_DebugIOCtl接口,向调试函数传递至少一个执行参数,通过Monitor_RegisterDebugCB接口,基于至少一个执行参数,执行调试函数,此时调试函数与程序同步执行,例如,通过执行调试函数,可以查看程序中变量的取值、修改程序中变量的取值、调换程序中函数的执行顺序等。
在程序执行的过程当中,如果确定程序中调用了Monitor_SetFunc接口,那么目标机可以通过daemon,向PC发送调用Monitor_SetFunc接口的上层函数是否被执行的执行结果信息,PC可以通过client接收目标机发送的执行结果信息。
在程序执行的过程当中,如果确定程序中调用了Monitor_OutputDebugString接口,那么目标机可以将程序的调试信息存储于内容中。PC可以通过client向目标机发送查询指令,用于查询目标机中存储的调试信息;或者,目标机可以以一定时长为周期,通过daemon向PC发送存储的调试信息等。
基于同一发明构思,本申请实施例提供一种调试装置,该装置相当于前文论述的调试设备102,能够实现前述调试方法对应的功能。请参考图6,该装置包括接收模块601和处理模块602,其中:
接收模块601:用于在程序执行过程中,若接收到调试指令,则确定调试指令包括的至少一个执行参数;
处理模块602:用于基于至少一个执行参数,同步执行程序中的调试函数,并输出调试信息;其中,调试信息用于指示程序是否存在异常。
在一种可能的实施方式中,处理模块602还用于:
在若接收到调试指令,则确定调试指令包括的至少一个执行参数之前,确定程序执行过程中,是否存在调试标识;其中,调试标识用于指示接收调试指令。
在一种可能的实施方式中,接收模块601还用于:
在确定调试指令包括的至少一个执行参数之前,接收与程序关联的标准文件系统触发的调试指令;或者,接收与程序关联的可视化界面触发的调试指令。
在一种可能的实施方式中,处理模块602还用于:
在输出调试信息之前,确定程序执行过程中,是否存在存储标识;其中,存储标识用于指示存储调试信息;
若确定程序执行过程中存在存储标识,则存储调试信息。
在一种可能的实施方式中,若程序中包括输出标识,则调试信息中还包括执行结果信息;其中,执行结果信息用于指示程序执行过程中,输出标识所在位置是否已被执行。
基于同一发明构思,本申请实施例提供一种计算机设备,该计算机设备能够实现前述的调试功能,该计算机设备可以相当于前述的电扇,请参见图7,该计算机设备包括:
至少一个处理器701,以及与至少一个处理器701连接的存储器702,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中是以处理器701和存储器702之间通过总线700连接为例。总线700在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线700可以分为地址总线、数据总线、控制总线等,为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器701也可以称为控制器701,对于名称不做限制。
在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前文论述的调试方法。处理器701可以实现图6所示的控制设备中各个模块的功能。
其中,处理器701是该控制设备的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,该控制设备的各种功能和处理数据,从而对该控制设备进行整体监控。
在一种可能的实施方式中,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器701可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的调试方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器701进行设计编程,可以将前述实施例中介绍的调试方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图2所示的实施例的调试方法的步骤。如何对处理器701进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述调试方法。
在一些可能的实施方式中,本申请提供的调试方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本申请各种示例性实施方式的调试方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种调试方法,其特征在于,包括:
在程序执行过程中,若接收到调试指令,则确定所述调试指令包括的至少一个执行参数;
基于所述至少一个执行参数,同步执行所述程序中的调试函数,并输出调试信息;其中,所述调试信息用于指示所述程序是否存在异常。
2.根据权利要求1所述的方法,其特征在于,在若接收到调试指令,则确定所述调试指令包括的至少一个执行参数之前,还包括:
确定所述程序执行过程中,是否存在调试标识;其中,所述调试标识用于指示接收调试指令。
3.根据权利要求1所述的方法,其特征在于,在确定所述调试指令包括的至少一个执行参数之前,还包括:
接收与所述程序关联的标准文件系统触发的调试指令;或者,
接收与所述程序关联的可视化界面触发的调试指令。
4.根据权利要求1~3任一项所述的方法,其特征在于,在输出调试信息之前,所述方法还包括:
确定所述程序执行过程中,是否存在存储标识;其中,所述存储标识用于指示存储调试信息;
若确定所述程序执行过程中存在所述存储标识,则存储调试信息。
5.根据权利要求1~3任一项所述的方法,其特征在于,若所述程序中包括输出标识,则所述调试信息中还包括执行结果信息;其中,所述执行结果信息用于指示所述程序执行过程中,输出标识所在位置是否已被执行。
6.一种调试装置,其特征在于,包括:
接收模块:用于在程序执行过程中,若接收到调试指令,则确定所述调试指令包括的至少一个执行参数;
处理模块:用于基于所述至少一个执行参数,同步执行所述程序中的调试函数,并输出调试信息;其中,所述调试信息用于指示所述程序是否存在异常。
7.根据权利要求6所述的装置,其特征在于,所述处理模块还用于:
在若接收到调试指令,则确定所述调试指令包括的至少一个执行参数之前,确定所述程序执行过程中,是否存在调试标识;其中,所述调试标识用于指示接收调试指令。
8.根据权利要求6所述的装置,其特征在于,所述接收模块还用于:
在确定所述调试指令包括的至少一个执行参数之前,接收与所述程序关联的标准文件系统触发的调试指令;或者,接收与所述程序关联的可视化界面触发的调试指令。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如权利要求1~5中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1~5中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011454245 | 2020-12-10 | ||
CN2020114542453 | 2020-12-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631949A true CN112631949A (zh) | 2021-04-09 |
CN112631949B CN112631949B (zh) | 2021-09-21 |
Family
ID=75297618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110248738.XA Active CN112631949B (zh) | 2020-12-10 | 2021-03-08 | 一种调试方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631949B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170987A (zh) * | 2023-11-03 | 2023-12-05 | 睿思芯科(深圳)技术有限公司 | 嵌入式实时操作系统的监视方法、系统及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665167A (zh) * | 2016-07-28 | 2018-02-06 | 华为软件技术有限公司 | 程序调试方法、装置及程序开发设备 |
CN109783342A (zh) * | 2017-11-10 | 2019-05-21 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
CN110069404A (zh) * | 2019-03-27 | 2019-07-30 | 广东高云半导体科技股份有限公司 | 代码调试方法、装置、设备及介质 |
CN110633220A (zh) * | 2019-09-25 | 2019-12-31 | 北京明略软件系统有限公司 | 调试信息显示方法、装置、存储介质及电子设备 |
CN110908899A (zh) * | 2019-11-08 | 2020-03-24 | 北京奇艺世纪科技有限公司 | 应用程序的调试方法、移动终端及计算机可读存储介质 |
CN111400172A (zh) * | 2020-03-03 | 2020-07-10 | 北京声智科技有限公司 | 程序调试方法及装置 |
-
2021
- 2021-03-08 CN CN202110248738.XA patent/CN112631949B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665167A (zh) * | 2016-07-28 | 2018-02-06 | 华为软件技术有限公司 | 程序调试方法、装置及程序开发设备 |
CN109783342A (zh) * | 2017-11-10 | 2019-05-21 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
CN110069404A (zh) * | 2019-03-27 | 2019-07-30 | 广东高云半导体科技股份有限公司 | 代码调试方法、装置、设备及介质 |
CN110633220A (zh) * | 2019-09-25 | 2019-12-31 | 北京明略软件系统有限公司 | 调试信息显示方法、装置、存储介质及电子设备 |
CN110908899A (zh) * | 2019-11-08 | 2020-03-24 | 北京奇艺世纪科技有限公司 | 应用程序的调试方法、移动终端及计算机可读存储介质 |
CN111400172A (zh) * | 2020-03-03 | 2020-07-10 | 北京声智科技有限公司 | 程序调试方法及装置 |
Non-Patent Citations (1)
Title |
---|
童年的天空: "在线/不重启/不暂停的对Java应用进行Debug,通过程序打断点并输出断点信息", 《HTTPS://BLOG.CSDN.NET/SCORPIO3K/ARTICLE/DETAILS/52936701?UTM_SOURCE=GOLD_BROWSER_EXTENSION》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170987A (zh) * | 2023-11-03 | 2023-12-05 | 睿思芯科(深圳)技术有限公司 | 嵌入式实时操作系统的监视方法、系统及相关设备 |
CN117170987B (zh) * | 2023-11-03 | 2024-03-08 | 睿思芯科(深圳)技术有限公司 | 嵌入式实时操作系统的监视方法、系统及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112631949B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021042914A1 (zh) | 测试数据生成方法、装置、计算机设备和存储介质 | |
US20140372985A1 (en) | API Rules Verification Platform | |
CN111858296B (zh) | 接口测试方法、装置、设备和存储介质 | |
WO2016095570A1 (zh) | 一种嵌入式系统的调试方法及装置、存储介质 | |
CN113868126A (zh) | 应用调试方法、装置、设备的存储介质 | |
CN111831542B (zh) | Api应用调测方法及装置、存储介质 | |
CN113778391A (zh) | 原生应用程序的页面处理方法、装置及设备 | |
US9934292B2 (en) | Dynamic presentation of a results set by a form-based software application | |
CN115437933A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN111367518A (zh) | 页面布局方法、装置、计算设备及计算机存储介质 | |
CN112631949B (zh) | 一种调试方法、装置、计算机设备及存储介质 | |
US10275595B2 (en) | System and method for characterizing malware | |
CN113778878A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN111949510B (zh) | 测试处理方法、装置、电子设备及可读存储介质 | |
CN111176986B (zh) | 线程脚本调试方法、装置、计算机设备和存储介质 | |
CN114003421B (zh) | 虚拟机超时机制测试方法、系统、终端及存储介质 | |
US20180203790A1 (en) | Detection of software errors | |
CN115599401A (zh) | 自定义模型的发布方法、装置、设备及介质 | |
CN113419738A (zh) | 接口文档的生成方法、装置及接口管理设备 | |
CN110262856B (zh) | 一种应用程序数据采集方法、装置、终端及存储介质 | |
CN114356290A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN113535580A (zh) | 一种cts测试方法、装置及测试设备 | |
CN113610242A (zh) | 数据处理方法、装置和服务器 | |
CN117221117B (zh) | 规范化弹窗生成方法、系统、终端及存储介质 | |
CN110309038B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |