CN114356662A - 逆向调试内存备份方法、电子设备和介质 - Google Patents

逆向调试内存备份方法、电子设备和介质 Download PDF

Info

Publication number
CN114356662A
CN114356662A CN202210279881.XA CN202210279881A CN114356662A CN 114356662 A CN114356662 A CN 114356662A CN 202210279881 A CN202210279881 A CN 202210279881A CN 114356662 A CN114356662 A CN 114356662A
Authority
CN
China
Prior art keywords
backup
point
memory
backup point
preset
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.)
Withdrawn
Application number
CN202210279881.XA
Other languages
English (en)
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 Yunshu Innovation Software Technology Co ltd
Shanghai Hejian Industrial Software Group Co Ltd
Original Assignee
Beijing Yunshu Innovation Software Technology Co ltd
Shanghai Hejian Industrial Software Group 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 Yunshu Innovation Software Technology Co ltd, Shanghai Hejian Industrial Software Group Co Ltd filed Critical Beijing Yunshu Innovation Software Technology Co ltd
Priority to CN202210279881.XA priority Critical patent/CN114356662A/zh
Publication of CN114356662A publication Critical patent/CN114356662A/zh
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种逆向调试内存备份方法、电子设备和介质,步骤S1、初始化ST1等于ST2,从起始点开始,每间隔ST1创建一个备份点信息,当G等于N时,执行步骤S2;步骤S2、设置ST1=ST1*n;步骤S3、判断当前时刻是否存在与上一备份点的时间间隔小于ST1的第一候选备份点,若存在,则执行步骤S4,若不存在,则返回步骤S2;步骤S4、若只存在一个第一候选备份点,则将该第一候选备份点信息删除;若存在多个第一候选备份点,则将距离当前时刻最远的第一候选备份点信息删除;步骤S5、在距离当前最新创建的备份点之后ST1处创建下一备份点信息,返回步骤S3。本发明通过在合理数量的范围内在动态设置备份点,提高了逆向调试性能。

Description

