CN113626332B - 调试方法、装置、设备、存储介质以及计算机程序产品 - Google Patents

调试方法、装置、设备、存储介质以及计算机程序产品 Download PDF

Info

Publication number
CN113626332B
CN113626332B CN202110928528.5A CN202110928528A CN113626332B CN 113626332 B CN113626332 B CN 113626332B CN 202110928528 A CN202110928528 A CN 202110928528A CN 113626332 B CN113626332 B CN 113626332B
Authority
CN
China
Prior art keywords
data table
program
executed
operation record
record
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
CN202110928528.5A
Other languages
English (en)
Other versions
CN113626332A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110928528.5A priority Critical patent/CN113626332B/zh
Publication of CN113626332A publication Critical patent/CN113626332A/zh
Application granted granted Critical
Publication of CN113626332B publication Critical patent/CN113626332B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • 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/3644Software debugging by instrumenting at runtime
    • 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)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种调试方法、跨平台调试方法、装置、设备、存储介质以及计算机程序产品,涉及计算机技术领域,尤其涉及终端应用测试领域。具体实现方案为:响应于程序启动,创建数据表;在数据表中存储程序运行时的操作记录;响应于检测到程序运行异常,重新启动程序;基于数据表中的操作记录,运行并调试重新启动后的程序,确定异常变量;基于异常变量,修复程序。根据数据表还原程序运行异常前的所有操作,并对程序进行调试,可快速定位异常点,提高了调试效率。

Description

