CN111966602A - 一种定点代码调试方法、系统、终端及存储介质 - Google Patents
一种定点代码调试方法、系统、终端及存储介质 Download PDFInfo
- Publication number
- CN111966602A CN111966602A CN202010922045.XA CN202010922045A CN111966602A CN 111966602 A CN111966602 A CN 111966602A CN 202010922045 A CN202010922045 A CN 202010922045A CN 111966602 A CN111966602 A CN 111966602A
- Authority
- CN
- China
- Prior art keywords
- debugging
- point
- code
- debugged
- module
- 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 58
- 230000006870 function Effects 0.000 claims description 26
- 230000003993 interaction Effects 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 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
-
- 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/3664—Environments for testing or debugging software
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种定点代码调试方法、系统、终端及存储介质,均能够:选择待调试代码中调试开始的调试点;保存所述调试点的运行环境;接收待调试代码对应的修改后的源码,生成所述待调试代码的副本文件;利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点;从所述调试点开始debug所述副本文件,并输出debug结果。本发明用于提高软件开发人员的debug效率。
Description
技术领域
本发明涉及软件程序调试(debug)领域,具体涉及一种定点代码调试方法、系统、终端及存储介质。
背景技术
对于软件开发人员来说,软件代码中出现bug是很常见的问题。在一个软件的开发周期中,debug占据了相当大的一部分时间。其中,部分bug是可以通过开发人员的经验轻松定位并解决的,但也有一些是通过经验很难定位到的。
现有IDE提供有单步调试功能,可一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。但是目前,IDE提供的单步调试功能也存在一些缺点,比如每次调试都需要从头开始,在修改点(即调试点)之前代码执行时间过长时,整个调试过程将浪费软件开发人员大量时间。
为此,本发明提供一种定点代码调试方法、系统、终端及存储介质,用于解决上述问题。
发明内容
针对现有技术的上述不足,本发明提供一种定点代码调试方法、系统、终端及存储介质,用于提高软件开发人员的debug(调试)效率。
第一方面,本发明提供一种定点代码调试方法,包括步骤:
S 1、选择待调试代码中调试开始的调试点;
S2、保存所述调试点的运行环境;
S3、接收待调试代码对应的修改后的源码,生成所述待调试代码的副本文件;
S4、利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点;
S5、从所述调试点开始debug所述副本文件,并输出debug结果。
进一步地,该定点代码调试方法还包括步骤:
S6、在用户再次提交待调试代码对应的修改后的源码时,转而重复执行步骤S3-S5;
S7、在用户通过预先设定的调试结束模块输入调试结束指令时,控制调试结束。
进一步地,步骤S1中通过人机交互点选方式,选择待调试代码中调试开始的调试点。
进一步地,步骤S4中将副本文件的入口函数重定向到所述调试点的方法为:函数跳转方法、预处理指令方法或指针指向方法。
第二方面,本发明提供一种定点代码调试系统,包括:
调试点选择模块,用于选择待调试代码中调试开始的调试点;
运行环境保存模块,用于保存所述调试点的运行环境;
副本生成模块,用于接收待调试代码对应的修改后的源码,并将该接收到的源码生成所述待调试代码的副本文件;
调试点运行环境初始化模块,用于利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点;
调试模块,用于从所述调试点开始debug所述副本文件,并输出debug结果。
进一步地,该定点代码调试系统还包括:
第一控制模块,用于在用户再次提交待调试代码对应的修改后的源码时,继续调用所述的副本生成模块、调试点运行环境初始化模块和调试模块;
调试结束模块,用于供用户输入调试结束指令控制调试结束。
进一步地,调试点选择模块通过人机交互点选方式,选择待调试代码中调试开始的调试点。
进一步地,调试点运行环境初始化模块中将副本文件的入口函数重定向到所述调试点的方法为:函数跳转方法、预处理指令方法或指针指向方法。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的有益效果在于,
本发明提供的定点代码调试方法、系统、终端及存储介质,可供调试人员自主选择调试开始的调试点,使调试从调试人员选取的调试点开始进行调试,可见发明避免了每次调试都要从头开始,一定程度上节约了开发人员的debug(调试)时间,有助于提高开发人员的debug效率。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的系统的示意性框图。
图3为本发明实施例提供的一种终端的结构示意图。
图4为本发明实施例提供的一种存储介质的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
图1是本发明一个实施例的方法的示意性流程图。
如图1所示,该方法100包括:
步骤S1、选择待调试代码中调试开始的调试点;
步骤S2、保存所述调试点的运行环境;
步骤S3、接收待调试代码对应的修改后的源码,生成所述待调试代码的副本文件;
步骤S4、利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点;
步骤S5、从所述调试点开始debug所述副本文件,并输出debug结果。
可选地,作为本发明的一个实施例,该定点代码调试方法还包括:
步骤S6、在用户再次提交待调试代码对应的修改后的源码时,转而重复执行步骤S3-步骤S5;
步骤S7、在用户通过预先设定的调试结束模块输入调试结束指令时,控制调试结束。
步骤,步骤S1中通过人机交互点选方式,选择待调试代码中调试开始的调试点。
步骤,步骤S4中将副本文件的入口函数重定向到所述调试点的方法为:函数跳转方法、预处理指令方法或指针指向方法。
为了便于对本发明的理解,下面以本发明定点代码调试方法的原理,结合实施例中对定点代码进行调试的过程,对本发明提供的定点代码调试方法做进一步的描述。
具体的,所述定点代码调试方法包括:
步骤P1、选择待调试代码中调试开始的调试点。
具体地,开发人员可根据自己的实际需要在待调试代码中定位调试点,并通过手动双击点选的方式进行标记,以选择待调试代码中调试开始的调试点,将该标记的调试点记为目标调试点。
同一个待调试代码中标记的目标调试点可以为多个。
步骤P2、保存所述调试点的运行环境。
具体地,在标记好调试点之后,编译源代码生成可执行文件并执行(脚本语言可不进行编译),可在执行到目标调试点时保存该目标调试点的运行环境。
该运行环境为目标调试点对应的变量属性,包括所述目标调试点对应的变量的作用域、变量名和变量值。
步骤P3、接收待调试代码对应的修改后的源码,生成所述待调试代码的副本文件。
开发人员根据需要对各目标调试点之后的源代码进行修改。
将修改后的源代码提交并生成当前源代码(即待调试代码)的副本文件。
步骤P4、利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点。
具体地,根据上述保存的目标调试点的运行环境,生成相应的定义代码并覆盖到所述副本文件中对应的位置。然后将待调试代码的入口函数重定向到目标调试点。
将生成相应的定义代码覆盖到所述副本文件中对应的位置,具体实现方法可为:
将保存的目标调试点中的变量以作用域链(作用域链可以保证对执行环境有权访问的所有变量和函数的有序访问)的形式保存,通过变量在作用域链的位置反推出由该变量生成的代码应覆盖的位置;
将生成相应的定义代码覆盖到上述代码应覆盖的位置。
在将待调试代码的入口函数重定向到目标调试点时,可通过指针或其他类似的方式来指向已保存的目标调试点的变量。
步骤P5、从所述调试点开始debug所述副本文件,并输出debug结果。
具体地,从目标调试点开始对已修改后的源代码进行debug,输出debug结果。
步骤P6、在用户再次提交待调试代码对应的修改后的源码时,转而重复执行步骤P3-P5。
具体地,开发人员通过debug结果看是否能够定位和解决所要解决的bug:
若否,则重新修改待调试代码的源代码并提交,然后重复执行上述步骤P3-步骤P5。
步骤P7、在用户通过预先设定的调试结束模块输入调试结束指令时,控制调试结束。
具体地,开发人员通过debug结果看是否能够定位和解决所要解决的bug,若debug结果表明已定位和解决所要解决的bug,则由开发人员通过预先设定的调试结束模块输入调试结束指令,从而控制调试结束。
如图2示,该系统200包括:
调试点选择模块201,用于选择待调试代码中调试开始的调试点;
运行环境保存模块202,用于保存所述调试点的运行环境;
副本生成模块203,用于接收待调试代码对应的修改后的源码,并将该接收到的源码生成所述待调试代码的副本文件;
调试点运行环境初始化模块204,用于利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点;
调试模块205,用于从所述调试点开始debug所述副本文件,并输出debug结果。
可选地,作为本发明一个实施例,该定点代码调试系统还包括:
第一控制模块206,用于在用户再次提交待调试代码对应的修改后的源码时,继续调用所述的副本生成模块、调试点运行环境初始化模块和调试模块;
调试结束模块207,用于供用户输入调试结束指令控制调试结束。
可选地,作为本发明一个实施例,调试点选择模块通过人机交互点选方式,选择待调试代码中调试开始的调试点。
可选地,作为本发明一个实施例,调试点运行环境初始化模块中将副本文件的入口函数重定向到所述调试点的方法为:函数跳转方法、预处理指令方法或指针指向方法。
图3为本发明实施例提供的一种终端300的结构示意图,该终端300可以用于执行本发明实施例提供的方法100。
其中,该终端300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。
处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(Integrat ed C ircu i t,简称IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器310可以仅包括中央处理器(Central Proc es s i ng Uni t,简称CPU)。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
图4是本发明提供的一个实施例的计算机存储介质400,其中,该计算机存储介质400可存储有程序410,该程序410执行时可包括本发明提供的各实施例中的部分或全部步骤。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于系统、终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种定点代码调试方法,其特征在于,包括步骤:
S1、选择待调试代码中调试开始的调试点;
S2、保存所述调试点的运行环境;
S3、接收待调试代码对应的修改后的源码,生成所述待调试代码的副本文件;
S4、利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点;
S5、从所述调试点开始debug所述副本文件,并输出debug结果。
2.根据权利要求1所述的定点代码调试方法,其特征在于,该定点代码调试方法还包括步骤:
S6、在用户再次提交待调试代码对应的修改后的源码时,转而重复执行步骤S3-S5;
S7、在用户通过预先设定的调试结束模块输入调试结束指令时,控制调试结束。
3.根据权利要求1所述的定点代码调试方法,其特征在于,步骤S1中通过人机交互点选方式,选择待调试代码中调试开始的调试点。
4.根据权利要求1所述的定点代码调试方法,其特征在于,步骤S4中将副本文件的入口函数重定向到所述调试点的方法为:函数跳转方法、预处理指令方法或指针指向方法。
5.一种定点代码调试系统,其特征在于,包括:
调试点选择模块,用于选择待调试代码中调试开始的调试点;
运行环境保存模块,用于保存所述调试点的运行环境;
副本生成模块,用于接收待调试代码对应的修改后的源码,并将该接收到的源码生成所述待调试代码的副本文件;
调试点运行环境初始化模块,用于利用所保存的调试点的运行环境,初始化所述调试点在副本文件中的运行环境,并将副本文件的入口函数重定向到所述调试点;
调试模块,用于从所述调试点开始debug所述副本文件,并输出debug结果。
6.根据权利要求5所述的定点代码调试系统,其特征在于,该定点代码调试系统还包括:
第一控制模块,用于在用户再次提交待调试代码对应的修改后的源码时,继续调用所述的副本生成模块、调试点运行环境初始化模块和调试模块;
调试结束模块,用于供用户输入调试结束指令控制调试结束。
7.根据权利要求5所述的定点代码调试系统,其特征在于,调试点选择模块通过人机交互点选方式,选择待调试代码中调试开始的调试点。
8.根据权利要求5所述的定点代码调试系统,其特征在于,调试点运行环境初始化模块中将副本文件的入口函数重定向到所述调试点的方法为:函数跳转方法、预处理指令方法或指针指向方法。
9.一种终端,其特征在于,包括:
处理器;
用于存储处理器的执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-3任一项所述的方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010922045.XA CN111966602B (zh) | 2020-09-04 | 2020-09-04 | 一种定点代码调试方法、系统、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010922045.XA CN111966602B (zh) | 2020-09-04 | 2020-09-04 | 一种定点代码调试方法、系统、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111966602A true CN111966602A (zh) | 2020-11-20 |
CN111966602B CN111966602B (zh) | 2022-05-31 |
Family
ID=73392102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010922045.XA Active CN111966602B (zh) | 2020-09-04 | 2020-09-04 | 一种定点代码调试方法、系统、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966602B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279789A (zh) * | 2010-06-13 | 2011-12-14 | 三星电子(中国)研发中心 | 生产阶段嵌入式系统的调试系统及其调试方法 |
CN110069404A (zh) * | 2019-03-27 | 2019-07-30 | 广东高云半导体科技股份有限公司 | 代码调试方法、装置、设备及介质 |
CN111352842A (zh) * | 2020-02-28 | 2020-06-30 | 成都金诺信高科技有限公司 | 基于嵌入式的软件调试方法 |
-
2020
- 2020-09-04 CN CN202010922045.XA patent/CN111966602B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279789A (zh) * | 2010-06-13 | 2011-12-14 | 三星电子(中国)研发中心 | 生产阶段嵌入式系统的调试系统及其调试方法 |
CN110069404A (zh) * | 2019-03-27 | 2019-07-30 | 广东高云半导体科技股份有限公司 | 代码调试方法、装置、设备及介质 |
CN111352842A (zh) * | 2020-02-28 | 2020-06-30 | 成都金诺信高科技有限公司 | 基于嵌入式的软件调试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111966602B (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6161216A (en) | Source code debugging tool | |
CA2292123C (en) | Method and system for modifying executable code to add additional functionality | |
US20050268195A1 (en) | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems | |
Fischer et al. | CSeq: A concurrency pre-processor for sequential C verification tools | |
CN106980597B (zh) | 片上系统验证方法及验证系统 | |
CN111240720A (zh) | 引导程序升级方法、装置及存储介质 | |
US20030115576A1 (en) | Breakpoint safety net | |
CN110781126A (zh) | 一种TensorFlow的FPGA异构加速实现方法、系统、终端及存储介质 | |
CN115390809A (zh) | 一种仿真调度方法及系统 | |
CN116185425B (zh) | 基于节点组合的事件流程编排方法、装置、设备及介质 | |
CN111966602B (zh) | 一种定点代码调试方法、系统、终端及存储介质 | |
US6643800B1 (en) | Method and apparatus for testing microarchitectural features by using tests written in microcode | |
CN117149209A (zh) | 一种代码增量编译方法、装置、计算机设备及存储介质 | |
CN111930398A (zh) | 应用程序更新方法、装置、系统、介质及设备 | |
CN112230904A (zh) | 基于接口文档的代码生成方法、装置、存储介质及服务器 | |
CN115328772A (zh) | 激励组合与模块相关性的学习方法与测试脚本产生方法 | |
US11256479B2 (en) | Dynamic updates in an interactive programming environment | |
CN111596923B (zh) | Haxe静态链接库构建方法、装置和电子设备 | |
CN110502439B (zh) | 调试方法、装置、电子设备以及存储介质 | |
EP2820547A1 (en) | Debugging method and computer program product | |
Zhang | Using concolic execution to identify IA32 program errors | |
US11921614B2 (en) | System and method for developing, testing and debugging software for microcontrollers | |
JPH08137684A (ja) | プログラム転送方法、プログラム開発システムならびにプログラム開発装置およびプログラム実行装置 | |
KR101548960B1 (ko) | 가상 플랫폼을 이용한 프로그램 작성과 디버깅 방법 및 장치 | |
Shaukat et al. | Improved Efficiency of Object Code Verification Using Statically Abstracted Object Code |
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 |