CN1437110A - 用于断点设定的装置和方法 - Google Patents
用于断点设定的装置和方法 Download PDFInfo
- Publication number
- CN1437110A CN1437110A CN03104230A CN03104230A CN1437110A CN 1437110 A CN1437110 A CN 1437110A CN 03104230 A CN03104230 A CN 03104230A CN 03104230 A CN03104230 A CN 03104230A CN 1437110 A CN1437110 A CN 1437110A
- Authority
- CN
- China
- Prior art keywords
- row
- breakpoint
- source code
- point setting
- code
- 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
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/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了一种断点设定装置,能够设定断点,不需给程序员增加负担。该断点设定装置包括一个被编辑的行表管理器115,用于管理源代码中被编辑的行的地址,和一个断点设定/禁止子单元106,其用于在被编辑的行表管理器115中存储的地址设定断点。该断点设定装置在程序员进行编辑的每一行上设定一个断点,不需要程序员给出任何特定指令。
Description
本发明基于在日本提交的申请No.2002-31372,其内容结合在此作为参考。
技术领域
本发明涉及用于程序开发的调试程序工具的断点设定功能的一种改进。
背景技术
调试程序是一类支持软件,用于发现和改正程序中的错误或故障。调试程序提供例如在源代码的一定的点停止程序执行的功能,和输出在中断点变量中保持的值。使程序的执行停止的点称为断点。
断点由程序员在源代码中在要进行修改的点设定。大多数已知的调试程序允许程序员容易地在编辑器上显示的源代码中设定断点。在一个例子中,允许程序员在源代码中用鼠标点击在编辑器上显示的源代码中的任何一点设定断点。设定的断点用在编辑器上显示的标记或其它符号指示。
更具体说,调试程序例如在程序中在相应于由程序员设定的断点的点处插入一条中断指令。其结果,控制在中断指令处传递给调试程序,使得可以在此时检查变量或堆栈。为恢复在停止当时的处理,调试程序从程序中删除中断命令而使其回到原来的状态,使得程序重新起动。
如上所述,常规调试程序需要程序员在需要时设定断点,它给程序员增加了负担。例如,为在要进行修改的点设定断点,需要程序员为每一个要进行的改正设定断点,或在完成所有改正后为每一改正的点一次设定所有断点。这两种过程都给程序员增加负担,因为前者需要程序员交替经历调试全过程和断点设定,而后者需要程序员记忆他所进行的全部修改。
发明内容
鉴于上述限制,本发明的一个目的是提供一种断点设定装置,它能够设定断点而不需要程序员做任何具体的操作。
为实现上述目的,本发明的断点设定装置包括:加载单元,可操作加载相应于源代码产生的目标代码;存储单元,可操作存储表示组成源代码的每一部件和在目标代码中的相应位置之间的关系的信息;获取单元,当对源代码进行特定的编辑时,可操作自动获取和存储指定经受特定编辑的部件的编辑信息;和设定单元,可操作自动在目标代码中在相应于由编辑信息指定的部件的位置处设定断点。
使用所述结构,该断点设定装置管理表示源代码中位置的信息,在这些位置处用户(也称为操作员或程序员)曾进行编辑。通过信息的管理,断点设定装置决定源代码中曾经进行编辑的位置,并在每一位置设定断点。这消除了操作员为断点设定或为指定要设定断点的位置需要进行的操作。
这里,每一部件可以是组成源代码的一行,并且每一行可以由分配给它的行号唯一标识。存储单元可以存储源代码的每一行号和在目标代码中的相应位置之间的关系。获取单元可以获取作为编辑信息的标识源代码中经受特定编辑的行的行号。
此外,特定编辑可以是删除换行符。该断点设定装置可以另外包括一个更新单元,当编辑源代码删除一个换行符时,更新单元可操作更新在获取单元中存储的编辑信息,使得大于指定行号的每一行号减1。
另外,断点设定装置可以另外包括一个更新单元,当编辑源代码在一行的行首增加一个换行符时,更新单元可操作更新在获取单元中存储的编辑信息,使得不小于标识被编辑的行的行号的每一行号加1。
另外,断点设定装置可以另外包括一个更新单元,当编辑源代码在一行的末尾增加一个换行符时,更新单元可操作更新在获取单元中存储的编辑信息,使得大于标识被编辑的行的行号的每一行号加1。
另外,特定编辑可以是在源代码的一行的中间增加一个换行符。断点设定装置可以另外包括一个更新单元,当编辑源代码在一行的中间增加一个换行符时,可操作更新在获取单元中存储的编辑信息,使得大于被指定的行号的每一行号加1,并且通过给指定的行号加1获得的行号另外存储在编辑信息中。
另外,特定的编辑可以是修改字符串而对换行符不做任何修改。
使用所述构造,断点设定装置总是决定源代码中曾经进行编辑的位置,甚至在编辑包括删除换行符、或在一行的行首、中间、或末尾增加换行符,使得组成源代码的行增加或减少的场合。结果,断点设定装置在适当的位置设定断点而不需为断点设定或指定要设定断点的位置采取专门的用户操作。
另外,源代码可以用控制块构成,控制块由多个行构成。获取单元可以另外存储表示每一控制块的边界的块边界信息,每一边界由一个行号指定。设定单元可以在目标代码中在相应于由块边界信息表示的每一控制块的第一行的位置设定断点。
使用所述构造,断点设定装置只在每一控制块中首次出现的编辑的行设定断点。
另外,当在获取单元中存储的编辑信息包括多个连续的行号时,设定单元可以只在目标代码中在相应于该多个行号的第一行号的位置设定断点。
使用所述构造,当在源代码有多于两个的连续行曾被编辑时,断点设定装置只在该连续被编辑的行的第一行设定断点。
另外,断点设定装置可以另外为由设定单元设定的每一断点产生错误页,并把所产生的错误页通过用户接口提交给用户。该错误页包括用户输入的关于对源代码在相应于断点的部件进行的编辑的信息。
使用所述构造,断点设定装置管理表示源代码中用户曾经进行编辑的位置的信息。通过管理该信息,断点设定装置决定源代码中曾经进行编辑的位置,并在每一位置设定一个断点。另外,断点设定装置为每一断点产生一个错误页。这消除了操作员产生错误页的需要,从而减少给操作员施加的负担。
附图说明
从下面对本发明的说明,结合附图,本发明的这些以及其它目的、优点和特征将十分显然,附图表示本发明的具体实施例。
附图中:
图1是根据本发明的一个实施例1的调试装置的方框图;
图2是一个视图,表示由断点显示器109显示的断点的一个例子;
图3是一个视图,表示一个被编辑的行表的例子;
图4是一个流程图,表示响应由命令输入单元102接收的编辑命令执行的处理;
图5是一个流程图,表示响应由命令输入单元102接收的调试开始命令执行的处理;
图6是一个流程图,表示响应由命令输入单元102接收的调试结束命令执行的处理;
图7是根据本发明的一个实施例2的调试装置20的方框图;
图8是一个视图,表示由调试装置20产生和使用的转移-目的地行表的一个例子;
图9是一个流程图,表示响应由命令输入单元102接收的调试开始命令执行的处理;
图10是一个流程图,表示在步骤S805为产生转移-目的地行表执行的详细的处理;
图11A是一个流程图,表示在步骤S908执行的字分析的细节;
图11B是表示分类成组1-6的字;
图12是根据本发明的一个实施例3的调试装置30的方框图;
图13是表示错误页表的一个例子的视图;
图14是一个流程图,表示响应由命令输入单元102接收的调试结束命令执行的处理;
图15是一个流程图,表示响应由命令输入单元102接收的调试开始命令执行的处理;
图16是一个流程图,表示响应由命令输入单元102接收的断点设定命令执行的处理;
图17是一个流程图,表示响应由命令输入单元102接收的断点禁止命令执行的处理;
图18是一个流程图,详细表示错误页关闭处理;
图19是表示一个程序的例子的视图;
图20是一个视图,表示源代码分成字的例子。
具体实施方式
实施例1
以下,结合附图,对根据本发明的实施例1的调试装置进行说明。
图1是一个方框图,表示实施例1的调试装置10。
在该图中,调试装置10包括一个命令输入单元102,用于接收由操作员外部输入的命令;一个用于分析该命令的命令分析单元103;一个用于执行制作处理的制作单元(make unit)11;一个用于执行调试处理的调试单元12;和一个用于执行编辑的编辑单元13。
制作单元11包括一个可执行文件管理器104,用于产生和存储一个可执行文件的最新版本。
调试单元12包括一个加载器105,用于加载可执行文件的最新版本,一个断点设定/禁止子单元106,用于设定和禁止断点,一个执行控制器107,用于控制可执行文件的执行,一个源代码显示器108,用于例如在显示器屏幕上显示源代码,一个断点显示器109,用于显示指示在源代码中设定断点的地方的标记,一个中断指令处理器110,用于当程序的执行到在断点处停止时执行预定处理,一个断点表管理器111,用于存储关于当前设定的断点的信息,和一个设定子单元116,用于在源代码中进行过某些编辑的点亦即进行修改、增加、删除的点处自动设定断点。以下,由操作员进行的对源代码的改变,亦即更改、增加或删除源代码,称为对源代码的编辑或修改。
编辑单元13包括一个源代码编辑器112,用于根据由操作员输入的编辑命令编辑源代码,一个被编辑的行表管理器115,用于存储源代码的文件名和编辑所进行的行的行号,一个源代码显示器113,用于例如在显示器屏幕上显示读出的源代码,和一个源代码文件管理器114,用于存储源代码文件。
这里,下面的一点可以适用,即分别包括在编辑单元13和调试单元12中的源代码显示器108和源代码显示器113可以是作为两者共用的同一个。
命令输入单元102从操作员接收命令,诸如“打开编辑文件命令”、“保存编辑文件命令”、“编辑命令”、“调试开始命令”、“断点设定命令”、“断点禁止命令”、“程序执行命令”、和“调试结束命令”。注意,为显示处理和有关的设定的命令对本发明不特别相关,因此省略对它们的说明。
命令分析单元103分析由命令输入单元102接收的命令,并根据该分析控制每一单元和部件,以便该命令被执行。
以下,首先说明常规已知的命令:“打开编辑文件命令”、“保存编辑文件命令”、“断点设定命令”、“断点禁止命令”、和“程序执行命令”。因为这些命令是现有技术的一部分,因此只简要说明,不给出附图。参考附图说明“编辑命令”、“调试开始命令”、和“调试结束命令”,它们是本发明的特征所在的命令。
<打开编辑文件命令>
步骤11:命令输入单元102从操作员接收一个打开编辑文件命令,该命令指定要编辑的源代码文件的名字。
步骤12:源代码编辑器112请求源代码文件管理器114在指定的文件中读源代码。
步骤13:源代码文件管理器114从存储源代码文件的记录介质中读请求的源代码,并传送读取的源代码给源代码编辑器112。
步骤14:源代码编辑器112请求源代码显示器113显示读取的源代码。
步骤15:源代码显示器113在显示器屏幕上显示请求的源代码。
<保存编辑文件命令>
步骤31:命令输入单元102从操作员接收一个保存编辑文件命令,该命令指定要保存的源代码文件的名字。
步骤32:源代码编辑器112请求源代码文件管理器114保存相应于指定文件名的源代码。
步骤33:源代码文件管理器114在记录介质中写请求的源代码。
<断点设定命令>
步骤51:命令输入单元102从操作员接收一个断点设定命令,该命令指定源代码文件的名字和要设定断点的地方的行号。更具体说,操作员通过用鼠标指点器指向在屏幕上显示的源代码的任何行并点击鼠标输入断点设定命令。作为响应,命令输入单元102接收指定行号和正被显示的源代码的文件名的断点设定命令。
步骤52:加载器105请求断点设定/禁止子单元106按照指定设定一个断点。
步骤53:断点设定/禁止子单元106参考已经加载的可执行文件中的调试信息,以便获取表示在可执行文件中要设定断点的地方的地址。
步骤54:断点设定/禁止子单元106请求断点表管理器111在断点表中记录这样获取的地址和在可执行文件中在该地址处的指令。
断点表由地址列和指令列组成,所述地址列用于存储指示在可执行文件中设定断点的地方的每一地址,指令列用于临时存储驻留在地址列中存储的地址处的每一条指令。另外,每一地址和相应的指令以升序排列。
步骤55:断点设定/禁止子单元106请求源代码显示器108以反映当前执行的命令处理的方式显示具有断点的源代码。
步骤S56:断点表管理器111在断点表中记录由断点设定/禁止子单元106请求的地址连同相应的指令。接着,断点表管理器111修改源代码,使得驻留在该地址处的指令用一条中断指令代替。
步骤57:源代码显示器108从源代码管理器114中读取请求显示的源代码文件,并显示源代码。另外,源代码显示器108请求断点显示器109显示在该指定文件中当前设定的断点。
步骤58:断点显示器109从断点表管理器111中读取用于指定的源代码文件的断点表并根据该断点表显示断点。
作为一个例子,图2表示由断点显示器109显示的断点。
如图所示,在编辑前的源代码中读为“j=500”的行被改变为“j=10”,增加读为“printf(“i=%d”,i):”,“printf(“next_i=%d”,i+1);”,和“printf(“continue¥n”);”。其结果,在编辑后的源代码中,表示断点的黑点在读为“j=10”的行的左边显示,并在读为“printf(“i=%d”,i):”的行的左边显示。
<断点禁止命令>
步骤61:命令输入单元102从操作员接收一个断点禁止命令,该命令指定要由源代码文件的名字和行号禁止的断点。更具体说,操作员通过用鼠标指点器指向在屏幕上显示的源代码的一行设定的任何断点并点击鼠标而输入断点禁止命令。作为响应,命令输入单元102接收该断点禁止命令,禁止在该行设定的断点。
步骤62:加载器105请求断点设定/禁止子单元106禁止该断点。
步骤63:断点设定/禁止子单元106参考已经加载的可执行文件中的调试信息,以便获取表示在可执行文件中指定断点驻留的地方的地址。然后断点设定/禁止子单元106请求断点表管理器111从断点表中删除要被禁止的断点的地址,连同相应指令。另外,断点设定/禁止子单元106请求源代码显示器108以反映当前执行的命令处理的方式显示带有断点的源代码。
步骤64:断点表管理器111修改可执行文件,使得曾由中断指令代替的指令恢复回到原来的位置,然后从断点表中删除该地址和指令。
步骤65:源代码显示器108从在源代码文件管理器114中的记录介质中读取请求的源代码文件,并显示这样读取的源代码文件。然后源代码显示器108请求断点显示器109显示在指定的源代码文件中当前设定的断点。
步骤66:断点显示器109从断点表管理器111中读取断点表并根据该断点表显示断点。
<程序执行命令>
步骤71:命令输入单元102从操作员接收程序执行命令,以便调试装置10执行可执行文件。
步骤72:加载器105请求执行控制器107执行可执行文件。
步骤73:执行控制器107逐条指令地解释可执行文件以执行。当碰到中断指令时,执行控制器107停止执行,请求中断指令处理器110执行该中断指令。接着,执行控制器107请求源代码显示器108显示相应于执行被停止的地方的一部分源代码。
步骤74:中断指令处理器110从断点表管理器111中取最初位于停止执行的地方的地址处的指令,并把取得的指令传送给执行控制器107,作为当程序重新起动时的第一条要执行的指令。
步骤75:源代码显示器108从源代码文件管理器114中读取请求的源代码文件以显示。然后,断点显示器109为指定的源代码文件读取断点表,并显示分别表示在源代码中相应位置处的断点的标记。
现在,在说明具有本发明的特征的命令前说明一个被编辑的行表。
图3是表示该被编辑的行表的一个例子的视图。
被编辑的行表是一个行号表,每一行号相应于源代码中操作员曾经进行编辑的一行。这样,在该表中存储的行号是要设定断点的地方。在该表中,行号以升序排列,没有重号。该表为每一源代码文件单独产生和存储。
现在,说明“编辑命令”、“调试开始命令”和“调试结束命令”。
<编辑命令>
图4是一个流程图,表示响应由命令输入单元102接收的编辑命令执行的处理。当源代码文件正由一个打开编辑文件命令显示时编辑命令有效。
步骤S301:源代码编辑器112判断调试是否已经结束。
步骤S302:当在步骤S301判定调试尚未结束时,源代码编辑器112给命令输入单元102发布一个“调试结束命令”,使得调试结束。
步骤S303:源代码编辑器112判断请求进行的编辑是删除还是增加一个换行符。删除一个换行符不仅指单独删除一个换行符,而且指涉及删除一个换行符的任何编辑。另外,增加一个换行符不仅指单独增加一个换行符,而且指涉及增加一个换行符的任何编辑。自然,有不是上述编辑中任何一个的编辑,它们是任何不删除和增加换行符而可以进行的编辑。
步骤S304:当编辑与换行符不相干时,源代码编辑器112只在被编辑的行表中记录相应于请求进行编辑的行的行号。
步骤S305:当编辑是删除一个换行符时,源代码编辑器112首先在被编辑的行表中记录相应于要进行编辑的行的行号,然后修改被编辑的行表,使得大于新记录的行号的每一行号减1。
步骤S306:当编辑是在一行的行首增加一个换行符时,源代码编辑器112修改被编辑的行表,使得不小于所请求的行号(亦即相应于请求被编辑的行的行号)的每一行号加1。
步骤S307:当编辑是在一行的末尾增加一个换行符时,源代码编辑器112修改被编辑的行表,使得大于所请求的行号的每一行号加1。
步骤S308:当编辑是在一行的中间某处,亦即既不在该行的行首也不在末尾增加一个换行符时,源代码编辑器112修改被编辑的行表,使得大于所请求的行号的每一行号加1。另外,源代码编辑器112在该被编辑的行表中记录所请求的行号和由所请求的行号加1得到的另一行号。
步骤S309:源代码编辑器112使对被显示的源代码进行请求的编辑,然后请求源代码显示器108更新源代码的显示。
步骤S310:源代码显示器108相应于进行的编辑更新源代码的显示。
以上述方式,源代码编辑器112在被编辑的行表中记录被编辑的行的行号,从而管理源代码中进行编辑的位置。
在本实施例中,一直监视对源代码的编辑,以便在每次进行编辑时更新被编辑的行表。不过,本发明不限于此,它可以适用于在所有编辑进行后通过比较编辑前的源代码和编辑后的源代码而产生一个被编辑的行表。
<调试开始命令>
图5是一个流程图,表示响应由命令输入单元102接收的调试开始命令执行的处理。注意,虽然在图5中省略,但是在步骤S400前要执行下面的步骤S41-S43。
步骤S41:当有一个源代码当前正被编辑时,加载器105发布一个保存编辑文件命令保存该源代码。然后加载器105请求可执行文件管理器104读可执行文件的最新版本。
步骤S42:可执行文件管理器104参考源代码管理器114查找该源代码文件的日期和时间,以便判断是否存在一个源代码文件,它在该可执行文件的最新版本产生之后产生或修改。
步骤S43:当在步骤S42判定,存在这样的源代码文件时,可执行文件管理器104编译该源代码以产生该可执行文件的最新版本,并把如此产生的可执行文件传送给加载器105。
另一方面,当在步骤S42判定,不存在这样的源代码文件时,可执行文件管理器104把一个在现有可执行文件中间是最新版本的一个可执行文件传送给加载器105。
步骤S400:加载器105加载传送来的可执行文件,并请求设定子单元116在该可执行文件中在相应于列在被编辑的行表中的行号的每一行设定一个断点。
步骤S401:设定子单元116判断被编辑的行表管理器115是否包括尚未读取的被编辑的行表。
步骤S402:当判定存在这样的被编辑的行表时,设定子单元116读该被编辑的行表。
步骤S403:设定子单元116判断所读取的被编辑的行表是否包括至少一个行号。
步骤S404:当判定存在至少一个行号时,设定子单元116选择列在被编辑的行号表的首行行号作为目标。设定子单元116发布一个断点设定命令,使得在源代码中在由该目标行号指定的行处设定断点。
步骤S405:设定子单元116从首行逐个检查列在被编辑的行表中的每一个行号以便判断是否尚有未被选择作为目标的行号。
步骤S406:当判定存在尚未被选择的行号时,设定子单元116选择跟随当前目标行号的一个行号作为下一目标。
步骤S407:设定子单元116发布一个断点设定命令,使得在源代码中在由该目标行号指定的行处设定断点。
步骤S408:当在每一被编辑的行上完成断点设定时,设定子单元116从被编辑的行表管理器115中删除该被编辑的行表。
以上述方式,设定子单元116顺序发布断点设定命令,指定列在被编辑的行号表中的每一行号,使得断点设定/禁止子单元106在相应于被指定的行号的行上设定断点。
在上面的说明中,在预定处理后删除被编辑的行表。反之,下面的方式也适用,即紧在根据在处理调试结束命令中的断点表产生一个被编辑的行表之前删除该断点表的不必要的部分。
<调试结束命令>
图6是一个流程图,表示响应由命令输入单元102接收的一个调试结束命令而执行的处理。
步骤S501:加载器105请求被编辑的行表管理器115根据在断点表管理器111中存储的断点表产生一个被编辑的行表。作为响应,被编辑的行表管理器115参考在加载的可执行文件中的调试信息以便变换在断点表中列出的每一断点的地址为一个文件名和相应于该断点的一个行号。然后被编辑的行表管理器115为每一文件产生一个被编辑的行表。
步骤S502:加载器105请求断点表管理器111删除该断点表,以使断点表管理器111删除该断点表。
步骤S503:加载器105卸载可执行文件。
使用上述安排,不再需要程序员在他曾经进行过某些编辑的行上设定断点。其结果,程序员从断点设定这种繁琐的过程中解脱出来,使得以高效率进行调试。另外,当由程序员手工设定断点时,程序员有可能未在他所进行过编辑的每一行上设定断点。相反,由调试装置10设定断点保证在所有编辑过的行上设定断点,使得程序的执行在每一必要的点处被检查。
实施例2
图7是一个方框图,表示根据本发明的实施例2的调试装置20。
在该图中,调试装置20在调试装置10的部件外另外包括一个分割/优化子单元617。以下,主要对不同的地方进行说明,省略与调试装置10相似的构造的说明。
图9是一个流程图,表示响应由命令输入单元102接收的调试开始命令执行的处理。
注意,虽然在图9中省略,但是在步骤S800之前执行上面参考图5说明的步骤S41-S43。另外,步骤S800-S804和S812分别和图5中的步骤S400-S404和S408基本相似。因此,省略对这些步骤的说明。下面将给出步骤S805和随后各步骤的说明。
步骤S805:分割/优化子单元617产生一个转移-目的地行表。这一步骤的详情后面参考图10给出。
这里,说明转移-目的地行表。
图8表示一个转移-目的地行表的例子,其由本实施例的调试装置20产生和使用。
一个转移-目的地行指得是这样的一行,它可以随在源代码中不紧接列在它上面的一行执行。一个转移地-目的行的例子是作为一个分支(brunch)指令的分支目标指定的行。在从首行开始的源代码中,包括转移-目的地行和驻留在该转移-目的地行和另一转移-目的地行之间的行的一组行统称为一个控制块。转移-目的地行表存储行号,它表示每一控制决的第一行在源代码中所在的地方,以便表示每一控制块的边界。
图8表示的转移-目的地行表由存储行号的列和存储转移-目的地标志的列组成,所述标志分别指表示相应行是否是一个转移-目的地行。当一个相应行是转移-目的地行时,转移-目的地标志设定为“1”,否则设定为“0”。注意,源代码的第一行总是指定为一个转移-目的地行。为每一源代码文件产生一个转移-目的地行表。
步骤S806:设定子单元116从顶部逐个检查被编辑的行表中的每个号码以判断是否存在尚未选择作为目标的行号。
步骤S807:当判定存在尚未选择作为目标的行号时,设定子单元116选择跟随当前被选择的目标行号排列的行号作为下一个目标。
步骤S808:设定子单元116参考转移-目的地行表判断相应于该下一目标的转移-目的地标志是否设定为“1”。
步骤S809:当在步骤S808的判断产生负的结果时,分割/优化子单元617判断下一目标的行号是否等于通过在当前被选择的目标的行号上加1得到的值。这是判断当前目标行和下一目标行是否是两个连续行。
步骤S810:当在步骤S808的判断产生肯定的结果或当在步骤S809的判断产生否定的结果时,分割/优化子单元617发布一个断点设定命令,使得在源代码中在下一目标行上设定一个断点。
步骤S811:分割/优化子单元617现在选择下一目标行作为目标行,并返回步骤S806。
以上述方式,分割/优化子单元617在一个是转移-目的地行的被编辑的行上设定一个断点或者在一个其行号在被编辑的行表中与紧在其前的被编辑的行的行号不相连续的被编辑的行上设定一个断点。换句话说,分割/优化子单元617既不在是转移-目的地的被编辑的行上设定断点,也不在其行号与紧在其前的被编辑的行的行号连续的被编辑行上设定断点。
注意,分割/优化子单元617在构造中可以如下简化。亦即,分割/优化子单元617可以这样构造,使得在被编辑的行表中列出的且其在转移-目的地行表中的转移-目的地标志设定为1的每一行上设定一个断点。另外,分割/优化子单元617可以这样构造,使得不在紧随源代码另一被编辑的行的被编辑的行上设定断点。
或者,可以这样构造分割/优化子单元617,使得仅在每一控制块的第一个被编辑的行上设定断点。
另外,可以这样构造分割/优化子单元617,使得在一个控制块包括一个被编辑的行的场合在该控制块的第一行上设定一个断点。这里,省略在被编辑的行上设定断点,而在该控制块的首行上设定断点。或者,可以这样构造分割/优化子单元617,使得仅在连续驻留在一个控制块中的多于两个的被编辑行中的第一行上设定断点。
图10是一个流程图,表示为产生转移-目的地行表在步骤S805执行的详细的处理。
步骤S901:分割/优化子单元617为已经读取的被编辑的行表读源代码。
步骤S902:分割/优化子单元617初始化每一变量,为以后要执行的字分析做准备。更具体说,分割/优化子单元617设定当前行为0、转移-目的地标志为1、下一行首标志为0、中间标志为0、和括号计数为-1。
步骤S903:分割/优化子单元617判断在源代码中是否存在一行,其相应于由“当前行+1”得到的行号。
步骤S904:当在步骤S903判定存在一个相应于当前行+1的行时,分割/优化子单元选择该行作为当前行。
步骤S905:分割/优化子单元617在定界符处分割当前行为字。
这里,定界符是预定的字符串,包括下面的字符。
(1) 空格
(2) 控制字符
(3) //...行末尾
(4) /*…*/
(5) “…”
(6) (,)
(7) {,}
(8) :
注意,这里使用的“…”指示任意字符串。在上面的定界符中,(6)、(7)和(8)特别称为字定界符。每一字由两种方式构成: (i)一个字符或由定界符分割的字符串和(ii)定界符。图19和20分别表示源代码分割为字的例子。
步骤S906:分割/优化子单元617从当前行首顺序检测字。
步骤S907:分割/优化子单元617判断是否检测到任何字。
步骤S908:如果在步骤S907判定检测到一个字,则分割/优化子单元617执行字分析,其在后面参考图11A详细说明。
步骤S909:分割/优化子单元617继续检测当前行查找另一个字,和返回步骤S907。
步骤S910:当在步骤S907判定未检测到字时,分割/优化子单元617分配在转移-目的地标志中保存的值给相应于当前行的转移-目的地标志,接着设定该转移-目的地标志为0。然后,处理返回到步骤S903。
图11A是一个流程图,表示在步骤S908执行的字分析的细节。在字分析中,每一个字被分类到组1-6和“其它”组中,并根据该分类经受不同的处理。图11B表示分类在组1-6中的字。
步骤S1001:分割/优化子单元617判断括号计数是否大于-1。
步骤S1008:当在步骤S1001判定括号计数不大于-1并且该字被分类到组1时,亦即该字包括“:”或“}”,分割/优化子单元617设定下一行首标志为1。
步骤S1009:当在步骤S1001判定括号计数不大于-1和该字被分类到组2时,分割/优化子单元617设定括号计数为0和中间标志为1。
步骤S1010:当在步骤S1001判定括号计数不大于-1和该字被分类到组3时,分割/优化子单元617设定下一行首标志和中间标志两者都为1。
步骤S1011:当在步骤S1001判定括号计数不大于-1和该字被分类到组5时,分割/优化子单元617设定中间标志为0。
步骤S1012:当在步骤S1001判定括号计数不大于-1和该字被分类到组4时,分割/优化子单元617进一步判断下一行首标志是否设定为1。
步骤S1013:当在步骤S1012判定下一行首标志设定为1时,分割/优化子单元617设定转移-目的地标志为1,和下一行首标志为0。
步骤S1014:分割/优化子单元617然后判断中间标志是否设定为1。
步骤S1015:当在步骤S1014判定中间标志设定为1时,分割/优化子单元617设定下一行首标志为1和中间标志为0。
注意,当在步骤S1001判定括号计数不大于-1和字不归于组1-5中的任何一组时,不执行任何另外的处理。
步骤S1002:当在步骤S1001判定括号计数大于-1时,分割/优化子单元617判断该字是否分类到组6。
步骤S1003:当在步骤S1002判定该字分类到组6时,分割/优化子单元617进一步判断该字是否包括“(”。
步骤S1004:当在步骤S1003判定该字包括“(”时,分割/优化子单元617给括号计数增加1。
步骤S1005:当在步骤S1003判定该字不包括“(”时,分割/优化子单元617使括号计数减1。
步骤S1006:分割/优化子单元617判断括号计数是否等于0。
步骤S1007:当在步骤S1006判定括号计数等于0时,分割/优化子单元617设定括号计数等于-1。
注意,上述组1-6的分类适合用C语言写的源代码。为适合用Java写的源代码,组1另外包括“catch”和“finally”。
在图10和11所示流程图中,字从源代码首行顺序分析,在下述情况1和2的任何一种情况下,一行被确定为是一个转移-目的地。
情况1:分割/优化子单元617从源代码的开始顺序分析字。要选择的是这样的行,其中组4中的字“;”在组1中的字“:”或“}”后首先出现或在组3中的字“else”出现。这样选择的行指定作为一个转移-目的地。
情况2:分割/优化子单元617从源代码的开始顺序分析字。要选择的是这样的行,其中组4中的字“;”在组4中的字“;”后首先出现,同时中间标志被设定为1。这样选择的行指定作为一个转移-目的地。
这里,中间标志被设定为1的状态指示,在组3或4中的字之一,亦即“if”、“for”、“while”和“else”前面已经出现。注意,在包括“if”、“for”和“while”的条件表达式内的字被舍弃,使得在情况2中要选择的行不是条件表达式自身。
在上述情况1或2中,当有一个“{”或“}”时,第一个被发现包括组4中的字“;”的行被视为是一个转移-目的地,即使它不是在“if”、“for”或“while”之后发现。这可以导致产生比实际有的额外多的控制块。然而,有这样的好处,所有转移-目的地使用相对简单的算法可靠发现而不会遗漏任何转移-目的地行。
实施例3
图12是一个方框图,表示根据本发明的实施例3的调试装置30。
在该图中,在调试装置20的部件以外,调试装置30另外包括一个错误页表管理器1118。以下,主要对发现的不同之处进行说明,省略对相似于调试装置20的构造的说明。
图13表示一个错误页表的例子。
错误页表包括多个错误页,每一错误页包括一个唯一标识该错误页的错误页号,一个注解,和一个重复数。
注解由下面关于至少一个断点的信息组成。亦即,有关包括断点被设定的行的源代码文件的名字的、该行的行号的和由操作员输入的注解的信息。对一个断点的每一注解例如是关于所进行的编辑并由操作员在设定该断点时输入的信息。另外,可以做这样的安排,使得注解可以另外包括自动输入的数据诸如编辑日期和/或为进行该编辑占用的时间期间。
重复数表示执行在该断点驻留的指令的次数。
图14是一个流程图,表示响应由命令输入单元102接收的调试结束命令执行的处理。
步骤S1301:加载器105请求被编辑的行表管理器115参考存储在断点表管理器111中的断点表产生一个被编辑的行表。接着,被编辑的行表管理器115参考在加载的可执行文件中的调试信息以便获取文件名和相应于在断点表中列出的每一断点的行号。然后被编辑的行表管理器115为每一源代码文件建立一个被编辑的行表。
步骤S1302:加载器105请求断点表管理器111删除该断点表,以使断点表管理器111删除断点表。
步骤S1303:加载器105给在错误页中列出的每一断点地址分配0。
图15是一个流程图,表示响应由命令输入单元102接收的调试开始命令执行的处理。
在该图中,在步骤S801前和在步骤S801的判断产生“是”后执行的步骤以及步骤S812和在图9所示它们相应的步骤相同。因此,流程图15部分省略。另外,省略对这些同样的步骤的说明,下面对步骤S1401和1402说明,它们是与图9所示的任何步骤不同的步骤。
步骤S1401:加载器105判断是否存在一个不是最后错误页的错误页,其内所列断点地址保存持值0。
步骤S1402:当在步骤S401的判断产生肯定结果时,加载器105为该错误页执行图18所示错误页关闭处理。
图16是一个流程图,表示响应由命令输入单元102接收的断点设定命令执行的处理。
步骤S1501:当命令输入单元102接收一个断点设定命令时,加载器105请求断点设定/禁止子单元106设定一个断点。作为响应,断点设定/禁止子单元106参考在加载的可执行文件中的调试信息以获取指定在可执行文件中要设定断点的行所在的位置的地址。
步骤S1502:错误页表管理器1118判断这样指定的断点地址要记录到其中的一个错误页是否是一个尚未列在错误页表里的新错误页。
步骤S1503:当在步骤S1502判定,要记录该断点地址的错误页是新的时,错误页表管理器1118在该错误页中记录该断点地址,该错误页列在错误页表的末尾。另外,错误页表管理器118在该错误页中记录一个文件名和相应于该断点地址的行号。
步骤S1504:错误页表管理器1118在这样记录的文件名和行号旁边记录由操作员输入的注解。
步骤S1505:错误页表管理器1118在错误页表的末尾产生一个新错误页。在这一阶段,新产生的错误页只包括一个顺序分配的错误页号。
步骤S1506:当在步骤S1502判定,要记录断点地址的错误页已经列在错误页表中时,错误页表管理器1118查阅该错误页表以检测目标是记录断点地址的错误页表。
步骤S1507:错误页表管理器1118在这样检测到的错误页中写断点设定地址,然后写文件名和相应于该断点地址的行号。
步骤S1508:错误页表管理器1118在这样写的文件名和行号旁边写由操作员输入的注解。
步骤S1509:错误页表管理器1118判断是否存在另一其中要记录断点地址的错误页。
步骤S1510:断点表管理器111在断点表中记录该断点地址连同位于该地址处的指令,然后用中断指令代替该指令。
步骤S1511:源代码显示器108从源代码文件管理器114读请求的源代码文件并显示如此读取的文件。源代码显示器108然后请求断点显示器109显示在指定文件中当前设定的断点。作为响应,断点显示器109从断点表管理器111中读指定的源代码文件的断点信息,并根据读取的信息显示断点。
图17是一个流程图,表示响应由命令输入单元102接收的断点禁止命令执行的处理。
步骤S1601:加载器105请求断点设定/禁止子单元106禁止由该命令指定的断点。作为响应,断点设定/禁止子单元106参考加载的可执行文件以获取要被禁止的断点的地址。然后断点设定/禁止子单元106请求错误页表管理器1118从错误页中删除要被禁止的断点的地址。接着,断点设定/禁止子单元106请求断点表管理器111修改断点表,使得要被禁止的断点的地址连同相应指令一起被删除。最后,断点设定/禁止子单元106请求源代码显示器108更新显示,使得正被显示的源代码与删除后的源代码一致。
步骤S1602:错误页表管理器1118选择列在错误页表首行的错误页作为目标。
步骤S1603:错误页表管理器1118然后查阅该目标错误页,从记录在其内的断点表地址中间检测要被禁止的断点的地址。
步骤S1604:错误页表管理器1118判断要被禁止的断点的地址是否在步骤S1603在目标错误页中检测到。
步骤S1605:当判定要被禁止的断点的地址在目标错误页中被检测到时,错误页表管理器1118选择该错误页作为目标。
步骤S1606:错误页表管理器1118从目标错误页删除要被禁止的断点的地址。
步骤S1607:错误页表管理器1118判断目标错误页是否不再存储任何断点地址。
步骤S1608:当判定目标错误页还存储有断点地址时,错误页表管理器1118进一步判断在目标错误页旁边是否存在另一个错误页。
步骤S1609:当在步骤S1608判定存在下一错误页时,错误页表管理器1118现在指定该下一错误页作为目标。
步骤S1610:当在步骤S1607判定目标错误页不再存储任何断点地址时,错误页表管理器1118执行图18所示错误页关闭处理。
步骤S1611:断点表管理器111恢复原来位于要被禁止的断点的地址处的指令,然后修改断点表,以便删除该地址和指令。
步骤S1612:源代码显示器108从源代码管理器114读指定的源代码文件,以显示。源代码显示器108然后请求断点显示器109显示在指定的源代码文件中当前设定的断点。作为响应,断点显示器109从断点表管理器111中读指定文件的断点信息,并根据读取的信息显示断点。
图18是一个流程图,详细表示错误页关闭处理。
步骤S1701:错误页管理器118存储测试结果,然后关闭该错误页。
步骤S1702:错误页表管理器118然后从错误页表中删除关闭的错误页。
使用上述构造,调试装置30为每一断点单独管理错误页,它允许程序员高效为所进行的编辑添加注解。
虽然参考附图以举例方式充分说明了本发明,但是应该注意,对于本领域的技术人员来说各种改变和修改是显然的。因此,除非这些改变和修改离开了本发明的范围,否则它们应该被认为被包含在本发明之内。
Claims (17)
1.一种断点设定装置,包括:
一个加载单元,可操作加载相应于源代码产生的目标代码;
一个存储单元,可操作存储表示组成源代码的每一部件和在目标代码中的相应位置之间的关系的信息;
一个获取单元,当对源代码进行特定的编辑时,可操作自动获取和存储指定经受特定编辑的部件的编辑信息;和
一个设定单元,可操作自动在目标代码中在相应于由编辑信息指定的部件的位置处设定断点。
2.权利要求1的断点设定装置,其中,
每一部件是组成源代码的一行,并且每一行可以由分配给它的行号唯一标识,
存储单元存储源代码的每一行号和在目标代码中的相应位置之间的关系,以及
获取单元获取作为编辑信息的标识源代码中经受特定编辑的行的行号。
3.权利要求2的断点设定装置,其中,
特定编辑是删除换行符,和
所述断点设定装置另外包括一个更新单元,当编辑源代码删除一个换行符时,可操作更新在获取单元中存储的编辑信息,使得大于指定的行号的每一行号减1。
4.权利要求2的断点设定装置,另外包括一个更新单元,当编辑源代码在一行的行首增加一个换行符时,可操作更新在获取单元中存储的编辑信息,使得不小于标识被编辑的行的行号的每一行号加1。
5.权利要求2的断点设定装置,另外包括一个更新单元,当编辑源代码在一行的末尾增加一个换行符时,可操作更新在获取单元中存储的编辑信息,使得大于标识被编辑的行的行号的每一行号加1。
6.权利要求2的断点设定装置,其中,
特定编辑是在源代码的一行的中间增加一个换行符,和
断点设定装置另外包括一个更新单元,当编辑源代码在一行的中间增加一个换行符时,可操作更新在获取单元中存储的编辑信息,使得大于指定的行号的每一行号加1,并且通过给指定的行号加1获得的行号被另外存储在编辑信息中。
7.权利要求2的断点设定装置,其中,
特定编辑是修改字符串而不对换行符进行任何修改。
8.权利要求2的断点设定装置,其中,
源代码可以用控制块构成,控制块又由多个行构成,
获取单元另外存储表示每一控制块的边界的块边界信息,每一边界由一个行号指定,以及
设定单元在目标代码中在相应于由块边界信息表示的每一控制块的第一行的位置设定断点。
9.权利要求2的断点设定装置,其中,当在获取单元中存储的编辑信息包括多个连续的行号时,设定单元在目标代码中只在相应于该多个行号的第一行号的位置设定断点。
10.权利要求1的断点设定装置,另外为由设定单元设定的每一断点产生错误页,并把所产生的错误页通过用户接口提交给用户,所述错误页包括用户输入的关于对源代码在相应于断点的部件进行的编辑的信息。
11.权利要求10的断点设定装置,另外在产生错误页时,从调试程序获取由该调试程序解码和执行源代码被编辑部件的次数的计数,并且将该计数连同用户输入的信息一起提交给用户。
12.权利要求1的断点设定装置,其中,获取单元仅当没有其它指定经受特定编辑的部件的编辑信息已被获取和存储时才存储指定该同一部件的编辑信息。
13.权利要求2的断点设定装置,其中,
获取单元另外存储表示每一控制块的边界的块边界信息,每一边界由一个行号指定,并且
设定单元在目标代码中只在相应于从每一控制块首行开始的第一特定编辑行的位置设定断点。
14.一种断点设定方法,包括:
加载相应于源代码产生的目标代码的加载步骤;
存储表示组成源代码的每一部件和在目标代码中相应位置之间的关系的信息的存储步骤;
当对源代码进行特定的编辑时,自动获取和存储指定经受特定编辑的部件的编辑信息的获取步骤;和
自动在目标代码中在相应于由编辑信息指定的部件的位置设定断点的设定步骤。
15.在一种用于写和编辑可执行代码的计算机系统中,对自动断点设定装置所做的改进,该装置可以在编辑/调试操作期间被驱动,包括:
一个存储单元,可操作存储预定数量要编辑的代码;
一个显示单元,可操作显示至少一部分代码,以允许由程序员编辑该代码;
一个获取单元,可操作监视对显示的代码的任何修改并自动获取和存储相对于初始存储的预定数量的代码的修改和修改位置;
一个设定单元,响应获取单元,可操作在最后修改过的数量的代码中自动设定断点,指示所进行的修改,从而当程序员编辑存储的数量的代码时允许计算机系统自动提供预定数量代码的位置和修改的表示,而不需由程序员输入另外的命令。
16.权利要求15的断点设定装置,其中,存储单元存储表示源代码行和在目标代码中的相应位置之间关系的数据,并且当获取单元获取标识源代码中被修改的行的编辑信息时,设定单元在目标代码中在相应于源代码中一行的位置自动设定一个断点。
17.权利要求16的断点设定装置,另外包括一个错误页产生器单元,可操作为由设定单元设定的每一断点产生一个错误页,并把产生的错误页通过用户接口提交给用户,错误页包括用户输入的关于对相应于每一设定的断点的源代码的行进行的编辑的信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31372/2002 | 2002-02-07 | ||
JP2002031372 | 2002-02-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1437110A true CN1437110A (zh) | 2003-08-20 |
Family
ID=27606521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03104230A Pending CN1437110A (zh) | 2002-02-07 | 2003-02-08 | 用于断点设定的装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7134115B2 (zh) |
EP (1) | EP1335292A3 (zh) |
CN (1) | CN1437110A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435112C (zh) * | 2005-11-21 | 2008-11-19 | 洛阳卓航测控设备有限责任公司 | 单片机开发系统用户软件程序断点设置方法 |
CN104346273A (zh) * | 2013-07-29 | 2015-02-11 | 国际商业机器公司 | 用于调试的方法和系统 |
Families Citing this family (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192427B1 (en) * | 1997-05-02 | 2001-02-20 | Texas Instruments Incorporated | Input/output buffer managed by sorted breakpoint hardware/software |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US8160864B1 (en) | 2000-10-26 | 2012-04-17 | Cypress Semiconductor Corporation | In-circuit emulator and pod synchronized boot |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US6724220B1 (en) | 2000-10-26 | 2004-04-20 | Cyress Semiconductor Corporation | Programmable microcontroller architecture (mixed analog/digital) |
US7406674B1 (en) | 2001-10-24 | 2008-07-29 | Cypress Semiconductor Corporation | Method and apparatus for generating microcontroller configuration information |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US8042093B1 (en) | 2001-11-15 | 2011-10-18 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US6971004B1 (en) | 2001-11-19 | 2005-11-29 | Cypress Semiconductor Corp. | System and method of dynamically reconfiguring a programmable integrated circuit |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US7844437B1 (en) | 2001-11-19 | 2010-11-30 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US7185321B1 (en) * | 2002-03-29 | 2007-02-27 | Cypress Semiconductor Corporation | Method and system for debugging through supervisory operating codes and self modifying codes |
US7308608B1 (en) | 2002-05-01 | 2007-12-11 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US8020148B2 (en) * | 2002-09-23 | 2011-09-13 | Telefonaktiebolaget L M Ericsson (Publ) | Bi-directional probing and testing of software |
US8225293B2 (en) * | 2003-02-13 | 2012-07-17 | Accurate Technologies Inc. | Method for supporting calibration parameters in an ECU |
US7650596B2 (en) * | 2003-02-13 | 2010-01-19 | Accurate Technologies Inc. | Method for ECU calibration and diagnostics development |
US7401323B2 (en) * | 2003-04-21 | 2008-07-15 | Microsoft Corporation | Just-My-Code debugging |
US7272826B2 (en) * | 2003-05-08 | 2007-09-18 | International Business Machines Corporation | Hierarchical breakpoint groups |
US7237226B2 (en) * | 2003-05-09 | 2007-06-26 | Intentional Software Corporation | Method and system for storing pending changes to data |
US7412697B2 (en) * | 2003-06-25 | 2008-08-12 | International Business Machines Corporation | High-level language, architecture-independent probe program compiler |
US7383540B2 (en) * | 2003-12-12 | 2008-06-03 | International Business Machines Corporation | Altering execution flow of a computer program |
US7222264B2 (en) * | 2004-03-19 | 2007-05-22 | Intel Corporation | Debug system and method having simultaneous breakpoint setting |
US7295049B1 (en) | 2004-03-25 | 2007-11-13 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US7331002B2 (en) * | 2004-06-17 | 2008-02-12 | Intel Corporation | Navigating breakpoints in a program in a debugging mode |
US8271955B1 (en) | 2004-07-23 | 2012-09-18 | Green Hille Software, Inc. | Forward post-execution software debugger |
US8136096B1 (en) * | 2004-07-23 | 2012-03-13 | Green Hills Software, Inc. | Backward post-execution software debugger |
US8132159B1 (en) | 2004-07-23 | 2012-03-06 | Green Hills Software, Inc. | Post-execution software debugger with event display |
US8069436B2 (en) | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
US8286125B2 (en) | 2004-08-13 | 2012-10-09 | Cypress Semiconductor Corporation | Model for a hardware device-independent method of defining embedded firmware for programmable systems |
US7882492B2 (en) * | 2004-09-17 | 2011-02-01 | Oracle America, Inc. | Intelligent computer program debugger, and system and method for implementing the same |
US7332976B1 (en) | 2005-02-04 | 2008-02-19 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US7472378B2 (en) * | 2005-02-23 | 2008-12-30 | International Business Machines Corporation | Breakpoint management and reconciliation for embedded scripts in a business integration language specified program process |
US7400183B1 (en) | 2005-05-05 | 2008-07-15 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
US7917894B2 (en) * | 2005-06-03 | 2011-03-29 | International Business Machines Corporation | Constraining source code and objects for analysis tools |
US8089461B2 (en) | 2005-06-23 | 2012-01-03 | Cypress Semiconductor Corporation | Touch wake for electronic devices |
US7721196B2 (en) * | 2005-12-07 | 2010-05-18 | Microsoft Corporation | Arbitrary rendering of visual elements on a code editor |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US8225286B2 (en) * | 2006-05-23 | 2012-07-17 | Microsoft Corporation | Debugging interpreted input |
US7895569B2 (en) * | 2006-08-30 | 2011-02-22 | Research In Motion Limited | System and method for implementing software breakpoints in an interpreter |
US9317636B1 (en) * | 2006-12-11 | 2016-04-19 | Synopsys, Inc. | System and method for stopping integrated circuit simulation |
US9645915B2 (en) | 2006-12-27 | 2017-05-09 | The Mathworks, Inc. | Continuous evaluation of program code and saving state information associated with program code |
US20130024844A1 (en) * | 2006-12-27 | 2013-01-24 | The Mathworks, Inc. | Continuous evaluation of program code and saving state information associated with program code |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US8266575B1 (en) | 2007-04-25 | 2012-09-11 | Cypress Semiconductor Corporation | Systems and methods for dynamically reconfiguring a programmable system on a chip |
US8065653B1 (en) | 2007-04-25 | 2011-11-22 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
US9032374B2 (en) * | 2008-04-03 | 2015-05-12 | International Business Machines Corporation | Metadata-integrated debugger |
US20090254888A1 (en) * | 2008-04-07 | 2009-10-08 | International Business Machines Corporation | Debug tours for software debugging |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US8806436B2 (en) * | 2010-04-30 | 2014-08-12 | Cray Inc. | Systems and methods for debugging applications using dual code generation |
US8843899B2 (en) | 2010-10-29 | 2014-09-23 | International Business Machines Corporation | Implementing a step-type operation during debugging of code using internal breakpoints |
US9015676B2 (en) | 2010-10-29 | 2015-04-21 | International Business Machines Corporation | Varying removal of internal breakpoints during debugging of code |
US8806447B2 (en) * | 2010-10-29 | 2014-08-12 | International Business Machines Corporation | Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints |
US8635598B2 (en) * | 2011-06-20 | 2014-01-21 | Microsoft Corporation | Automatic code decoration for code review |
US9009678B2 (en) * | 2011-06-28 | 2015-04-14 | International Business Machines Corporation | Software debugging with execution match determinations |
US9483268B2 (en) | 2012-03-16 | 2016-11-01 | International Business Machines Corporation | Hardware based run-time instrumentation facility for managed run-times |
US9405541B2 (en) * | 2012-03-16 | 2016-08-02 | International Business Machines Corporation | Run-time instrumentation indirect sampling by address |
US9430238B2 (en) | 2012-03-16 | 2016-08-30 | International Business Machines Corporation | Run-time-instrumentation controls emit instruction |
US9442824B2 (en) | 2012-03-16 | 2016-09-13 | International Business Machines Corporation | Transformation of a program-event-recording event into a run-time instrumentation event |
US9280447B2 (en) | 2012-03-16 | 2016-03-08 | International Business Machines Corporation | Modifying run-time-instrumentation controls from a lesser-privileged state |
US9465716B2 (en) | 2012-03-16 | 2016-10-11 | International Business Machines Corporation | Run-time instrumentation directed sampling |
US9471315B2 (en) | 2012-03-16 | 2016-10-18 | International Business Machines Corporation | Run-time instrumentation reporting |
US9250902B2 (en) | 2012-03-16 | 2016-02-02 | International Business Machines Corporation | Determining the status of run-time-instrumentation controls |
US9454462B2 (en) | 2012-03-16 | 2016-09-27 | International Business Machines Corporation | Run-time instrumentation monitoring for processor characteristic changes |
US9411591B2 (en) | 2012-03-16 | 2016-08-09 | International Business Machines Corporation | Run-time instrumentation sampling in transactional-execution mode |
US9158660B2 (en) | 2012-03-16 | 2015-10-13 | International Business Machines Corporation | Controlling operation of a run-time instrumentation facility |
US9367316B2 (en) | 2012-03-16 | 2016-06-14 | International Business Machines Corporation | Run-time instrumentation indirect sampling by instruction operation code |
CN102968369B (zh) * | 2012-03-23 | 2015-02-04 | 中国科学院计算技术研究所 | 一种动态断点的自动生成方法及系统 |
US8990781B2 (en) * | 2012-06-04 | 2015-03-24 | International Business Machines Corporation | Synchronization point visualization for modified program source code |
CN103019697A (zh) * | 2012-11-22 | 2013-04-03 | 福建天晴数码有限公司 | 一种lua脚本的编辑插件 |
US9164871B2 (en) * | 2013-05-17 | 2015-10-20 | International Business Machines Corporation | Evaluation of statement-level breakpoints |
US9122792B2 (en) * | 2013-05-17 | 2015-09-01 | International Business Machines Corporation | Step over operation for machine code function calls |
US10339229B1 (en) | 2013-05-31 | 2019-07-02 | Cadence Design Systems, Inc. | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system |
US9053228B1 (en) | 2013-10-22 | 2015-06-09 | The Mathworks, Inc. | Determining when to evaluate program code and provide results in a live evaluation programming environment |
US9690686B1 (en) * | 2014-03-31 | 2017-06-27 | Cadence Design Systems, Inc. | Method for setting breakpoints in automatically loaded software |
US9152536B1 (en) * | 2014-05-19 | 2015-10-06 | International Business Machines Corporation | Validating correctness of expression evaluation within a debugger |
US11487561B1 (en) | 2014-12-24 | 2022-11-01 | Cadence Design Systems, Inc. | Post simulation debug and analysis using a system memory model |
US10802852B1 (en) | 2015-07-07 | 2020-10-13 | Cadence Design Systems, Inc. | Method for interactive embedded software debugging through the control of simulation tracing components |
US10534693B2 (en) * | 2017-05-04 | 2020-01-14 | Microsoft Technology Licensing, Llc | Temporary de-optimization of target functions in a cloud debugger |
US10613964B2 (en) | 2017-05-04 | 2020-04-07 | Microsoft Technology Licensing, Llc | Conditional debugging of server-side production code |
US10678677B1 (en) | 2019-01-10 | 2020-06-09 | Red Hat Israel, Ltd. | Continuous debugging |
CN114747189B (zh) * | 2019-11-25 | 2024-07-09 | 瑞典爱立信有限公司 | 用于在基于vnf的环境中替换vnfm的技术 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560009A (en) * | 1990-09-21 | 1996-09-24 | Hewlett-Packard Company | Generating symbolic debug information by merging translation and compiler debug information |
JP2752827B2 (ja) | 1992-01-30 | 1998-05-18 | 日本電気アイシーマイコンシステム株式会社 | デバッガ処理方式 |
US5675803A (en) * | 1994-01-28 | 1997-10-07 | Sun Microsystems, Inc. | Method and apparatus for a fast debugger fix and continue operation |
JPH08272648A (ja) | 1994-12-29 | 1996-10-18 | Hitachi Ltd | デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置 |
US6091896A (en) * | 1995-12-22 | 2000-07-18 | Hewlett-Packard Company | Debugging optimized code using data change points |
US5732210A (en) * | 1996-03-15 | 1998-03-24 | Hewlett-Packard Company | Use of dynamic translation to provide fast debug event checks |
US6760903B1 (en) * | 1996-08-27 | 2004-07-06 | Compuware Corporation | Coordinated application monitoring in a distributed computing environment |
US6314558B1 (en) * | 1996-08-27 | 2001-11-06 | Compuware Corporation | Byte code instrumentation |
US6202199B1 (en) * | 1997-07-31 | 2001-03-13 | Mutek Solutions, Ltd. | System and method for remotely analyzing the execution of computer programs |
JPH11194957A (ja) * | 1998-01-07 | 1999-07-21 | Matsushita Electric Ind Co Ltd | デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体 |
US6249907B1 (en) * | 1998-03-24 | 2001-06-19 | International Business Machines Corporation | Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program |
US6249906B1 (en) * | 1998-06-26 | 2001-06-19 | International Business Machines Corp. | Adaptive method and system to minimize the effect of long table walks |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US6311326B1 (en) * | 1999-01-04 | 2001-10-30 | Emc Corporation | Online debugging and tracing system and method |
JP2000305812A (ja) | 1999-04-19 | 2000-11-02 | Fujitsu Ltd | 再試験手順編集方式、再試験手順編集方式を適用したシステム、及び、再試験手順編集プログラムを記録したコンピュータ読み取り可能記録媒体 |
US6543049B1 (en) * | 1999-09-03 | 2003-04-01 | International Business Machines Corporation | Ranked break points and method for debugging a computer program |
US6795963B1 (en) * | 1999-11-12 | 2004-09-21 | International Business Machines Corporation | Method and system for optimizing systems with enhanced debugging information |
US7058928B2 (en) * | 1999-12-23 | 2006-06-06 | Identify Software Ltd. | System and method for conditional tracing of computer programs |
US6634020B1 (en) * | 2000-03-24 | 2003-10-14 | International Business Machines Corporation | Uninitialized memory watch |
US6728954B1 (en) * | 2000-06-30 | 2004-04-27 | Motorola, Inc. | Method for allowing execution management of optimized code |
US7086033B2 (en) * | 2002-04-25 | 2006-08-01 | International Business Machines Corporation | Software debugger having a monitor for monitoring conditional statements within a software program |
-
2003
- 2003-02-05 US US10/358,827 patent/US7134115B2/en active Active
- 2003-02-06 EP EP03250765A patent/EP1335292A3/en not_active Withdrawn
- 2003-02-08 CN CN03104230A patent/CN1437110A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435112C (zh) * | 2005-11-21 | 2008-11-19 | 洛阳卓航测控设备有限责任公司 | 单片机开发系统用户软件程序断点设置方法 |
CN104346273A (zh) * | 2013-07-29 | 2015-02-11 | 国际商业机器公司 | 用于调试的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20030149961A1 (en) | 2003-08-07 |
US7134115B2 (en) | 2006-11-07 |
EP1335292A2 (en) | 2003-08-13 |
EP1335292A3 (en) | 2007-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1437110A (zh) | 用于断点设定的装置和方法 | |
CN1722108A (zh) | 磁盘驱动器、其控制方法以及磁盘伪造的探测方法 | |
CN1306441C (zh) | 数据处理方法与装置 | |
CN1190741C (zh) | 用于支持数据事务的设备和方法 | |
CN1601483A (zh) | 一种基于脚本解释工具的自动化软件测试系统 | |
CN1293465C (zh) | Gui显示装置及光标或gui组件动画显示处理方法 | |
CN1578949A (zh) | 数据对象导向的储存系统 | |
CN1135071A (zh) | 存储媒体再现方法及装置 | |
CN1680959A (zh) | 进程编辑设备和方法以及进程管理设备和方法 | |
CN1315017A (zh) | 包含内部引用的两种版本数据表格之间的差别提取 | |
CN1041839A (zh) | 包含有在二个目标之间进行数据传送的快照设施的目标管理设施 | |
CN1858786A (zh) | 一种电子文档格式化批注系统与方法 | |
CN1815612A (zh) | 信息处理装置、方法和程序 | |
CN1969272A (zh) | 自动生成内容的导入 | |
CN1724980A (zh) | 存储系统 | |
CN1821956A (zh) | 用现有内容生成用于执行任务的活动内容向导可执行文件 | |
CN1677365A (zh) | 通过属性控制的测试实例继承 | |
CN1752947A (zh) | 存储装置、存储控制方法,以及计算机产品 | |
CN1748214A (zh) | 信息处理装置和方法、及程序 | |
CN1474979A (zh) | 用于专家系统的定制规则系统和方法 | |
CN1808613A (zh) | 重放装置、重放方法及程序 | |
CN1613047A (zh) | 文件系统外壳 | |
CN1680942A (zh) | 文档组分析设备、文档组分析方法及文档组分析系统 | |
CN1203430C (zh) | 数据管理系统和数据管理方法 | |
CN1653546A (zh) | 记录重放系统、记录重放方法、程序、及记录媒体 |
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: 20030820 |