调试方法、装置、设备、存储介质以及计算机程序产品
技术领域
本公开涉及计算机技术领域,具体为终端应用测试领域,尤其涉及一种调试方法、跨平台调试方法、装置、设备、存储介质以及计算机程序产品。
背景技术
目前在解决软件功能异常时主要采用断点调试的方式。但该方法无法在已经发生异常的操作中添加输出信息,对于小概率复现的异常也无法还原异常操作。
发明内容
本公开提供了一种调试方法、跨平台调试方法、装置、设备、存储介质以及计算机程序产品,提高了调试效率。
根据本公开的一方面,提供了一种调试方法,包括:响应于程序启动,创建数据表;在数据表中存储程序运行时的操作记录;响应于检测到程序运行异常,重新启动程序;基于数据表中的操作记录,运行并调试重新启动后的程序,确定异常变量;基于异常变量,修复程序。
根据本公开的另一方面,提供了一种跨平台调试方法,包括:响应于程序在第一平台运行,创建第一数据表,将程序在第一平台运行时的操作记录存储到第一数据表中;响应于程序在第一平台运行时发生异常,在第二平台加载第一数据表,创建第二数据表;基于第一数据表中的操作记录,在第二平台运行程序,将程序在第二平台运行时的操作记录存储到第二数据表中;将第一数据表与第二数据表进行比较,确定异常变量;基于异常变量,在第一平台上调试并修复程序。
根据本公开的又一方面,提供了一种调试装置,包括:创建模块,被配置为响应于程序启动,创建数据表;存储模块,被配置为在数据表中存储程序运行时的操作记录;重启模块,被配置为响应于检测到程序运行异常,重新启动程序;调试模块,被配置为基于数据表中的操作记录,运行并调试重新启动后的程序,确定异常变量;修复模块,被配置为基于异常变量,修复程序。
根据本公开的又一方面,提供了一种跨平台调试装置,包括:第一运行模块,被配置为响应于程序在第一平台运行,创建第一数据表,将程序在第一平台运行时的操作记录存储到第一数据表中;运行异常模块,被配置为响应于程序在第一平台运行时发生异常,在第二平台加载第一数据表,创建第二数据表;第二运行模块,被配置为基于第一数据表中的操作记录,在第二平台运行程序,将程序在第二平台运行时的操作记录存储到第二数据表中;比较模块,被配置为将第一数据表与第二数据表进行比较,确定异常变量;调试修复模块,被配置为基于异常变量,在第一平台上调试并修复程序。
根据本公开的又一方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行上述调试方法及跨平台调试方法。
根据本公开的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,上述计算机指令用于使上述计算机执行上述调试方法及跨平台调试方法。
根据本公开的再一方面,提供了一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现上述调试方法及跨平台调试方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开可以应用于其中的示例性系统架构图;
图2是根据本公开的调试方法的一个实施例的流程图;
图3是根据本公开的调试方法的另一个实施例的流程图;
图4是根据本公开的调试方法的又一个实施例的流程图;
图5是根据本公开的基于操作回退步数从多条操作记录中确定出待执行的操作记录的一个实施例的流程图;
图6是根据本公开的基于待执行的操作记录和日志信息输出指令,运行重新启动后的程序并输出日志信息的一个实施例的流程图;
图7是根据本公开的跨平台调试方法的一个实施例的流程图;
图8是根据本公开的调试装置的一个实施例的结构示意图;
图9是根据本公开的跨平台调试装置的一个实施例的结构示意图;
图10是用来实现本公开实施例的调试方法或跨平台调试方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1示出了可以应用本公开的调试方法或跨平台调试方法或调试装置或跨平台调试装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以获取修复的程序等。终端设备101、102、103上可以安装有各种客户端应用,例如调试应用等等。
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述电子设备中。其可以实现成多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以提供各种基于调试的服务。例如,服务器105可以对从终端设备101、102、103获取到的数据表进行分析和处理,并生成处理结果(例如获取修复的程序等)。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本公开实施例所提供的调试方法或跨平台调试方法一般由服务器105执行,相应地,调试装置或跨平台调试装置一般设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,其示出了根据本公开的调试方法的一个实施例的流程200。该调试方法包括以下步骤:
步骤201、响应于程序启动,创建数据表。
在本实施例中,调试方法的执行主体(例如图1所示的服务器105)可以响应于程序启动,创建数据表。其中,数据表是一个临时保存数据的网络虚拟表,数据表有一个名字标识,且包含带有列名的列和记录数据的行。在本实施例中,带有列名的列可以是字段名称列、字段描述列、主键列、类型列、外键列和说明列,其中,字段描述列是对字段名称列的具体描述,主键列和外键列用于表示当前字段是否是主键或者外键,类型列可以是字符型、数字型或其它类型,说明列用于表示当前字段是否非空。数据表存储于数据库中,上述执行主体可以基于任意一种数据库创建数据表,本公开对此不做限定。
示例性的,上述执行主体可以基于SQLite数据库创建数据表。SQLite数据库是一款轻量级的嵌入式数据库,该数据库具有存储数据量大、插入耗时短、轻量级、可移植性强、无需配置的特性。在本实施例中,当程序启动后,上述执行主体可以在SQLite数据库中基于SQL(Structured Query Language,结构化查询语言)语句创建数据表。
步骤202、在数据表中存储程序运行时的操作记录。
在本实施例中,上述执行主体创建数据表后,可以在数据表中存储程序运行时的操作记录。在程序运行时,可以基于操作步骤在数据表中生成对应的操作记录。操作记录包括对应的操作步骤的具体操作内容,操作记录的内容并不是固定的,可以基于不同程序的不同功能特点,在操作记录中添加不同的字段。
步骤203、响应于检测到程序运行异常,重新启动程序。
在本实施例中,上述执行主体在运行程序的过程中,若检测到程序运行异常,则重新启动程序。程序运行异常的表现可以是程序无响应、终端设备死机蓝屏,程序运行异常的表现可以是除了正常执行预定指令、得到预定结果之外的任意一种表现,本公开对此不做限定。重新启动可以是直接重新启动程序,也可以是先重新启动终端设备,再重新启动程序,也可以是先重新安装其它版本的程序,再重新启动程序,本公开对此不做限定。
步骤204、基于数据表中的操作记录,运行并调试重新启动后的程序,确定异常变量。
在本实施例中,上述执行主体在重新启动程序后,可以运行并调试重新启动后的程序,确定异常变量。上述执行主体可以基于操作记录的内容,依次执行程序运行异常前的操作记录中的每一个操作步骤,还原程序运行异常前的操作过程,运行重新启动后的程序,并在运行过程中对程序进行调试。其中,调试可以采用对程序进行断点调试的方式,也可以采用其它调试方式,本公开对此不做限定。通过对程序进行调试,可以确定异常变量,其中,异常变量是导致程序运行异常的变量。
步骤205、基于异常变量,修复程序。
在本实施例中,上述执行主体在确定异常变量后,可以基于异常变量,修复程序。可以基于异常变量的类型,相应的修改程序,通过运行修改后的程序可以得到预定的结果。异常变量的类型可以是语法类错误,行为类错误,例如崩溃异常,时间性能类错误,例如并发性能,空间性能类错误,例如内存性能,本公开对此不做限定。
本公开实施例提供的调试方法,首先响应于程序启动,创建数据表,然后在数据表中存储程序运行时的操作记录,然后响应于检测到程序运行异常,重新启动程序,接着基于数据表中的操作记录,运行并调试重新启动后的程序,确定异常变量,最后基于异常变量,修复程序。根据数据表还原程序运行异常前的所有操作,并对程序进行调试,可快速定位异常点,提高了调试效率。
进一步继续参考图3,其示出了根据本公开的调试方法的另一个实施例的流程300。该调试方法包括以下步骤:
步骤301、响应于程序启动,创建数据表。
在本实施例中,步骤301具体操作已在图2所示的实施例中步骤201进行了详细的介绍,在此不再赘述。
步骤302、基于程序运行时的操作步骤,生成对应的多条操作记录。
在本实施例中,上述执行主体可以基于程序运行时的操作步骤,生成对应的多条操作记录。在程序运行时,每执行一个需要记录的操作步骤,在数据库中生成一条操作记录,直至程序停止运行。若执行的操作步骤不需要记录,则不记录该操作步骤,其中,不需要记录的操作步骤可以是不影响复现操作过程的操作步骤,也可以是预先设定的不用执行的操作步骤。示例性的,若程序为3D(Three Dimensions,三维)渲染程序,可以预先设定,使用3D渲染程序加载模型之后,可以对模型进行缩放、旋转,但不能对模型进行移动,因此,当运行3D渲染程序时,不会将移动操作记录在数据库中。示例性的,当运行3D渲染程序时,首先打开3D渲染程序,若打开成功,则输出打开成功的提示信息,当再次运行3D渲染程序时,即使跳过输出提示信息的步骤,也不影响复现上一次运行时的操作过程,因此,当运行3D渲染程序时,不会将输出提示信息的步骤记录在数据库中。从程序开始运行到程序停止运行,在数据库中生成的所有操作记录构成对应的多条操作记录。每一条操作记录包括对应操作步骤的操作时间、操作标识、函数名称和关键变量。其中,操作时间是开始执行该操作步骤时的时间,操作标识是可以唯一确定该操作步骤的标识,函数名称是执行该操作步骤时调用的函数名称,关键变量是执行该操作步骤中的函数时,该函数中的关键变量。
步骤303、将多条操作记录存储到数据表中。
在本实施例中,上述执行主体在得到多条操作记录后,可以将多条操作记录存储到数据表中。具体地,可以基于数据库中的插入命令,按照操作记录对应的每一个操作步骤的执行顺序,依次将多条操作记录中的每一条操作记录插入到数据表中。通过生成并存储多条操作记录,全面记录了操作步骤的具体操作内容,便于基于多条操作记录还原操作过程,快速定位异常点,提高了调试效率。
步骤304、响应于检测到程序运行异常,重新启动程序
在本实施例中,步骤304具体操作已在图2所示的实施例中步骤203进行了详细的介绍,在此不再赘述。
步骤305、确定操作回退步数。
在本实施例中,上述执行主体在重新启动程序后,可以确定操作回退步数。操作回退步数是从程序运行异常开始,设置的回退步数,当运行重新启动的程序时,只需执行操作回退步数内的操作步骤,示例性的,若程序在执行第8个操作步骤时出现异常,则重新启动程序,设置操作回退步数为3,运行重新启动的程序时,只需执行第6-第8个操作步骤。这样无需还原并调试程序异常前的所有操作步骤,只需还原并调试程序异常附近的操作步骤,可以快速定位异常变量,提高了调试效率。其中,操作回退步数小于等于程序运行异常前的所有操作步骤数。
步骤306、基于操作回退步数从多条操作记录中确定出待执行的操作记录。
在本实施例中,上述执行主体在确定操作回退步数后,可以从多条操作记录中确定出待执行的操作记录。其中,多条操作记录是在程序运行时,每执行一个需要记录的操作步骤,基于数据库中的插入命令在数据表中插入一条操作记录,直至程序运行异常,在数据表中插入的所有操作记录。在确定操作回退步数后,可确定操作回退步数内的操作步骤,进而可在多条操作记录中找出与操作回退步数内的操作步骤相对应的操作记录,将与操作回退步数内的操作步骤相对应的操作记录确定为待执行的操作记录。
步骤307、在待执行的操作记录中添加日志信息输出指令。
在本实施例中,上述执行主体在确定待执行的操作记录后,可在待执行的操作记录中添加日志信息输出指令。具体地,可在待执行的操作记录中的函数中添加日志信息输出指令,添加日志信息输出指令后,可输出添加位置的函数名称,以及函数运行到添加位置时函数中的关键变量值,以及输出指令中要求输出的其它内容。在本实施例中,通过在待执行的操作记录中添加日志信息输出指令,可以在还原程序异常前的操作的同时,不断地输出日志信息,基于日志信息可以快速定位异常变量,进一步提高了调试效率。
步骤308、基于待执行的操作记录和日志信息输出指令,运行重新启动后的程序并输出日志信息。
在本实施例中,上述执行主体可以基于待执行的操作记录和日志信息输出指令,运行重新启动后的程序并输出日志信息。具体地,可以基于待执行的操作记录运行重新启动后的程序,还原待执行的操作记录对应的操作步骤,同时,当程序运行到日志信息输出指令的添加位置时,可基于日志信息输出指令输出日志信息,日志信息中记录了程序运行到添加位置时所调用的函数名称,以及执行调用的函数产生的关键变量值。
步骤309、将待执行的操作记录中的函数名称和关键变量,与日志信息中的函数名称和关键变量进行比较,得到异常变量。
在本实施例中,上述执行主体可以将待执行的操作记录与日志信息进行比较,得到异常变量。将待执行的操作记录中的函数名称与日志信息中的函数名称进行比较,若函数名称相同,再比较与该函数名称对应的待执行的操作记录中的关键变量,与日志信息中的关键变量。若待执行的操作记录与日志信息中的关键变量有差异,则对差异信息进行分析,得到异常变量。
步骤310、基于异常变量,修复程序。
在本实施例中,步骤310具体操作已在图2所示的实施例中步骤205进行了详细的介绍,在此不再赘述。
从图3中可以看出,与图2对应的实施例相比,本实施例中的调试方法通过设置操作回退步数及添加日志信息输出指令,进一步提高了调试效率。
进一步继续参考图4,其示出了根据本公开的调试方法的又一个实施例的流程400。该调试方法包括以下步骤:
步骤401、响应于程序启动,创建一个操作数据表和至少一个功能数据表。
在本实施例中,上述执行主体可以响应于程序启动,创建操作数据表和功能数据表。操作数据表和功能数据表都是临时保存数据的网络虚拟表,每个数据表都有一个名字标识,且包含带有列名的列和记录数据的行。操作数据表和功能数据表存储于数据库中,上述执行主体可以基于任意一种数据库创建操作数据表和功能数据表,本公开对此不做限定。具体地,可以基于数据库中的创建语句创建操作数据表和功能数据表。
在本实施例的一些可选方式中,上述执行主体可以根据需要存储的数据类型,创建一个操作数据表和至少一个功能数据表,以满足不同的存储需求。其中,至少一个功能数据表是将程序的每个功能建立一个功能数据表。当程序运行时,将需要记录的操作步骤的公共字段存储到一个操作数据表中,当执行每一个需要记录的操作步骤时,根据该操作步骤的功能,将表示该操作步骤功能的字段存储到对应的功能数据表中。示例性的,若程序为3D渲染程序,当程序启动时,如表1,创建一个操作数据表,示例性的,如表2,3D渲染程序有模型缩放功能,创建一个模型缩放功能数据表,如表3,3D渲染程序有模型渲染功能,创建一个模型渲染功能数据表,需要说明的是,3D渲染程序有多少个功能就创建多少个功能数据表,在本实施例中,只示范性的创建了模型缩放功能数据表和模型渲染功能数据表。如表1-表3所示,每一个数据表共有6列,第一行是该数据表的名字,第二行是字段属性介绍,从第三行往后每一行记录一个字段的具体内容。例如,将操作时间字段记录在操作数据表的第三行中,具体记录了操作时间字段的字段名称为operate_time,字段描述为操作时间,该字段在操作数据表中是主键,不是外键,该字段的类型是字符型,为非空字段。同样的,例如在模型缩放功能数据表中,在第三行中记录了执行模型缩放功能的函数名称字段,具体记录了函数名称字段的字段名称为operate_func1,字段描述为函数名称,该字段在模型缩放功能数据表中既不是主键,也不是外键,该字段的类型是字符型,为非空字段。由于不同的功能调用的函数不同,通过创建一个操作数据表和至少一个功能数据表的方式,可以使数据存储、查找、扩展更加便捷,提高了调试效率。
表1
Figure BDA0003209784790000101
表2
Figure BDA0003209784790000102
表3
Figure BDA0003209784790000103
步骤402、基于程序运行时的操作步骤,生成对应的多条操作记录。
在本实施例中,步骤402具体操作已在图3所示的实施例中步骤302进行了详细的介绍,在此不再赘述。
需要说明的是,操作记录中还包括功能标识,功能标识与功能数据表相对应,每种功能标识对应一个功能数据表。
步骤403、将操作记录中的操作时间、操作标识和功能标识作为第一子操作记录,存储在操作数据表中。
在本实施例中,上述执行主体在生成多条操作记录后,可以将多条操作记录中的操作时间、操作标识和功能标识作为第一子操作记录,存储在操作数据表中。具体地,可以根据操作记录对应的操作步骤的执行顺序,将每一条操作记录中的操作时间、操作标识和功能标识作为一组,按照执行顺序将每一组依次存储到操作数据表中,多条操作记录中的每一组构成第一子操作记录。
步骤404、将操作记录中的操作标识、函数名称和关键变量作为第二子操作记录,存储在功能标识对应的功能数据表中。
在本实施例中,上述执行主体在生成多条操作记录后,可以将多条操作记录中的操作标识、函数名称和关键变量作为第二子操作记录,存储在功能标识对应的功能数据表中。具体地,可以先根据每一条操作记录中的功能标识确定对应的功能数据表,然后将每一条操作记录中的操作标识、函数名称和关键变量作为一组,根据操作记录对应的操作步骤的执行顺序,将每一组依次存储到功能标识对应的功能数据表中,多条操作记录中的每一组构成第二子操作记录。
步骤405、响应于检测到程序运行异常,重新启动程序。
步骤406、基于数据表中的操作记录,运行并调试重新启动后的程序,确定异常变量。
步骤407、基于异常变量,修复程序。
在本实施例中,步骤405-407具体操作已在图2所示的实施例中步骤203-205进行了详细的介绍,在此不再赘述。
从图4中可以看出,与图2对应的实施例相比,本实施例中调试方法将数据表分为一个操作数据表和至少一个功能数据表,并将操作记录存储到一个操作数据表和至少一个功能数据表中,使数据表的应用更加灵活,进一步提高了调试效率。
进一步继续参考图5,其示出了根据本公开的基于操作回退步数从多条操作记录中确定出待执行的操作记录的一个实施例的流程500。该从多条操作记录中确定出待执行的操作记录方法包括以下步骤:
步骤501、基于操作回退步数,从操作数据表中确定出待执行的第一子操作记录。
在本实施例中,上述执行主体可以基于操作回退步数确定出待执行的第一子操作记录。基于操作回退步数,可以确定操作回退步数内的操作步骤,进而可以确定与操作回退步数内的操作步骤相对应的操作记录,在操作数据表中确定出对应的操作记录中的操作时间、操作标识和功能标识,作为待执行的第一子操作记录。
步骤502、基于待执行的第一子操作记录中的功能标识,从至少一个功能数据表中确定出目标功能数据表。
在本实施例中,上述执行主体确定出待执行的第一子操作记录后,可以确定目标功能数据表。功能标识与功能数据表相对应,每种功能标识对应一个功能数据表,且每个功能数据表都由一个名字标识。在确定出待执行的第一子操作记录后,基于待执行的第一子操作记录中的功能标识,在至少一个功能数据表中搜索出功能数据表的名字与功能标识相同的功能数据表,作为目标功能数据表。
步骤503、基于待执行的第一子操作记录中的操作标识,从目标功能数据表中确定出待执行的第二子操作记录。
在本实施例中,上述执行主体在确定目标功能数据表后,可以从目标功能数据表中确定出待执行的第二子操作记录。将待执行的第一子操作记录中的操作标识,与目标功能数据表中的操作标识进行匹配,找出目标功能数据表中操作标识相同的每一组,将每一组中的操作标识、函数名称和关键变量确定为待执行的第二子操作记录。
步骤504、基于操作标识,将待执行的第一子操作记录和对应的待执行的第二子操作记录确定为待执行的操作记录。
在本实施例中,上述执行主体将待执行的第一子操作记录和待执行的第二子操作记录确定为待执行的操作记录。其中,操作标识相同的第一子操作记录中的一组数据与第二子操作记录中的一组数据为对应的一条待执行的操作记录。
从图5中可以看出,与图3对应的实施例相比,本实施例中的调试方法基于操作回退步数、第一子操作记录和第二子操作记录来确定待执行的操作记录,使操作记录的应用更加方便快捷,进一步提高了调试效率。
进一步继续参考图6,其示出了根据本公开的基于待执行的操作记录和日志信息输出指令,运行重新启动后的程序并输出日志信息的一个实施例的流程600。该运行重新启动后的程序并输出日志信息方法包括以下步骤:
步骤601、基于待执行的操作记录中的函数名称和关键变量,确定待运行的目标操作步骤。
在本实施例中,上述执行主体可以基于待执行的操作记录,确定待运行的目标操作步骤。每一条操作记录对应一个操作步骤,记录了一个操作步骤的函数名称和关键变量。当再次运行程序时,可基于一条操作记录中的函数名称重新调用该函数,还原操作记录对应的操作步骤。因此基于待执行的操作记录中的函数名称可确定待运行的目标操作步骤,待执行的操作记录中的关键变量可作为参考,当重新运行该目标操作步骤时,与重新运行产生的关键变量进行比较分析。
步骤602、基于待执行的操作记录中的操作时间,得到目标操作步骤的执行顺序。
在本实施例中,上述执行主体可基于待执行的操作记录确定目标操作步骤的执行顺序。每一条操作记录对应一个操作步骤,记录了执行一个操作步骤时的操作时间。因此,基于待执行的操作记录中的操作时间,可确定目标操作步骤的执行先后顺序。
步骤603、基于日志信息输出指令在待执行的操作记录中的添加位置,确定输出日志信息的时间节点。
在本实施例中,上述执行主体可基于日志信息输出指令的添加位置,确定输出日志信息的时间节点。基于日志信息输出指令在待执行的操作记录中的添加位置,可确定日志信息输出指令具体添加在哪一条待执行的操作记录中,基于该条待执行的操作记录中的操作时间与所有待执行的操作记录中的操作时间,可确定在执行目标操作步骤时,输出日志信息的时间节点是在执行该条待执行的操作记录的操作时间,与执行与该条待执行的操作记录对应的下一条待执行的操作记录的操作时间之间。
步骤604、运行重新启动后的程序,按照执行顺序依次执行目标操作步骤,并基于时间节点输出日志信息。
在本实施例中,上述执行主体在重新启动程序后,按照目标操作步骤的执行先后顺序,依次执行每一个目标操作步骤,同时,当程序运行到输出日志信息的时间节点时,输出日志信息。
从图6中可以看出,与图3对应的实施例相比,本实施例中的调试方法通过确定目标操作步骤的执行顺序与输出日志信息的时间节点,按照时间先后顺序依次执行目标操作步骤并输出日志信息,有序进行调试,提高了调试效率。
进一步参考图7,其示出了根据本公开的跨平台调试方法的一个实施例的流程700。该跨平台调试方法包括以下步骤:
步骤701、响应于程序在第一平台运行,创建第一数据表,将程序在第一平台运行时的操作记录存储到第一数据表中。
在本实施例中,该方法可以应用于图2~图6的调试方法中,进行跨平台调试。上述执行主体响应于程序在第一平台运行,创建第一数据表。其中,第一数据表是一个临时保存数据的网络虚拟表,由一个名字标识,且包含带有列名的列和记录数据的行。第一数据表存储于与第一平台对应的数据库中,上述执行主体可以基于任意一种数据库创建第一数据表,本公开对此不做限定。当程序在第一平台运行时,每执行一个操作步骤,基于数据库中的插入命令在第一数据表中插入一条操作记录。
步骤702、响应于程序在第一平台运行时发生异常,在第二平台加载第一数据表,创建第二数据表。
在本实施例中,上述执行主体可以在检测到程序在第一平台运行时发生异常,在第二平台加载第一数据表,创建第二数据表。检测到程序在第一平台运行时发生异常的表现可以是程序在第一平台运行时无响应、终端设备死机蓝屏,本公开对此不做限定。在第二平台加载第一数据表是在第二平台上打开程序,将第一数据表复制到第二平台,同时,在第二平台上创建第二数据表,第二数据表存储于与第二平台对应的数据库中,上述执行主体可以基于任意一种数据库创建第二数据表,本公开对此不做限定。
步骤703、基于第一数据表中的操作记录,在第二平台运行程序,将程序在第二平台运行时的操作记录存储到第二数据表中。
在本实施例中,上述执行主体在第二平台读取第一数据表中的操作记录,基于第一数据表中的操作记录中的函数名称,调用并执行相同的函数,在第二平台运行程序。同时,在第二平台上每执行一个操作步骤,基于数据库中的插入命令在第二数据表中插入一条操作记录。
步骤704、将第一数据表与第二数据表进行比较,确定异常变量。
在本实施例中,上述执行主体可以将第一数据表中的操作记录与第二数据表中的操作记录进行比较,比较操作记录对应的操作步骤中的函数名称和关键变量,若同一函数名称对应的关键变量不同,则进行分析,确定出异常变量,其中,异常变量是导致程序运行异常的变量。
步骤705、基于异常变量,在第一平台上调试并修复程序。
在本实施例中,上述执行主体在确定异常变量后,可以在第一平台上调试并修复程序。可以基于异常变量的类型,相应的修改程序,并在第一平台上对修改的程序进行调试,得到修复后的程序,其中,调试可以采用对程序进行断点调试的方式,也可以采用其它调试方式,本公开对此不做限定。再次在第一平台上运行修复后的程序,可得到与修复后的程序对应的预定结果,且运行过程中不再出现异常。
从图7中可以看出,本实施例中的跨平台调试方法可以基于数据表实现跨平台调试,且通过比较程序在不同平台上的执行差异,可快速确定异常点,提高了跨平台调试的效率。
进一步参考图8,作为对上述调试方法的实现,本公开提供了一种调试装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图8所示,本实施例的调试装置800可以包括创建模块801,存储模块802,重启模块803,调试模块804,修复模块805。其中,创建模块801,被配置为响应于程序启动,创建数据表;存储模块802,被配置为在数据表中存储程序运行时的操作记录;重启模块803,被配置为响应于检测到程序运行异常,重新启动程序;调试模块804,被配置为基于数据表中的操作记录,运行并调试重新启动后的程序,确定异常变量;修复模块805,被配置为基于异常变量,修复程序。
在本实施例中,调试装置800:创建模块801,存储模块802,重启模块803,调试模块804和修复模块805的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201-205的相关说明,在此不再赘述。
在本实施例的一些可选实现方式中,存储模块802包括:生成子模块,被配置为基于程序运行时的操作步骤,生成对应的多条操作记录,其中,操作记录包括操作时间、操作标识、函数名称和关键变量;存储操作记录子模块,被配置为将多条操作记录存储到数据表中。
在本实施例的一些可选实现方式中,调试模块804包括:第一确定子模块,被配置为确定操作回退步数,操作回退步数小于等于程序运行异常前的操作步骤数;第二确定子模块,被配置为基于操作回退步数从多条操作记录中确定出待执行的操作记录;添加子模块,被配置为在待执行的操作记录中添加日志信息输出指令;运行子模块,被配置为基于待执行的操作记录和日志信息输出指令,运行重新启动后的程序并输出日志信息,日志信息包括运行重新启动后的程序产生的函数名称和关键变量;比较子模块,被配置为将待执行的操作记录中的函数名称和关键变量,与日志信息中的函数名称和关键变量进行比较,得到异常变量。
在本实施例的一些可选实现方式中,数据表包括一个操作数据表和至少一个功能数据表,操作记录还包括功能标识;存储操作记录子模块包括:第一存储单元,被配置为将操作记录中的操作时间、操作标识和功能标识作为第一子操作记录,存储在操作数据表中;第二存储单元,被配置为将操作记录中的操作标识、函数名称和关键变量作为第二子操作记录,存储在功能标识对应的功能数据表中。
在本实施例的一些可选实现方式中,第二确定子模块包括:第一确定单元,被配置为基于操作回退步数,从操作数据表中确定出待执行的第一子操作记录;第二确定单元,被配置为基于待执行的第一子操作记录中的功能标识,从至少一个功能数据表中确定出目标功能数据表;第三确定单元,被配置为基于待执行的第一子操作记录中的操作标识,从目标功能数据表中确定出待执行的第二子操作记录;第四确定单元,被配置为基于操作标识,将待执行的第一子操作记录和对应的待执行的第二子操作记录确定为待执行的操作记录。
在本实施例的一些可选实现方式中,运行子模块包括:第五确定单元,被配置为基于待执行的操作记录中的函数名称和关键变量,确定待运行的目标操作步骤;第六确定单元,被配置为基于待执行的操作记录中的操作时间,得到目标操作步骤的执行顺序;第七确定单元,被配置为基于日志信息输出指令在待执行的操作记录中的添加位置,确定输出日志信息的时间节点;输出单元,被配置为运行重新启动后的程序,按照执行顺序依次执行目标操作步骤,并基于时间节点输出日志信息。
进一步参考图9,作为对上述调试的实现,本公开提供了一种跨平台调试装置的一个实施例,该装置实施例与图7所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图9所示,本实施例的跨平台调试装置900可以包括第一运行模块901,运行异常模块902,第二运行模块903,比较模块904,调试修复模块905。其中,第一运行模块901,被配置为响应于程序在第一平台运行,创建第一数据表,将程序在第一平台运行时的操作记录存储到第一数据表中;运行异常模块902,被配置为响应于程序在第一平台运行时发生异常,在第二平台加载第一数据表,创建第二数据表;第二运行模块903,被配置为基于第一数据表中的操作记录,在第二平台运行程序,将程序在第二平台运行时的操作记录存储到第二数据表中;比较模块904,被配置为将第一数据表与第二数据表进行比较,确定异常变量;调试修复模块905,被配置为基于异常变量,在第一平台上调试并修复程序。
在本实施例中,跨平台调试装置900:第一运行模块901,运行异常模块902,第二运行模块903,比较模块904和调试修复模块905的具体处理及其所带来的技术效果可分别参考图7对应实施例中的步骤701-705的相关说明,在此不再赘述。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图10示出了可以用来实施本公开的实施例的示例电子设备1000的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,设备1000包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如调试方法或跨平台调试方法。例如,在一些实施例中,调试方法或跨平台调试方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM 1003并由计算单元1001执行时,可以执行上文描述的调试方法或跨平台调试方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行调试方法或跨平台调试方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (14)