逆向调试内存备份方法、电子设备和介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种逆向调试内存备份方法、电子设备和介质。
背景技术
逆向调试(Reverse debug)指的是让程序逆向执行来进行调试。由于程序只能向前执行,因此要实现逆向执行,需要在程序运行的某一时刻设置一个备份点(checkpoint)来备份当前时刻程序的内存。当需要逆向执行程序时,将程序恢复到最近的目标检测点最近的备份点再向前执行到需要的目标检测点。备份点的数量和生成策略对逆向调试的实现和性能至关重要。备份点数量过多会造成服务器内存溢出,过少无法保证逆向调试的性能。备份点设置的位置如果距离目标检测点过远,也竟无法保证逆向调试的性能。由此可知,如何提供一种能够提高逆向调试性能的内存备份方法,成为亟待解决的技术问题。
发明内容
本发明目的在于,提供一种逆向调试内存备份方法、电子设备和介质,通过在合理数量的范围内在动态设置备份点,提高了逆向调试性能。
根据本发明第一方面,提供了一种逆向调试内存备份方法,包括:
步骤S1、初始化第一时间步长ST1等于预设的第二时间步长ST2,将预设调试程序的起始点作为起始点,每间隔ST1创建一个备份点信息,所述备份点信息包括备份点对应的时刻,以及备份点对应的时刻所述预设调试程序的内存状态信息,当G等于N时,执行步骤S2,其中,G为当前备份点的数量,N为预设的备份点数量阈值;
步骤S2、设置ST1 = ST1 * n,其中,n为预设的翻倍参数,n为大于等于2的整数;
步骤S3、判断当前时刻是否存在与上一备份点的时间间隔小于ST1的第一候选备份点,若存在,则执行步骤S4,若不存在,则返回执行步骤S2;
步骤S4、若只存在一个第一候选备份点,则将该第一候选备份点信息删除;若存在多个第一候选备份点,则将距离当前时刻最远的第一候选备份点信息删除;
步骤S5、在距离当前最新创建的备份点之后ST1处创建下一备份点信息,返回执行步骤S3。
根据本发明第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明第一方面所述的方法。
根据本发明第三方面,提供一种计算机可读存储介质,所述计算机指令用于执行本发明第一方面所述的方法。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种逆向调试内存备份方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
本发明实使得逆向程序运行中的备份点数量始终维持在N之内,避免服务器内存溢出,且具体的删除备份点的策略和创建备份点的策略,使得当前存在的所有备份点尽可能均衡分布,从而使得基于任何一个目标调试点回调至较远位置的任意一点时,能够保证每一点的逆向调试性能近乎相同,提高了逆向调试的性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本发明实施例一提供的逆向调试内存备份方法流程图;
图2为本发明实施例二提供的逆向调试内存备份方法流程图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种逆向调试内存备份方法、电子设备和介质的具体实施方式及其功效,详细说明如后。
实施例一、
本发明实施例提供了一种逆向调试内存备份方法,如图1所示,包括:
步骤S1、初始化第一时间步长ST1等于预设的第二时间步长ST2,将预设调试程序的起始点作为起始点,每间隔ST1创建一个备份点信息,所述备份点信息包括备份点对应的时刻,以及备份点对应的时刻所述预设调试程序的内存状态信息,当G等于N时,执行步骤S2,其中,G为当前备份点的数量,N为预设的备份点数量阈值;
其中,所述第二时间步长ST2设置为所述预设调试程序在对应的仿真器(simulator)无延时运行完毕所使用的最大步长,例如,仿真器在500ns之内执行完预设调试程序用户感知不到延时,超过500ns用户能够感知到延时,则将第二时间步长ST2设置为500ns,可以理解的是,不同的调试程序对应的第二时间步长ST2可能不同。
步骤S2、设置ST1 = ST1 * n,其中,n为预设的翻倍参数,n为大于等于2的整数;
其中,n的具体数值基于具体应用场景和应用精确度需求等因素综合确定,优选的,n的取值为2。
步骤S3、判断当前时刻是否存在与上一备份点的时间间隔小于ST1的第一候选备份点,若存在,则执行步骤S4,若不存在,则返回执行步骤S2;
需要说明的是,当前距离起始点最近的备份点对应的与上一备份点的时间间隔,指的是当前距离起始点最近的备份点与起始点的时间间隔,可以理解的是,两个备份点之间的时间间隔可以直接基于两个备份点对应的时刻之间的时间差确定。其中,每一备份点与上一备份点的时间间隔是可能存在两种中的至少一个,第一种、备份间隔为当前ST1,第二种、备份间隔为当前ST1/n。当前所有备份点对应的备份时间间隔均等于ST1,此时,则需要返回步骤S2将第一时间步长翻倍。
步骤S4、若只存在一个第一候选备份点,则将该第一候选备份点信息删除;若存在多个第一候选备份点,则将距离当前时刻最远的第一候选备份点信息删除;
步骤S5、在距离当前最新创建的备份点之后ST1处创建下一备份点信息,返回执行步骤S3。
需要说明的是,备份点数量过多会导致运行调试程序的服务器内存溢出,甚至无法正常运行,备份点数量过少又无法保障逆向调试的性能,因此,本发明实施例设置了预设的备份点数量阈值N,使得逆向程序运行中的备份点数量始终维持在N之内,避免服务器内存溢出,且通过设置步骤S1-步骤S5中具体的删除备份点的策略和创建备份点的策略,使得当前存在的所有备份点尽可能均衡分布,从而使得基于任何一个目标调试点回调至较远位置的任意一点时,能够保证每一点的逆向调试性能近乎相同,提高了逆向调试的性能。
备份点数量阈值N可以通过经验值了设定,也可以通过下述实施方式来确定,作为一种实施例,所述方法还包括:
步骤S10、获取服务器空闲内存M、预设调试程序的运行预留内存R、备份点平均占用内存P;
可以理解的是,空闲内存可以是运行预设调试程序初始时刻服务器对应的空闲内存值。预设调试程序的运行预留内存指的是服务器运行预设调试程序预计需要占用的内存。作为一种实施例,所述步骤S10中,获取备份点平均占用内存P包括:
步骤S101、获取所述预设调试程序的初始时刻对应的内存a,运行结束时刻对应的内存b;
步骤S102、基于a和b确定所述备份点平均占用内存P:
P=(a+b)/2。
需要说明的是,运行程序内存占用过程通常呈线性关系,因此可以直接基于步骤S101-步骤S102获取备份点平均占用内存P。
步骤S20、基于M、R、P确定所述预设的备份点数量阈值N:
N = ⌊ (M – R) / P ⌋。
作为一种实施例,所述备份点信息存储在预设的备份列表中,所述备份列表包括备份点id、优先级信息和内存状态信息字段,可以理解的是,当步骤S4中删除备份点时,所述备份列表中该备份点对应的备份点id、优先级信息和内存状态信息字段整条记录均被删除。当步骤S5中新创建一个备份点时,备份列表中会新增一条对应的记录。随着备份点的增加和删除,所述优先级信息动态变化,所述方法还包括:
步骤S30、实时获取当前存在每一备份点与当前存在的上一备份点之间的备份时间间隔,动态更新所述备份列表中每一备份点id对应的优先级信息,所述备份时间间隔的大小与优先级的高低成反比。
所述备份列表可以直接存储在计算机内存中,也可以构建一个数据库,将所述备份列表存储在预设的数据库中。
基于所述备份列表,所述步骤S3包括:
步骤S31、从所述备份列表中获取当前优先级最高的备份点id;
步骤S32、判断当前优先级最高的id对应的备份时间间隔是否小于ST1,若小于,则将前所有优先级最高的备份点确定为第一候选备份点,执行步骤S4,否则,返回执行步骤S2。
作为另一种实施例,也可以将所述备份点信息直接存储在计算机内存中,或者构建一个预设的数据库,直接存储在预设的数据库中,所述步骤S3可包括:
步骤S33、基于当前时刻与上一备份点的时间间隔小于ST1的备份点构建第一候选备份点列表,判断当前第一候选备份点列表是否为空,若不为空,则执行步骤S4,否则,返回执行步骤S2。
当所述第一候选备份点列表为空时,当前所有备份点对应的备份时间间隔均等于ST1
在上述创建和删除备份点的策略下,作为一种实施例,所述方法还包括:
步骤S6、获取目标调试点信息,将当前位于所述目标调试点之前且距离所述目标调试点最近的备份点作为目标备份点;
步骤S7、调取所述目标备份点对应的预设调试程序的内存状态信息,以所述目标备份点为起点执行所述预设调试程序。
其中,目标调试点信息指的是用户输入的需要返回调试的调试点,此时可以停止当前调试程序的执行,直接返回目标备份点,调取对应的预设调试程序的内存状态信息,以目标备份点为起点执行所述预设调试程序,无需重新启动程序,且基于本发明实施例创建和删除备份点的策略,使得N个备份点尽可能均衡的分布在时间轴上,从而保障了逆向调试的性能。
实施例二、
在实际逆向调试的应用场景中,较大概率的情况下,需要逆向调试的点距离当前点为位置较近,例如有80%以上的情况下,需要逆向调试的点会在距离当前时刻的第二时间步长ST2内,有20%的下需要逆向调试的点在超过距离当前时刻的第二时间步长ST2之上,实施例一能够实现N个备份点尽可能均衡分布,但是随着逆向调试程序的运行,第一时间步长ST1不断增大,那么所有备份点之间的时间间隔也会不断增大,此时,如果遇到需要逆向调试的点会在距离当前时刻的第二时间步长ST2内,的场景,则仍需要回溯较长的执行时间,为了适用于需要逆向调试的点会在距离当前时刻的第二时间步长ST2内占比较大的场景,在实施例一的基础上进一步变形,得到实施例二。
实施例二提供了一种逆向调试内存备份方法,如图2所示,包括:
步骤S100、初始化第一时间步长ST1等于预设的第二时间步长ST2,将预设调试程序的起始点作为起始点,每间隔ST1创建一个备份点信息,所述备份点信息包括备份点对应的时刻,以及备份点对应的时刻所述预设调试程序的内存状态信息,当G等于N时,执行步骤S200,其中,G为当前备份点的数量,N为预设的备份点数量阈值;
其中,所述第二时间步长ST2设置为所述预设调试程序在对应的仿真器无延时运行完毕所使用的最大步长,例如,仿真器在500ns之内执行完预设调试程序用户感知不到延时,超过500ns用户能够感知到延时,则将第二时间步长ST2设置为500ns,可以理解的是,不同的调试程序对应的第二时间步长ST2可能不同。
步骤S200、设置ST1 = ST1 * n,其中,n为预设的翻倍参数,n为大于等于2的整数;
其中,n的具体数值基于具体应用场景和应用精确度需求等因素综合确定,优选的,n的取值为2。
步骤S300、判断当前时刻是否存在与上一备份点的时间间隔小于ST1的第一候选备份点,若存在,则执行步骤S400,若不存在,则返回执行步骤S200;
需要说明的是,当前距离起始点最近的备份点对应的与上一备份点的时间间隔,指的是当前距离起始点最近的备份点与起始点的时间间隔,可以理解的是,两个备份点之间的时间间隔可以直接基于两个备份点对应的时刻之间的时间差确定。当前所有备份点对应的备份时间间隔均等于ST1,此时,则需要返回步骤S200将第一时间步长翻倍。由于实施例二中需要始终设置一个与当前点间隔在第二时间步长ST2内的备份点,因此,每一备份点与上一备份点的时间间隔是可能存在三种中的至少一个,第一种、备份间隔为当前ST1,第二种、备份间隔为当前ST1/n,第三种、备份间隔为[ST2,ST1)之间的任和一个能够整除ST2的值。由此可知,与上一备份点的时间间隔小于ST1的第一候选备份点,是可能存在两种备份间隔的,因此步骤S400中需要进一步从第一候选备份点选取第二候选备份点。
步骤S400、将所述第一候选备份点中与上一备份点的时间间隔最小的所有备份点确定为第二候选备份点,若只存在一个第二候选备份点,则将该第二候选备份点信息删除;若存在多个第二候选备份点,则将距离当前时刻最远的第二候选备份点信息删除;
步骤S500、在距离当前最新创建的备份点之后ST2处创建下一备份点信息,返回执行步骤S300。
实施例二使得逆向程序运行中的备份点数量始终维持在N之内,避免服务器内存溢出,且通过设置步骤S100-步骤S500中具体的删除备份点的策略和创建备份点的策略,使得距离当前点在第二时间步长ST2的间隔内时钟存在一个备份点,其他N-1个备份点尽可能均衡分布,从而既能保证需要逆向调试的点会在距离当前时刻的第二时间步长ST2内的目标调试点能快速逆向调试,也能保证距离当前时刻的第二时间步长大于ST2的其他调试的逆向调试性能近乎相同,提高了逆向调试的性能和效率。
需要说明的是,实施例二其他多处技术细节可以参照实施例一中的具体实施细节来实现,在此不再赘述。
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明任意一个实施例所述的方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机指令用于执行本发明任意一个实施例所述的方法。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (8)

