CN101639805A - 用于在程序调试中跟踪变量的方法和设备 - Google Patents
用于在程序调试中跟踪变量的方法和设备 Download PDFInfo
- Publication number
- CN101639805A CN101639805A CN200810145140A CN200810145140A CN101639805A CN 101639805 A CN101639805 A CN 101639805A CN 200810145140 A CN200810145140 A CN 200810145140A CN 200810145140 A CN200810145140 A CN 200810145140A CN 101639805 A CN101639805 A CN 101639805A
- Authority
- CN
- China
- Prior art keywords
- variable
- code
- breakpoint
- relevant
- program
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种用于在程序调试中跟踪变量的方法和设备,其中该方法包括对变量进行相关性分析以识别程序中与该变量相关的代码,在识别出的与变量相关的代码处***断点,以及基于断点对程序进行调试以跟踪变量的变化。所述设备包括代码分析装置,用于对变量进行相关性分析以识别程序中与该变量相关的代码,断点处理装置,用于在识别出的与变量相关的代码处***断点,以及程序调试装置,用于基于断点对程序进行调试以跟踪变量的变化。利用本发明的方法和设备,程序员在对程序进行调试时通过相关性分析能够较为容易地找到与要跟踪的变量相关的代码,并通过在相关的代码处***断点来更为有效地跟踪变量的变换而无需反复运行待调试的程序。
Description
技术领域
本发明一般地涉及程序调试,更具体地,本发明涉及用于在程序调试中跟踪变量的方法和设备。
背景技术
在现有的程序调试技术中,程序员通常采用跟踪变量来试图找出存在于软件代码中的错误或发生在编程过程中的错误。当跟踪变量时,程序员要查找出哪些特定的源代码语句修改了该变量,而断点在该查找过程中扮演了重要的角色。断点使得程序在运行到该断点所***的某个位置时自动地停止下来,从而程序员可以对该位置处的代码进行分析和判断以确定该位置处的代码是否修改了变量。当前,断点的指定可以通过源代码的行号、函数名和条件等来完成。
图1示例性示出终止在标号②的一部分C语言程序源代码,其中语句断言(assert)意味着变量bRet的值被改变为非零值。程序员通过该断言语句确定这是由于源程序中的一些代码所造成的错误值。为了能够正确地找出变量bRet的值被改变为非零值的原因,程序员需要从该C语言源程序中找出哪些代码修改了变量bRet。
下面参考图2,其以图1中示出的C语言程序源代码为例来图示现有技术的利用断点跟踪变量bRet的调试过程。在该C语言程序源代码中,启用的断点以实心圆[●]示出,而禁用的断点以空心圆[○]示出。为了找出哪些代码修改了变量bRet,首先在函数FuncA()中涉及变量bRet的标号①的代码处***断点。重新运行函数FuncA()后并且发现变量bRet的值在源程序运行经过标号①的代码后从0变到1。禁用标号①的代码处***的断点并且在函数FuncB()中涉及变量bVar的标号③和④的代码处***断点。重新运行函数FuncA(),源程序首先停止在标号③的代码处并接着停止在标号④的代码处。在单步调试通过标号③和④的代码之后,发现变量bVar的值在源程序运行经过标号④的代码后从0变到1。接着禁用在标号①,③和④的代码处的断点并且在函数FuncD()中涉及变量bpIn的标号⑥的代码处***断点。由于标号③的代码处并没有改变变量bVar的值,因此程序员不需要在函数FuncC()中的标号⑤的代码处***断点。重新运行函数FuncA()并且源程序停止在标号⑥的代码处,程序员此时发现变量bVar的值在源程序运行经过标号⑥的代码后从0变到1。通过上述***断点来跟踪变量的操作,程序员最终发现由于函数FuncB()中变量bVar的值的变化而导致在返回给变量bRet时将变量bRet的值改变为非零值。
从上面的示例性程序调试操作可以看出,通过借助于断点的程序调试操作,程序员可以找出造成bRet为非零值的真正原因。同时也可以看出,这样的断点***可以使程序在每次运行中直接停止在程序员所指定的代码处,从而有助于程序员在调试程序中节省部分时间和精力。尽管如此,但是程序员仍需要花费较多的时间和精力来重复地运行程序以便分析程序中涉及要跟踪的变量,其函数调用结构和代码、启用和禁用断点、单步调试代码以及监视程序的执行等。
为了更好的利用断点来进行程序调试,现有的一些调试器支持数据断点,从而有助于分析涉及变量的代码。当程序员所指定地址的数据发生改变时,该数据断点可以使运行中的程序停止下来。但如果数据是由于函数的返回值而被修改,例如如图1中的标号①的代码处,变量bRet正是由于函数FuncB()的返回值而被改变,则用于变量bRet的数据断点仅可定位到标号①的代码处,这是因为函数FuncB()将使用不同的地址来表达该返回值。此时程序员就要靠自己将程序运行到函数FuncB()内并且执行上述提到的程序调试过程。
因此,需要一种用于在程序调试中解决上述问题的方法和设备,其能够使变量跟踪更为容易和有效,从而有助于快速查找程序中有问题的代码,避免由于变量跟踪的低效而造成反复运行程序。
发明内容
本发明的目的是提供一种用于能够更为容易和有效地在程序调试中跟踪变量的方法和设备。
为了实现上述目的,本发明提出一种用于在程序调试中跟踪变量的方法,包括对所述变量进行相关性分析以识别程序中与该变量相关的代码,在识别出的与所述变量相关的代码处***断点,以及基于所述断点对程序进行调试以跟踪所述变量的变化。
本发明还提出一种用于在程序调试中跟踪变量的设备,包括:代码分析装置,用于对所述变量进行相关性分析以识别程序中与该变量相关的代码,断点处理装置,用于在识别出的与所述变量相关的代码处***断点,以及程序调试装置,用于基于所述断点对程序进行调试以跟踪所述变量的变化。
利用本发明的方法和设备,程序员在对程序进行调试时通过相关性分析能够较为容易地找到程序中与要跟踪的变量相关的代码,并通过在相关的代码处***断点来更为有效地跟踪变量的变换,从而能够快速地找到程序中有问题的代码,避免了由于程序调试中跟踪变量的低效而造成反复运行程序。
附图说明
通过以下结合附图的说明,并且随着对本发明的更全面了解,本发明的其他目的和效果将变得更加清楚和易于理解,其中:
图1是示出示例性C语言程序源代码的框图;
图2是示出采用现有技术对图1中的示例性C语言程序源代码进行调试的示意图;
图3是示出根据本发明实施方式的用于在程序调试中跟踪变量的方法流程图;
图4A和4B是示意性示出根据本发明实施方式的用于配置断点的用户界面;
图5是示意性示出根据本发明实施方式生成的跟踪报告示图;
图6是示出根据本发明实施方式的执行相关性分析从而识别程序中与要跟踪的变量相关的代码的流程图;以及
图7是示出根据本发明实施方式的用于在程序调试中跟踪变量的设备的框图。
在所有的上述附图中,相同的标号表示具有相同、相似或相应的特征或功能。
具体实施方式
以下,将结合附图来详细描述本发明的实施方式。
图3是示意性示出根据本发明实施方式的用于在程序调试中跟踪变量的方法流程图。为了清楚起见,在该图中以实线框示出实施本方法所必需的步骤,以虚线框示出实施本方法可选的步骤。
如图所示,在步骤110处,对要跟踪的变量进行相关性分析以识别程序中与该变量相关的代码。在本发明中,相关性分析是指在有效范围内分析与要跟踪的变量相关的代码,这里有效范围可以由程序员在程序调试前指定,例如程序员可以指定该有效范围是所关注的某个程序文件或程序文件集。另外,有效范围也可以根据要跟踪的变量的自身属性来定义,例如,如果要跟踪的变量的自身属性是局部变量,则其有效范围可以是声明该局部变量的函数内,而当要跟踪的变量的自身属性是全局变量时,则其有效范围可以是处于多个函数间或甚至若干个程序文件间。这里,与要跟踪的变量相关的代码可以通过以下类型的定义来确定,这些定义包括:
a.直接修改要跟踪的变量的值的代码。例如,图1中标号③的代码bVar=FuncC()和标号④的代码FuncD(&bVar)直接修改了变量bVar的值,因此该标号③和④的代码是a类型定义下与要跟踪的变量bVar相关的代码。
b.使用要跟踪的变量作为函数参数的代码。例如,图1中的函数FuncD(int*bpIn)使用变量bVar作为参数,因此函数FuncD(int*bpIn)是b类型定义下与要跟踪的变量bVar相关的代码。
c.使用函数返回值来修改变量的值的代码。例如,图1中的函数FuncB()使用变量bVar的返回值来修改要跟踪的变量bRet的值,因此函数FuncB()是c类型定义下与要跟踪的变量bRet相关的代码。
d.通过中间变量间接修改要跟踪的变量的值的代码。例如,图1中标号⑦的代码bValue1=bValue2,其将变量bValue2的值赋给中间变量bValue1,而在标号⑧的代码bRet=bValue1,其再将中间变量bValue1的值赋给要跟踪的变量bRet而间接修改变量bRet的值,因此标号⑦的代码是d类型定义下与要跟踪的变量bRet相关的代码。
通过上述四种类型的定义,并且结合要跟踪的变量的有效范围即可确定与要跟踪的变量相关的代码。应该理解的是,此处要跟踪的变量的有效范围的确定以及与要跟踪的变量相关的代码的定义仅仅是示例性而并非限制性的,本领域技术人员可以想到或采取任意其他合适的方式来确定要跟踪的变量的有效范围以及定义与要跟踪的变量相关的代码。关于具体如何执行相关性分析从而找到与要跟踪的变量相关的代码将稍后结合图6的流程图来详细描述。
接着,根据在步骤110处的相关性分析,在步骤120处,执行在识别出的与该要跟踪的变量相关的代码处***断点。***断点的方法取决于调试器的类型。以现有的gdb调试器为例,该调试器是自由软件并且受到gnu通用公共许可证的保护,程序员可以通过首先基于将***到代码中的断点来生成相应的断点文件并且接着将该断点文件使用“source<文件名>”加载进gdb调试器中来完成断点***的操作。
接着,在可选的步骤130中,可以对***到相关的代码处的断点进行配置。为了便于理解如何对断点进行配置,下面将参考在图4A和图4B中示意性示出的断点配置的用户界面,其以图1的C语言程序源代码执行本发明的相关性分析后为例。如图4A中所示,在该用户界面中,“Code”栏中以单行示出每个与要跟踪的变量(如图1的C语言程序源代码中的变量bRet)相关的代码,“Enabled”栏可以让程序员来选择是否在该相关的代码处启用或禁用***的断点,即是否在此处启用断点以跟踪变量的变化。如果检验框被选中,例如图中bRet=FuncB()的检验框被选中,则在该相关的代码处***的断点将被启用,从而在程序运行时基于该处***的断点来跟踪变量的变化。如果检验框未被选中,例如图中bVar=FuncC()的检验框未被选中,则该相关的代码处***的断点将不被启用(即禁用),从而将不会跟踪在此处的变量。显然,通过利用该检验框,程序员可以根据需要选择性地使用断点。另外,程序员也可以通过在“Command”栏的每行中点击按钮“Command”来添加调试器所支持的指令,从而在断点被启用并且在程序运行到达时,这些指令被调试器执行,例如当相关的代码中存在变量bVar时,命令“print bVar”将会使得当程序调试运行到断点处时打印出变量bVar的值。图4a中“Description”栏进一步提供了要跟踪的变量所涉及的相关的代码的位置,例如程序文件名以及相关的代码的行号。下面参考图4B来进行描述,图4B是图4A中右击***断点的一个相关的代码行并选择断点属性(breakpoint Properties)后出现的用户界面。在该用户界面中,程序员可以进一步配置断点的属性,例如断点执行次数(hitcount)、启用条件、禁用(未启用)条件或挂起(Suspend)条件(如图4B中所示,当条件为“真”时或当条件的值改变时执行断点的挂起)的至少一项。当然,也可以不执行步骤130,即不对***到相关的代码处的断点进行配置。
接着,在步骤140处,基于***在相关的代码处且启用的断点对程序进行调试,记录断点处变量的值以跟踪该变量的变化。接着,在完成执行程序调试以跟踪变量的变化后,在可选的步骤150处,生成该变量的跟踪报告,例如图5中示意性示出的跟踪报告示图。该跟踪报告包括变量值的改变历史、函数调用关系以及相关程序代码的描述等。对于结构变量,值将被示为包括其所有元素的当前调试值。报告可以以XML格式的文件进行输出和保存。可选地,在执行完生成该变量的跟踪报告的步骤150后,可以执行下面的步骤(图3中未示出),即根据需要对基于相关性分析已经***在相关代码处的断点进行进一步地配置,例如对禁用的断点进行启用、对已经启用的断点进行禁用、对断点的执行次数进行修改,或设置断点在程序调试中启用或禁用的新的条件等。从而在再次进行的步骤140的程序调试时,对要跟踪的变量进行进一步跟踪以找到导致程序出现错误的代码。
下面将参考图6来详细描述执行相关性分析的操作流程。在步骤600处,首先设置将要跟踪的变量以及其有效范围。接着在步骤605处开始读取第一行代码。在步骤610处,首先判断该读取的代码是否直接修改了跟踪的变量的值,如果是,则在步骤620处,将该读取的代码记录为与跟踪的变量相关的代码。如果该读取的代码没有直接修改跟踪的变量的值,则在步骤615处判断该读取的代码是否间接修改了跟踪的变量的值,例如通过中间变量的方式修改了跟踪的变量的值,如果该读取的代码间接修改了跟踪的变量的值,则同样在步骤620处将该读取的代码记录为与跟踪的变量相关的代码。如果该读取的代码没有间接修改跟踪的变量值,则在步骤625处,判断在该读取的代码中,跟踪的变量是否为函数的参数,如果跟踪的变量是函数的参数,则在步骤630处,将该读取的代码记录为与跟踪的变量相关的代码,并且在步骤635处,将跟踪的变量改变为函数体内变量,即此时跟踪的变量是该函数的参数,并且将有效范围改变为该函数体内。接着,流程返回到步骤605,开始执行该函数体内以所述的参数为要跟踪的变量的跟踪操作。否则在步骤640处,接着判断在该读取的代码中,跟踪的变量是否被函数的返回值所赋值,如果跟踪的变量被函数的返回值赋值,则同样执行上面的步骤630和635,即记录该读取的代码为相关的代码,并且接着改变要跟踪的变量为函数体内变量,即此时跟踪的变量是该函数利用其传送返回值的变量,该函数体内为有效范围。接着流程也返回到步骤605开始函数体内的跟踪操作。否则就读取下一行代码,并接着判断是否达到当前有效范围的尾部,如果没有到达,则流程返回到步骤610继续执行操作,否则接着判断跟踪是否为函数体内的跟踪,如果是函数体内的跟踪,则在步骤660,设定跟踪的变量和有效范围为改变前的要跟踪的变量和有效范围,即从当前的函数体内跟踪跳出返回到进入该函数体前的有效范围并且恢复与该有效范围相应的要跟踪的变量。接着前进到步骤645读取下一行程序代码,并开始循环地执行上面的操作。可以看出每次当相关的函数被分析时,新的分析处理将在函数内部执行。每次函数返回时,用于该函数调用的处理被终止。如果函数是迭代的,则针对相同的函数可能存在多次处理。通过以上的操作,可以在有效范围内找到与要跟踪的变量相关的代码。
现在将参考图7描述根据本发明实施方式的用于在程序调试中跟踪变量的设备。如图中所示,本发明的设备包括代码分析装置710、断点处理装置720以及程序调试装置740,并且可选地包括跟踪配置装置730和报告生成装置750。为了便于理解,在该图中用虚线框表示出该可选的两个装置。下面详细描述本发明的设备的操作过程。在代码分析装置710中,对要跟踪的变量进行相关性分析以识别程序中与该变量相关的代码。关于如何进行相关性分析以识别程序中与该变量相关的代码已经在图3的步骤110中进行了详细的描述,为了简明起见,在此省略。接着断点处理装置720基于代码分析装置710所识别出的与所述变量相关的代码,在该相关的代码处***断点。接着可选的跟踪配置装置730对断点处理装置720***到相关的代码处的断点进行配置,该配置包括启用或禁用断点以便选择性地使用断点,并且跟踪配置装置720还可以对断点执行次数以及启用条件、禁用条件或挂起条件的至少一项进行配置,例如图4A和图4B中所示出的。程序调试装置740接着基于***到相关的代码处的断点对程序进行调试以跟踪变量的变化。最后,可选地,报告生成装置750在所述程序调试装置740调试程序后,生成所述变量的跟踪报告,如图5中所示出的。从而更为直观地向程序员提供跟踪的变量的值的变化历史。可选地,也可以在报告生成装置750完成操作后,再次利用跟踪配置装置720来根据需要对基于相关性分析已经***在相关的代码处的断点进行进一步的配置,例如对禁用的断点进行启用、对已经启用的断点进行禁用、对断点的执行次数进行修改,或设置断点在程序调试中启用或禁用的新的条件等。从而在再次进行程序调试时,对要跟踪的变量进行进一步跟踪以找到导致程序出现错误的代码。
应当注意,为了使本发明更容易理解,上面的描述省略了对于本领域的技术人员来说是公知的、并且对于本发明的实现可能是必需的更具体的一些技术细节。
提供本发明的说明书的目的是为了说明和描述,而不是用来穷举或将本发明限制为所公开的形式。对本领域的普通技术人员而言,许多修改和变更都是显而易见的。
因此,选择并描述实施方式是为了更好地解释本发明的原理及其实际应用,并使本领域普通技术人员明白,在不脱离本发明实质的前提下,所有修改和变更均落入由权利要求所限定的本发明的保护范围之内。
Claims (18)
1.一种用于在程序调试中跟踪变量的方法,包括以下步骤:
对所述变量进行相关性分析以识别程序中与该变量相关的代码,
在识别出的与所述变量相关的代码处***断点,以及
基于所述断点对程序进行调试以跟踪所述变量的变化。
2.根据权利要求1所述的方法,其中相关性分析包括在所述变量的有效范围内分析与该变量相关的代码。
3.根据权利要求2所述的方法,其中当所述变量是局部变量时,该变量的有效范围是声明该局部变量的函数内,而当所述变量是全局变量时,该变量的有效范围是涉及该变量的多个函数间或多个程序文件间。
4.根据权利要求2所述的方法,其中与该变量相关的代码是在所述有效范围内满足下列各项之一的代码,包括:直接修改变量的值的代码、使用变量作为参数的代码、使用返回值来修改变量的值的代码以及使用中间变量来修改变量的值的代码。
5.根据权利要求1所述的方法,其中包括对***到所述相关的代码处的断点进行配置。
6.根据权利要求5所述的方法,其中对***到所述相关的代码处的断点进行配置包括启用或禁用断点以实现选择性地使用所述断点。
7.根据权利要求5所述的方法,其中对***到所述相关的代码处的断点进行配置包括对断点执行次数以及启用条件、禁用条件或挂起条件的至少一项进行配置。
8.根据权利要求1所述的方法,其中在基于所述断点对程序进行调试后,生成所述变量的跟踪报告。
9.根据权利要求8所述的方法,其中所述跟踪报告包括变量值的改变历史、函数调用关系以及所述相关的代码的描述中的至少一项。
10.一种用于在程序调试中跟踪变量的设备,包括:
代码分析装置,用于对所述变量进行相关性分析以识别程序中与该变量相关的代码,
断点处理装置,用于在识别出的与所述变量相关的代码处***断点,以及
程序调试装置,用于基于所述断点对程序进行调试以跟踪所述变量的变化。
11.根据权利要求10所述的设备,其中代码分析装置在所述变量的有效范围内分析与该变量相关的代码。
12.根据权利要求11所述的设备,其中当所述变量是局部变量时,该变量的有效范围是声明该局部变量的函数内,而当所述变量是全局变量时,该变量的有效范围是涉及该变量的多个函数间或多个程序文件间。
13.根据权利要求11所述的设备,其中与该变量相关的代码是在所述有效范围内满足下列各项之一的代码,包括:直接修改变量的值的代码、使用变量作为参数的代码、使用返回值来修改变量的值的代码以及使用中间变量来修改变量的值的代码。
14.根据权利要求10所述的设备,其中所述设备进一步包括跟踪配置装置,用于对***到所述相关的代码处的断点进行配置。
15.根据权利要求14所述的设备,其中跟踪配置装置对***到所述相关的代码处的断点进行配置包括启用或禁用断点以实现选择性地使用所述断点。
16.根据权利要求14所述的设备,其中跟踪配置装置对***到所述相关的代码处的断点进行配置包括对断点执行次数以及启用条件、禁用条件或挂起条件的至少一项进行配置。
17.根据权利要求10所述的设备,其中所述设备进一步包括报告生成装置,用于在所述程序调试装置对程序进行调试后,生成所述变量的跟踪报告。
18.根据权利要求17所述的设备,其中所述变量的跟踪报告包括变量值的改变历史、函数调用关系以及所述相关的代码的描述中的至少一项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810145140A CN101639805A (zh) | 2008-07-31 | 2008-07-31 | 用于在程序调试中跟踪变量的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810145140A CN101639805A (zh) | 2008-07-31 | 2008-07-31 | 用于在程序调试中跟踪变量的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101639805A true CN101639805A (zh) | 2010-02-03 |
Family
ID=41614792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810145140A Pending CN101639805A (zh) | 2008-07-31 | 2008-07-31 | 用于在程序调试中跟踪变量的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101639805A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102595002A (zh) * | 2011-01-13 | 2012-07-18 | 中兴通讯股份有限公司 | 一种增值业务流程在线调测的装置和方法 |
CN102646051A (zh) * | 2012-03-13 | 2012-08-22 | 深圳市融创天下科技股份有限公司 | 一种输出函数执行流的方法、***和终端设备 |
CN103544095A (zh) * | 2012-07-12 | 2014-01-29 | 腾讯科技(深圳)有限公司 | 服务器程序的监控方法及其*** |
CN104346273A (zh) * | 2013-07-29 | 2015-02-11 | 国际商业机器公司 | 用于调试的方法和*** |
WO2015035810A1 (zh) * | 2013-09-16 | 2015-03-19 | 中兴通讯股份有限公司 | 一种数据断点监控方法、装置及调试器 |
CN105653388A (zh) * | 2016-01-29 | 2016-06-08 | 浪潮(北京)电子信息产业有限公司 | 一种集群文件***中客户端进程信息的诊断方法 |
CN108763815A (zh) * | 2018-06-08 | 2018-11-06 | 上海华虹宏力半导体制造有限公司 | 程序语法检查的方法及芯片验证的方法 |
CN109117378A (zh) * | 2018-08-31 | 2019-01-01 | 百度在线网络技术(北京)有限公司 | 用于显示信息的方法和装置 |
CN109240700A (zh) * | 2018-07-06 | 2019-01-18 | 北京大学 | 关键代码定位方法与*** |
CN109783342A (zh) * | 2017-11-10 | 2019-05-21 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
WO2021047585A1 (zh) * | 2019-09-12 | 2021-03-18 | 安徽寒武纪信息科技有限公司 | 程序调试方法、装置、调试工具和计算机设备 |
-
2008
- 2008-07-31 CN CN200810145140A patent/CN101639805A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102595002A (zh) * | 2011-01-13 | 2012-07-18 | 中兴通讯股份有限公司 | 一种增值业务流程在线调测的装置和方法 |
WO2012094883A1 (zh) * | 2011-01-13 | 2012-07-19 | 中兴通讯股份有限公司 | 一种增值业务流程在线调测的装置和方法 |
CN102595002B (zh) * | 2011-01-13 | 2014-12-10 | 中兴通讯股份有限公司 | 一种增值业务流程在线调测的装置和方法 |
CN102646051A (zh) * | 2012-03-13 | 2012-08-22 | 深圳市融创天下科技股份有限公司 | 一种输出函数执行流的方法、***和终端设备 |
CN103544095A (zh) * | 2012-07-12 | 2014-01-29 | 腾讯科技(深圳)有限公司 | 服务器程序的监控方法及其*** |
CN103544095B (zh) * | 2012-07-12 | 2015-09-16 | 腾讯科技(深圳)有限公司 | 服务器程序的监控方法及其*** |
CN104346273A (zh) * | 2013-07-29 | 2015-02-11 | 国际商业机器公司 | 用于调试的方法和*** |
WO2015035810A1 (zh) * | 2013-09-16 | 2015-03-19 | 中兴通讯股份有限公司 | 一种数据断点监控方法、装置及调试器 |
CN105653388A (zh) * | 2016-01-29 | 2016-06-08 | 浪潮(北京)电子信息产业有限公司 | 一种集群文件***中客户端进程信息的诊断方法 |
CN109783342A (zh) * | 2017-11-10 | 2019-05-21 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
US11360879B2 (en) | 2017-11-10 | 2022-06-14 | Huawei Technologies Co., Ltd. | Script debugging method, device, and computer storage medium |
CN108763815A (zh) * | 2018-06-08 | 2018-11-06 | 上海华虹宏力半导体制造有限公司 | 程序语法检查的方法及芯片验证的方法 |
CN108763815B (zh) * | 2018-06-08 | 2022-12-02 | 上海华虹宏力半导体制造有限公司 | 程序语法检查的方法及芯片验证的方法 |
CN109240700A (zh) * | 2018-07-06 | 2019-01-18 | 北京大学 | 关键代码定位方法与*** |
CN109117378A (zh) * | 2018-08-31 | 2019-01-01 | 百度在线网络技术(北京)有限公司 | 用于显示信息的方法和装置 |
WO2021047585A1 (zh) * | 2019-09-12 | 2021-03-18 | 安徽寒武纪信息科技有限公司 | 程序调试方法、装置、调试工具和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101639805A (zh) | 用于在程序调试中跟踪变量的方法和设备 | |
US6161216A (en) | Source code debugging tool | |
Chilimbi et al. | Holmes: Effective statistical debugging via efficient path profiling | |
US7415699B2 (en) | Method and apparatus for controlling execution of a child process generated by a modified parent process | |
US7644394B2 (en) | Object-oriented creation breakpoints | |
US8756572B2 (en) | Debugger-set identifying breakpoints after coroutine yield points | |
Long et al. | Tool support for testing concurrent Java components | |
US10540262B2 (en) | Using edit and continue to dynamically set and unset optimizations in source code while debugging | |
US20040268315A1 (en) | System and method for processing breakpoint events in a child process generated by a parent process | |
US20080077780A1 (en) | System and Method for Software Debugging | |
US7178135B2 (en) | Scope-based breakpoint selection and operation | |
US10831639B2 (en) | Method and device for non-intrusively collecting function trace data | |
Elmas et al. | CONCURRIT: A domain specific language for reproducing concurrency bugs | |
Bagherzadeh et al. | MDebugger: a model-level debugger for UML-RT | |
Brörkens et al. | Dynamic event generation for runtime checking using the JDI | |
CN113568825B (zh) | 程序流程调试方法、装置、设备及存储介质 | |
CN104199770A (zh) | 一种手机音乐apk的自动化测试方法 | |
CN109144849B (zh) | 一种嵌入式软件调测方法 | |
EP3619612B1 (en) | Temporary de-optimization of target functions in a cloud debugger | |
Saddler et al. | EventFlowSlicer: a tool for generating realistic goal-driven GUI tests. | |
Bradley et al. | High performance static analysis for industry | |
Asghar et al. | Efficient debugging of large algorithmic modelica applications | |
CN104572425A (zh) | 程序调试方法、装置及*** | |
CN114281709A (zh) | 一种单元测试方法、***、电子设备及存储介质 | |
JP2011186806A (ja) | デバッグ装置およびデバッグ方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20100203 |