1.一种调试方法,所述方法包括:
响应于程序启动,创建数据表;所述数据表包括一个操作数据表和至少一个功能数据表;
基于程序运行时的操作步骤及每一个所述操作步骤的执行顺序,在所述数据表中存储程序运行时的操作记录;其中,所述操作记录包括存储至所述操作数据表中的第一子操作记录、存储至所述功能数据表中的第二子操作记录;
响应于检测到程序运行异常,重新启动所述程序;
确定程序运行开始出现异常时的操作步骤,并根据所述程序运行开始出现异常时的操作步骤确定操作回退步数,所述操作回退步数小于等于所述程序运行异常前的操作步骤数;基于所述操作回退步数从所述数据表中的操作记录中确定出待执行的第一子操作记录和对应的待执行的第二子操作记录,并将所述待执行的第一子操作记录和对应的所述待执行的第二子操作记录确定为待执行的操作记录;在所述待执行的操作记录中添加日志信息输出指令;基于所述待执行的操作记录和所述日志信息输出指令,运行所述重新启动后的程序并输出日志信息,所述日志信息包括运行所述重新启动后的程序产生的函数名称和关键变量;将所述待执行的操作记录中的函数名称和关键变量,与所述日志信息中的函数名称和关键变量进行比较,得到异常变量;
基于所述异常变量,修复所述程序。
2.根据权利要求1所述的方法,其中,所述在所述数据表中存储程序运行时的操作记录包括:
基于所述程序运行时的操作步骤,生成对应的多条操作记录,其中,所述操作记录包括操作时间、操作标识、函数名称和关键变量;
将所述多条操作记录存储到所述数据表中。
3.根据权利要求2所述的方法,其中,所述操作记录还包括功能标识;
所述将所述多条操作记录存储到所述数据表中包括:
将所述操作记录中的操作时间、操作标识和功能标识作为第一子操作记录,存储在所述操作数据表中;
将所述操作记录中的操作标识、函数名称和关键变量作为第二子操作记录,存储在所述功能标识对应的功能数据表中。
4.根据权利要求3所述的方法,其中,所述基于所述操作回退步数从所述数据表中的操作记录中确定出待执行的第一子操作记录和对应的待执行的第二子操作记录,并将所述第一子操作记录和对应的所述第二子操作记录确定为待执行的操作记录包括:
基于所述操作回退步数,从所述操作数据表中确定出待执行的第一子操作记录;
基于所述待执行的第一子操作记录中的功能标识,从所述至少一个功能数据表中确定出目标功能数据表;
基于所述待执行的第一子操作记录中的操作标识,从所述目标功能数据表中确定出待执行的第二子操作记录;
基于所述操作标识,将所述待执行的第一子操作记录和对应的所述待执行的第二子操作记录确定为所述待执行的操作记录。
5.根据权利要求3-4任一项所述的方法,其中,所述基于所述待执行的操作记录和所述日志信息输出指令,运行所述重新启动后的程序并输出日志信息包括:
基于所述待执行的操作记录中的函数名称和关键变量,确定待运行的目标操作步骤;
基于所述待执行的操作记录中的操作时间,得到所述目标操作步骤的执行顺序;
基于所述日志信息输出指令在所述待执行的操作记录中的添加位置,确定输出日志信息的时间节点;
运行所述重新启动后的程序,按照所述执行顺序依次执行所述目标操作步骤,并基于所述时间节点输出日志信息。
6.一种跨平台调试方法,应用于权利要求1-5任一项所述的方法中,所述方法包括:
响应于程序在第一平台运行,创建第一数据表,将所述程序在所述第一平台运行时的操作记录存储到所述第一数据表中;
响应于所述程序在所述第一平台运行时发生异常,在第二平台加载所述第一数据表,创建第二数据表;
基于所述第一数据表中的所述操作记录,在所述第二平台运行所述程序,将所述程序在所述第二平台运行时的操作记录存储到所述第二数据表中;
将所述第一数据表与所述第二数据表进行比较,确定异常变量;
基于所述异常变量,在所述第一平台上调试并修复所述程序。
7.一种调试装置,所述装置包括:
创建模块,被配置为响应于程序启动,创建数据表;所述数据表包括一个操作数据表和至少一个功能数据表;
存储模块,被配置为基于程序运行时的操作步骤及每一个所述操作步骤的执行顺序,在所述数据表中存储程序运行时的操作记录;其中,所述操作记录包括存储至所述操作数据表中的第一子操作记录、存储至所述功能数据表中的第二子操作记录;
重启模块,被配置为响应于检测到程序运行异常,重新启动所述程序;
调试模块,被配置为确定程序运行开始出现异常时的操作步骤,并根据所述程序运行开始出现异常时的操作步骤确定操作回退步数,所述操作回退步数小于等于所述程序运行异常前的操作步骤数;基于所述操作回退步数从所述数据表中的操作记录中确定出待执行的第一子操作记录和对应的待执行的第二子操作记录,并将所述待执行的第一子操作记录和对应的所述待执行的第二子操作记录确定为待执行的操作记录;在所述待执行的操作记录中添加日志信息输出指令;基于所述待执行的操作记录和所述日志信息输出指令,运行所述重新启动后的程序并输出日志信息,所述日志信息包括运行所述重新启动后的程序产生的函数名称和关键变量;将所述待执行的操作记录中的函数名称和关键变量,与所述日志信息中的函数名称和关键变量进行比较,得到异常变量;
修复模块,被配置为基于所述异常变量,修复所述程序。
8.根据权利要求7所述的装置,其中,所述存储模块包括:
生成子模块,被配置为基于所述程序运行时的操作步骤,生成对应的多条操作记录,其中,所述操作记录包括操作时间、操作标识、函数名称和关键变量;
存储操作记录子模块,被配置为将所述多条操作记录存储到所述数据表中。
9.根据权利要求8所述的装置,其中,所述操作记录还包括功能标识;
所述存储操作记录子模块包括:
第一存储单元,被配置为将所述操作记录中的操作时间、操作标识和功能标识作为第一子操作记录,存储在所述操作数据表中;
第二存储单元,被配置为将所述操作记录中的操作标识、函数名称和关键变量作为第二子操作记录,存储在所述功能标识对应的功能数据表中。
10.根据权利要求9所述的装置,其中,所述调试模块包括:
第一确定单元,被配置为基于所述操作回退步数,从所述操作数据表中确定出待执行的第一子操作记录;
第二确定单元,被配置为基于所述待执行的第一子操作记录中的功能标识,从所述至少一个功能数据表中确定出目标功能数据表;
第三确定单元,被配置为基于所述待执行的第一子操作记录中的操作标识,从所述目标功能数据表中确定出待执行的第二子操作记录;
第四确定单元,被配置为基于所述操作标识,将所述待执行的第一子操作记录和对应的所述待执行的第二子操作记录确定为所述待执行的操作记录。
11.根 据权利要求9-10任一项所述的装置,其中,所述调试模块还包括:
第五确定单元,被配置为基于所述待执行的操作记录中的函数名称和关键变量,确定待运行的目标操作步骤;
第六确定单元,被配置为基于所述待执行的操作记录中的操作时间,得到所述目标操作步骤的执行顺序;
第七确定单元,被配置为基于所述日志信息输出指令在所述待执行的操作记录中的添加位置,确定输出日志信息的时间节点;
输出单元,被配置为运行所述重新启动后的程序,按照所述执行顺序依次执行所述目标操作步骤,并基于所述时间节点输出日志信息。
12.一种跨平台调试装置,被配置为执行权利要求6所述的方法,所述装置包括:
第一运行模块,被配置为响应于程序在第一平台运行,创建第一数据表,将所述程序在所述第一平台运行时的操作记录存储到所述第一数据表中;
运行异常模块,被配置为响应于所述程序在所述第一平台运行时发生异常,在第二平台加载所述第一数据表,创建第二数据表;
第二运行模块,被配置为基于所述第一数据表中的所述操作记录,在所述第二平台运行所述程序,将所述程序在所述第二平台运行时的操作记录存储到所述第二数据表中;
比较模块,被配置为将所述第一数据表与所述第二数据表进行比较,确定异常变量;
调试修复模块,被配置为基于所述异常变量,在所述第一平台上调试并修复所述程序。
13.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-6任一项所述的方法。
CN202110928528.5A 2021-08-13 2021-08-13 调试方法、装置、设备、存储介质以及计算机程序产品 Active CN113626332B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110928528.5A CN113626332B (zh) 2021-08-13 2021-08-13 调试方法、装置、设备、存储介质以及计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110928528.5A CN113626332B (zh) 2021-08-13 2021-08-13 调试方法、装置、设备、存储介质以及计算机程序产品