1.一种逆向调试内存备份方法,其特征在于,包括:
步骤S1、初始化第一时间步长ST1等于预设的第二时间步长ST2,将预设调试程序的起始点作为起始点,每间隔ST1创建一个备份点信息,所述备份点信息包括备份点对应的时刻,以及备份点对应的时刻所述预设调试程序的内存状态信息,当G等于N时,执行步骤S2,其中,G为当前备份点的数量,N为预设的备份点数量阈值;
步骤S2、设置ST1 = ST1 * n,其中,n为预设的翻倍参数,n为大于等于2的整数;
步骤S3、判断当前时刻是否存在与上一备份点的时间间隔小于ST1的第一候选备份点,若存在,则执行步骤S4,若不存在,则返回执行步骤S2;
步骤S4、若只存在一个第一候选备份点,则将该第一候选备份点信息删除;若存在多个第一候选备份点,则将距离当前时刻最远的第一候选备份点信息删除;
步骤S5、在距离当前最新创建的备份点之后ST1处创建下一备份点信息,返回执行步骤S3。
2.根据权利要求1所述的方法,其特征在于,
所述备份点信息存储在预设的备份列表中,所述备份列表包括备份点id、优先级信息和内存状态信息字段,所述优先级信息动态变化,所述方法还包括:
步骤S30、实时获取当前存在每一备份点与当前存在的上一备份点之间的备份时间间隔,动态更新所述备份列表中每一备份点id对应的优先级信息,所述备份时间间隔的大小与优先级的高低成反比。
3.根据权利要求2所述的方法,其特征在于,
所述步骤S3包括:
步骤S31、从所述备份列表中获取当前优先级最高的备份点id;
步骤S32、判断当前优先级最高的id对应的备份时间间隔是否小于ST1,若小于,则将前所有优先级最高的备份点确定为第一候选备份点,执行步骤S4,否则,返回执行步骤S2。
4.根据权利要求2所述的方法,其特征在于,
所述备份列表存储在计算机内存或预设的数据库中。
5.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
步骤S10、获取服务器空闲内存M、预设调试程序的运行预留内存R、备份点平均占用内存P;
步骤S20、基于M、R、P确定所述预设的备份点数量阈值N:
N = ⌊ (M – R) / P ⌋。
6.根据权利要求5所述的方法,其特征在于,
所述步骤S10中,获取备份点平均占用内存P包括:
步骤S101、获取所述预设调试程序的初始时刻对应的内存a,运行结束时刻对应的内存b;
步骤S102、基于a和b确定所述备份点平均占用内存P:
P=(a+b)/2。
7.一种电子设备,其特征在于,包括:
至少一个处理器;
以及,与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行前述权利要求1-6任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行前述权利要求1-6中任一项所述的方法。
CN202210279881.XA 2022-03-22 2022-03-22 逆向调试内存备份方法、电子设备和介质 Withdrawn CN114356662A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210279881.XA CN114356662A (zh) 2022-03-22 2022-03-22 逆向调试内存备份方法、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210279881.XA CN114356662A (zh) 2022-03-22 2022-03-22 逆向调试内存备份方法、电子设备和介质

