CN112181853A - 程序调试方法、装置及系统 - Google Patents
程序调试方法、装置及系统 Download PDFInfo
- Publication number
- CN112181853A CN112181853A CN202011172303.3A CN202011172303A CN112181853A CN 112181853 A CN112181853 A CN 112181853A CN 202011172303 A CN202011172303 A CN 202011172303A CN 112181853 A CN112181853 A CN 112181853A
- Authority
- CN
- China
- Prior art keywords
- snapshot
- memory
- code
- program
- breakpoint
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000006870 function Effects 0.000 claims description 18
- 238000004891 communication Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 101100202589 Drosophila melanogaster scrib gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer 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
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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
- G06F11/3644—Software debugging by instrumenting at runtime
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示出了本申请实施例1提供的程序调试方法流程图;
图2示出了本申请实施例2提供的程序调试装置结构图;
图3示出了本申请实施例3提供的计算机系统结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
如背景技术所述,传统方法需要按步骤调试,不能直接定位到指定的代码片段进行执行,且一旦越过指定的代码片段不能回退,需要再次从头开始执行,对于循环、递归等多次重复执行的代码,无法直接定位具体某次执行代码过程中存在的问题,将会耗费大量时间。
为此本申请提出一种程序调试方法,用户可以任意选中一个待调试代码片段,获取用户选中的待调试代码片段在程序代码中的位置信息;根据所述位置信息,在程序代码中查找待调试代码片段,将所述待调试代码片段标记为断点;查找位于所述断点之前的一个预设的快照点,从预先保存的执行记录队列中读取所述快照点对应的快照,所述快照包括内存信息;将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,返回内存信息,可以直接从标记的断点最近的快照点开始执行代码,而不需要从头开始程序代码,实现快速对指定的代码片段进行调试,减少了程序调试时间。
实施例1
本申请实施例提供一种程序调试方法,以该方法应用于程序调试装置中来举例说明,该装置可以被配置于任一计算机设备中,以使该计算机设备可以执行程序调试方法。
如图1所示,上述方法包括:
S11、获取用户选中的待调试代码片段在程序代码中的位置信息;
用户可以任意选择想要调试的代码片段,每段代码片段都有开始和结束的位置信息,当用户在屏幕上选中待调试代码片段,只能获取到待调试代码片段在程序代码中的位置信息,而不知道用户选中的待调试代码片段是什么。
S12、根据所述位置信息,在程序代码中查找待调试代码片段,将所述待调试代码片段标记为断点;
根据位置信息,再在程序代码中查找待调试代码片段,将待调试代码片段标记为断点。
S13、查找位于所述断点之前的一个预设的快照点,从预先保存的执行记录队列中读取所述快照点对应的快照,所述快照包括内存信息;
程序代码中会预设有很多快照点,每个快照点都有对应的快照,快照包括程序代码运行到快照点时的内存信息,查找位于断点之前的一个快照点,读取快照点对应的快照。
S14、将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,返回内存信息。
将快照恢复到内存中,即将内存信息恢复到内存中,从快照点开始执行代码,运行到所述断点处,而不需要再从头开始运行程序代码,实现快速对指定的代码片段进行调试,减少了程序调试时间。
示例性的,程序代码中的一段代码如下:
//开始执行时构建新的环境Stack s1=new Stack(root);
varx=random(100);
vart=x;
if(x>50){//新的代码段,构建新的环境Stack s2=new Stack(s1),在新的环境下执行
用户在电脑屏幕上可以选中t++,假设t++的位置信息是400,获取用户选中的t++的位置信息400,在程序代码中查找位置信息是400的代码片段,就可以在程序代码中找到t++,将t++标记为断点,再查找距离t++最近的快照点,读取快照点对应的快照,将快照恢复到内存中,从快照点开始执行代码,运行到所述t++。
所述预先保存的执行记录队列通过以下方式获得:
在所述程序代码首次运行过程中,保存运行到预设的快照点处内存的快照;
当执行到调用结果不固定的函数或外部链接的代码片段时,将调用到的数据作为执行数据保存;
将快照、执行数据和系统上下文按次序保存为执行记录队列。
程序代码首次运行时,记录整个执行过程中的信息,保存运行到预设的快照点处内存的快照,保存内存信息,为了保证对程序代码调试时调用到的数据与首次执行调用到的数据一致,在首次执行到调用结果不固定的函数或外部链接的代码片段时,保存调用到的数据作为执行数据,将程序代码首次运行时的快照、执行数据和系统上下文按次序保存为执行记录队列。
所述方法中的将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处包括:
将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,中途若遇到调用结果不固定的函数或外部链接的代码片段时,不执行所述代码片段,从预先保存的执行记录队列中获取对应的执行数据使用。
为了保证对程序代码调试时调用到的数据与首次执行调用到的数据一致,在对程序调试时,若遇到调用结果不固定的函数或外部链接的代码片段,不执行代码片段,而是直接从执行记录队列中获取对应的执行数据使用。
所述方法还包括:
接收定位条件,在执行代码的过程中,判断内存中的数据和系统上下文是否满足定位条件,若满足定位条件,将满足所述定位条件时的内存信息返回。
代码片段多次执行时,例如代码片段循环执行了50次,很难对具体的某一次执行进行分析,通过设置定位条件,比如i=30,来对代码片段第30次执行进行分析,当对程序代码进行调试时,选中断点后,从断点最近的快照点进行运行,实时监测内存中的数据是否满足定位条件,如果运行过程中遇到内存中i=30,且系统当前上下文与定位条件中系统上下文一致,则说明内存中的数据和系统上下文满足定位条件,将满足定位条件时的内存信息返回,实现对代码片段第30次执行进行分析。
实施例2
对应上述方法,本申请实施例提供一种程序调试装置,如图2所示,所述装置包括:
获取单元21,用于获取用户选中的待调试代码片段在程序代码中的位置信息;
用户可以任意选择想要调试的代码片段,每段代码片段都有开始和结束的位置信息,当用户在屏幕上选中待调试代码片段,获取单元21只能获取到待调试代码片段在程序代码中的位置信息,而不知道用户选中的待调试代码片段是什么。
断点标记单元22,用于根据所述位置信息,在程序代码中查找待调试代码片段,将所述待调试代码片段标记为断点;
读取单元23,用于查找位于所述断点之前的一个预设的快照点,从预先保存的执行记录队列中读取所述快照点对应的快照,所述快照包括内存信息;
程序代码中会预设有很多快照点,每个快照点都有对应的快照,快照包括程序代码运行到快照点时的内存信息,读取单元23查找位于断点之前的一个快照点,读取快照点对应的快照。
返回单元24,用于将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,返回内存信息。
返回单元24将快照恢复到内存中,即将内存信息恢复到内存中,从快照点开始执行代码,运行到所述断点处,而不需要再从头开始运行程序代码,实现快速对指定的代码片段进行调试,减少了程序调试时间。
所述预先保存的执行记录队列通过以下方式获得:
在所述程序代码首次运行过程中,保存运行到预设的快照点处内存的快照;
当执行到调用结果不固定的函数或外部链接的代码片段时,将调用到的数据作为执行数据保存;
将快照、执行数据和系统上下文按次序保存为执行记录队列。
程序代码首次运行时,记录整个执行过程中的信息,保存运行到预设的快照点处内存的快照,保存内存信息,为了保证对程序代码调试时调用到的数据与首次执行调用到的数据一致,在首次执行到调用结果不固定的函数或外部链接的代码片段时,保存调用到的数据作为执行数据,将程序代码首次运行时的快照、执行数据和系统上下文按次序保存为执行记录队列。
所述返回单元具体用于:
将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,中途若遇到调用结果不固定的函数或外部链接的代码片段时,不执行所述代码片段,从预先保存的执行记录队列中获取对应的执行数据使用。
为了保证对程序代码调试时调用到的数据与首次执行调用到的数据一致,在对程序调试时,若遇到调用结果不固定的函数或外部链接的代码片段,不执行代码片段,而是直接从执行记录队列中获取对应的执行数据使用。
所述装置还包括:
定位单元,用于接收定位条件,在执行代码的过程中,判断内存中的数据和系统上下文是否满足定位条件,若满足定位条件,将满足所述定位条件时的内存信息返回。
定位单元仅用于循环或者递归中的代码片段,在代码片段多次执行时,通过条件对其中某次循环做定位,例如代码片段循环执行了50次,很难对具体的某一次执行进行分析,通过设置定位条件,比如i=30,来对代码片段第30次执行进行分析,当对程序代码进行调试时,选中断点后,从断点最近的快照点进行运行,实时监测内存中的数据是否满足定位条件,如果运行过程中遇到内存中i=30,且系统当前上下文与定位条件中系统上下文一致,则说明内存中的数据和系统上下文满足定位条件,将满足定位条件时的内存信息返回,实现对代码片段第30次执行进行分析。
本申请实施例提供一种程序调试装置,与本申请实施例所提供的程序调试方法属于同一申请构思,可执行本申请实施例所提供的程序调试方法,具备执行程序调试方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例提供的程序调试方法,此处不再加以赘述。
实施例3
对应上述方法和装置,本申请实施例3提供一种计算机系统,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行实施例一的方法步骤,如执行以下操作:
获取用户选中的待调试代码片段在程序代码中的位置信息;
根据所述位置信息,在程序代码中查找待调试代码片段,将所述待调试代码片段标记为断点;
查找位于所述断点之前的一个预设的快照点,从预先保存的执行记录队列中读取所述快照点对应的快照,所述快照包括内存信息;
将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,返回内存信息。
其中,图3示例性的展示出了计算机系统的架构,具体可以包括处理器1510,视频显示适配器1511,磁盘驱动器1512,输入/输出接口1513,网络接口1514,以及存储器1520。上述处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520之间可以通过通信总线1530进行通信连接。
其中,处理器1510可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器1520可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1520可以存储用于控制计算机系统1500运行的操作系统1521,用于控制计算机系统1500的低级别操作的基本输入输出系统(BIOS)1522。另外,还可以存储网页浏览器1523,数据存储管理1524,以及图标字体处理系统1525等等。上述图标字体处理系统1525就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器1520中,并由处理器1510来调用执行。
输入/输出接口1513用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口1514用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1530包括一通路,在设备的各个组件(例如处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520)之间传输信息。
另外,该计算机系统1500还可以从虚拟资源对象领取条件信息数据库1541中获得具体领取条件的信息,以用于进行条件判断,等等。
需要说明的是,尽管上述设备仅示出了处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,存储器1520,总线1530等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,云服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的程序调试方法、装置及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种程序调试方法,其特征在于,所述方法包括:
获取用户选中的待调试代码片段在程序代码中的位置信息;
根据所述位置信息,在程序代码中查找待调试代码片段,将所述待调试代码片段标记为断点;
查找位于所述断点之前的一个预设的快照点,从预先保存的执行记录队列中读取所述快照点对应的快照,所述快照包括内存信息;
将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,返回内存信息。
2.如权利要求1所述的程序调试方法,其特征在于,所述预先保存的执行记录队列通过以下方式获得:
在所述程序代码首次运行过程中,保存运行到预设的快照点处内存的快照;
当执行到调用结果不固定的函数或外部链接的代码片段时,将调用到的数据作为执行数据保存;
将快照、执行数据和系统上下文按次序保存为执行记录队列。
3.如权利要求2所述的程序调试方法,其特征在于,所述方法中的将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处包括:
将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,中途若遇到调用结果不固定的函数或外部链接的代码片段时,不执行所述代码片段,从预先保存的执行记录队列中获取对应的执行数据使用。
4.如权利要求1所述的程序调试方法,其特征在于,所述方法还包括:
接收定位条件,在执行代码的过程中,判断内存中的数据和系统上下文是否满足定位条件,若满足定位条件,将满足所述定位条件时的内存信息返回。
5.一种程序调试装置,其特征在于,所述装置包括:
获取单元,用于获取用户选中的待调试代码片段在程序代码中的位置信息;
断点标记单元,用于根据所述位置信息,在程序代码中查找待调试代码片段,将所述待调试代码片段标记为断点;
读取单元,用于查找位于所述断点之前的一个预设的快照点,从预先保存的执行记录队列中读取所述快照点对应的快照,所述快照包括内存信息;
返回单元,用于将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,返回内存信息。
6.如权利要求5所述的程序调试装置,其特征在于,所述预先保存的执行记录队列通过以下方式获得:
在所述程序代码首次运行过程中,保存运行到预设的快照点处内存的快照;
当执行到调用结果不固定的函数或外部链接的代码片段时,将调用到的数据作为执行数据保存;
将快照、执行数据和系统上下文按次序保存为执行记录队列。
7.如权利要求6所述的程序调试装置,其特征在于,所述返回单元具体用于:
将所述快照恢复到内存中,从所述快照点开始执行代码,运行到所述断点处,中途若遇到调用结果不固定的函数或外部链接的代码片段时,不执行所述代码片段,从预先保存的执行记录队列中获取对应的执行数据使用。
8.如权利要求5所述的程序调试装置,其特征在于,所述装置还包括:
定位单元,用于接收定位条件,在执行代码的过程中,判断内存中的数据和系统上下文是否满足定位条件,若满足定位条件,将满足所述定位条件时的内存信息返回。
9.一种计算机系统,其特征在于,所述系统包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011172303.3A CN112181853A (zh) | 2020-10-28 | 2020-10-28 | 程序调试方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011172303.3A CN112181853A (zh) | 2020-10-28 | 2020-10-28 | 程序调试方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112181853A true CN112181853A (zh) | 2021-01-05 |
Family
ID=73922205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011172303.3A Pending CN112181853A (zh) | 2020-10-28 | 2020-10-28 | 程序调试方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181853A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792523A (zh) * | 2021-09-14 | 2021-12-14 | 北京爱芯科技有限公司 | 一种仿真调试方法、装置、计算设备以及计算机存储介质 |
CN114546822A (zh) * | 2021-12-27 | 2022-05-27 | 芯华章科技股份有限公司 | 测试设计的方法、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461876A (zh) * | 2014-11-26 | 2015-03-25 | 北京航空航天大学 | 一种基于运行快照序列的并行程序重现调试方法 |
WO2015079291A1 (en) * | 2013-11-29 | 2015-06-04 | Freescale Semiconductor, Inc. | Code injection for conditional breakpoints |
CN105138459A (zh) * | 2015-09-11 | 2015-12-09 | 北京金山安全软件有限公司 | 一种对软件程序进行测试的方法及装置 |
-
2020
- 2020-10-28 CN CN202011172303.3A patent/CN112181853A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015079291A1 (en) * | 2013-11-29 | 2015-06-04 | Freescale Semiconductor, Inc. | Code injection for conditional breakpoints |
CN104461876A (zh) * | 2014-11-26 | 2015-03-25 | 北京航空航天大学 | 一种基于运行快照序列的并行程序重现调试方法 |
CN105138459A (zh) * | 2015-09-11 | 2015-12-09 | 北京金山安全软件有限公司 | 一种对软件程序进行测试的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792523A (zh) * | 2021-09-14 | 2021-12-14 | 北京爱芯科技有限公司 | 一种仿真调试方法、装置、计算设备以及计算机存储介质 |
CN114546822A (zh) * | 2021-12-27 | 2022-05-27 | 芯华章科技股份有限公司 | 测试设计的方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111552627A (zh) | 用户界面测试方法、装置、存储介质及计算机设备 | |
CN110457211B (zh) | 脚本性能测试方法、装置和设备及计算机存储介质 | |
Lin et al. | Improving the accuracy of automated GUI testing for embedded systems | |
CN112181853A (zh) | 程序调试方法、装置及系统 | |
CN115357515B (zh) | 一种多核系统的调试方法、装置、计算机设备及存储介质 | |
CN111857854A (zh) | 关机资源加载方法、装置、存储介质和电子设备 | |
CN112256560A (zh) | 应用程序测试方法、装置及电子设备 | |
CN115656788B (zh) | 一种芯片测试系统、方法、设备及存储介质 | |
CN116107879A (zh) | 一种软ac性能测试方法及系统 | |
CN115481025A (zh) | 自动化测试的脚本录制方法、装置、计算机设备及介质 | |
CN112395194B (zh) | 一种接入测试平台的方法和装置 | |
CN110866492B (zh) | 一种基线分支的识别方法、装置及计算机系统 | |
CN110347577B (zh) | 一种页面测试方法、装置及其设备 | |
CN113608939A (zh) | 性能测试中服务器启动计时方法、装置、终端及存储介质 | |
CN113094052A (zh) | 应用构建方法、装置、计算机设备和存储介质 | |
CN114968751A (zh) | 一种无代码开发平台的程序调试方法和程序调试装置 | |
CN111722886A (zh) | 工具启动方法、装置、计算机设备及计算机可读存储介质 | |
CN113760696A (zh) | 一种程序问题定位方法、装置、电子设备和存储介质 | |
CN110851332A (zh) | 一种日志文件的处理方法、装置、设备和介质 | |
CN114327682B (zh) | WebView白屏检测方法、系统、电子设备和存储介质 | |
CN111190725A (zh) | 任务处理方法、装置、存储介质及服务器 | |
CN111522737B (zh) | 一种前端界面的自动化测试校验方法、装置及存储介质 | |
CN117573561B (zh) | 一种自动化测试系统、方法、电子设备和存储介质 | |
CN112035425B (zh) | 一种日志的存储方法、装置及计算机系统 | |
CN113836037B (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 |