Publications (2)

Publication Number Publication Date
CN113626332A CN113626332A (zh) 2021-11-09
CN113626332B true CN113626332B (zh) 2023-03-10

Family

ID=78385065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110928528.5A Active CN113626332B (zh) 2021-08-13 2021-08-13 调试方法、装置、设备、存储介质以及计算机程序产品

Country Status (1)

Country Link
CN (1) CN113626332B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844412A (zh) * 2016-09-19 2018-03-27 东华软件股份公司 用于程序调试的方法和装置
CN108654088A (zh) * 2018-04-13 2018-10-16 腾讯科技(深圳)有限公司 程序调试方法和装置、存储介质及电子装置
CN109614257A (zh) * 2018-10-23 2019-04-12 平安科技(深圳)有限公司 程序异常的处理方法、装置、计算机存储介质及电子设备
CN110990842A (zh) * 2019-12-19 2020-04-10 上海米哈游网络科技股份有限公司 一种小概率事件的复现方法、装置、存储介质及电子设备
CN112835794A (zh) * 2021-01-29 2021-05-25 成都环宇知了科技有限公司 一种基于Swoole的代码执行问题的定位监测方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104794059B (zh) * 2015-05-08 2017-08-04 北京理工大学 一种基于函数调用记录的缺陷定位方法及装置
US10521329B2 (en) * 2015-05-08 2019-12-31 Intergral GmbH Debugging system
CN107665167B (zh) * 2016-07-28 2021-04-09 华为技术有限公司 程序调试方法、装置及程序开发设备
US10817406B2 (en) * 2018-03-30 2020-10-27 Ab Initio Technology Llc Debugging an executable control flow graph that specifies control flow
CN110990253A (zh) * 2019-10-24 2020-04-10 苏州浪潮智能科技有限公司 一种实现应用调试的方法、装置、计算机存储介质及终端
CN111061644B (zh) * 2019-12-25 2021-04-30 南京大学 一种检测并定位异常抛出处理缺陷的方法和装置
CN112650658A (zh) * 2020-12-18 2021-04-13 平安普惠企业管理有限公司 应用程序的异常记录和复现方法、装置及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844412A (zh) * 2016-09-19 2018-03-27 东华软件股份公司 用于程序调试的方法和装置
CN108654088A (zh) * 2018-04-13 2018-10-16 腾讯科技(深圳)有限公司 程序调试方法和装置、存储介质及电子装置
CN109614257A (zh) * 2018-10-23 2019-04-12 平安科技(深圳)有限公司 程序异常的处理方法、装置、计算机存储介质及电子设备
CN110990842A (zh) * 2019-12-19 2020-04-10 上海米哈游网络科技股份有限公司 一种小概率事件的复现方法、装置、存储介质及电子设备
CN112835794A (zh) * 2021-01-29 2021-05-25 成都环宇知了科技有限公司 一种基于Swoole的代码执行问题的定位监测方法及系统