Publications (1)

Publication Number Publication Date
CN114356662A true CN114356662A (zh) 2022-04-15

Family

ID=81094353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210279881.XA Withdrawn CN114356662A (zh) 2022-03-22 2022-03-22 逆向调试内存备份方法、电子设备和介质

Country Status (1)

Country Link
CN (1) CN114356662A (zh)

Similar Documents

Publication Publication Date Title
US8732720B2 (en) Job scheduling based on map stage and reduce stage duration
CN112799606B (zh) Io请求的调度方法及装置
CN112667405B (zh) 信息处理方法、装置、设备及存储介质
CN114625507B (zh) 基于有向无环图的任务调度方法、系统、设备及存储介质
CN112269661B (zh) 基于Kafka集群的分区迁移方法和装置
CN112256433A (zh) 基于Kafka集群的分区迁移方法和装置
CN112948169A (zh) 数据备份的方法、装置、设备和存储介质
CN109117086B (zh) 存储设备数据位置的处理方法、装置、设备及存储介质
CN111522648B (zh) 一种区块链的交易处理方法、装置及电子设备
CN114625572B (zh) 逆向调试内存备份方法、电子设备和介质
CN114356662A (zh) 逆向调试内存备份方法、电子设备和介质
US9965491B2 (en) Method and device for recording system log
CN111046004B (zh) 一种数据文件存储方法、装置、设备及存储介质
CN112631994A (zh) 数据迁移方法及系统
CN110909023B (zh) 一种查询计划的获取方法、数据查询方法及装置
CN115391341A (zh) 分布式图数据处理系统、方法、装置、设备及存储介质
CN112631510B (zh) 堆栈区域扩充的方法、装置及硬件平台
CN110543349B (zh) 一种应用启动加速方法、装置及计算机可读存储介质
CN116113927A (zh) 用于函数调用中可重复使用和相对索引的寄存器资源分配的方法和装置
CN109241027B (zh) 数据迁移的方法、装置、电子设备及计算机可读存储介质
CN109343953B (zh) 内存管理方法、装置及电子设备
CN116701410B (zh) 数联网数据语用内存状态数据的存储方法及系统
CN117273811B (zh) 基于用电数据的企业用电预测数据处理方法
CN111309475A (zh) 一种检测任务执行方法及设备
CN111782367B (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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20220415