Also Published As

Publication number Publication date
CN113626332A (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
US9256517B1 (en) Display of aggregated stack traces in a source code viewer
WO2019161619A1 (zh) 接口自动化测试方法、装置、设备及计算机可读存储介质
US9454467B2 (en) Method and apparatus for mining test coverage data
US10452515B2 (en) Automated root cause detection using data flow analysis
CN112231403B (zh) 数据同步的一致性校验方法、装置、设备和存储介质
CN110673936A (zh) 编排业务的断点续作方法、装置、存储介质及电子设备
EP3734460A1 (en) Probabilistic software testing via dynamic graphs
CN113778849A (zh) 用于测试代码的方法、装置、设备以及存储介质
CN113626332B (zh) 调试方法、装置、设备、存储介质以及计算机程序产品
US20230101154A1 (en) Resumable instruction generation
CN112100070A (zh) 版本缺陷的检测方法、装置、服务器及存储介质
CN111240971A (zh) 风控规则测试用例的生成方法、装置、服务器和存储介质
CN115328891A (zh) 数据迁移方法、装置、存储介质及电子设备
US20180373512A1 (en) Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal
CN115757099A (zh) 平台固件保护恢复功能自动测试方法和装置
US20090077537A1 (en) method of automatically generating test cases to test command line interfaces
WO2023009062A1 (en) Device and method for re-executing of test cases in software application
CN113760765B (zh) 代码测试方法、装置、电子设备和存储介质
US10102109B2 (en) Exception resolution in a software development session
CN110968519A (zh) 一种游戏测试方法、装置、服务器及存储介质
JP7393404B2 (ja) コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム
CN117435503A (zh) 测试工具的生成方法、测试方法、装置、设备及介质
US20230262135A1 (en) Service deployment processing method and apparatus, electronic device, and storage medium
CN118035210A (zh) 数据库的数据字典管理方法、存储介质、设备及产品
CN116302086A (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