admin管理员组

文章数量:1538724

2024年6月15日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.5

(22)申请日 2004.06.21

(71)申请人 微软公司

地址 美国华盛顿州

(72)发明人 J·K·哈塞尔登 B·J·哈特曼

(74)专利代理机构 上海专利商标事务所

代理人 李家麟

(51)

G06F11/36

权利要求说明书 说明书 幅图

(10)申请公布号 CN 1573713 A

(43)申请公布日 2005.02.02

(54)发明名称

可插元件上的断点调试

(57)摘要

提供了一种可插拔部件断点的调

试。在一个具有扩展的可插拔部件的计算

环境中,提供一种系统和方法在部件运行

期间在不同的点设置断点,以便可以发

现、跟踪、和解决错误。在一个示出的实

施例中,计算环境包括了客户端、运行时

间和任务。操作中,客户端和运行时间和

任务进行通信以执行调试操作。运行期间

任务和客户端通信并设置断点。当遇到断

点时任务中止,说明任务执行中出现了问

题,这样客户端能够执行调试。直到满意

后,客户端恢复运行期间的任务操作。

法律状态

法律状态公告日

法律状态信息

法律状态

权 利 要 求 说 明 书

1.对象模型调试方法,包括:

通过执行环境的调试接口揭示一组断点;

以预定的间隔检查断点的状态;和

响应中止和恢复的请求。

2.根据权利要求1所述的方法,进一步包括在信息包配置部件和可插拔部件之间进

行通信。

3.根据权利要求1所述的方法,进一步包括由调试接口接收输入以处理,所述输入

指示用于执行和配置信息包的指令。

4.根据权利要求1所述的方法,进一步包括在至少一个任务上设置断点。

5.根据权利要求4所述的方法,进一步包括任务执行期间任务遇到设置断点。

6.根据权利要求5所述的方法,进一步包括将断点传送给调试接口。

7.根据权利要求6所述的方法,进一步包括在遇到设置断点前由调试接口分析所述

任务的状态。

8.根据权利要求7所述的方法,进一步包括由调试接口恢复任务。

9.一种计算机可读媒体,该媒体具有让计算机执行以下任务指令:

通过执行环境的调试接口揭示一组断点;

以预定的间隔检查断点的状态;和

响应中止和恢复的请求。

10.对象模型调试方法,包括:

提供一接口管理器,所述接口管理器和所述对象模型的一个或多个部件进行通信;

确定断点的位置;

执行运行时间以遇到断点。

11.根据权利要求10所述的方法,进一步包括执行信息包。

12.根据权利要求11所述的方法,进一步包括执行由于信息包执行而产生的至少一

个任务。

13.根据权利要求10所述的方法,所述确定步骤包括由接口管理器设置断点。

14.根据权利要求10所述的方法,进一步包括根据遇到的断点中止包含断点的对象

模型。

15.根据权利要求14所述的方法,进一步包括中止时分析对象模型部件以确定是否

存在运行时间问题。

16.根据权利要求14所述的方法,进一步包括恢复中止的对象模型部件。

17.一种计算机可读媒体,具有让计算机执行以下任务的指令:

提供一接口管理器,所述接口管理器和对象模型的一个或多个部件进行通信;

确定断点的位置;

执行运行时间以遇到断点。

18.用于调试可插拔部件中的断点的系统,包括:

调试接口,能够在运行期间和可插拔部件进行通信以观察部件的行为并且控制部件;

断点,在可插拔部件中设置所述断点以便在运行期间当遇到断点时,调试接口能够

中止和/或恢复可插拔部件的操作,来观察可插拔部件的操作。

19.根据权利要求18所述的系统,所述的调试接口在可插拔部件中设置断点。

20.根据权利要求19所述的系统,所述调试接口显示可插拔部件在运行期间和中止

期间的状态。

说 明 书

发明领域

本发明涉及调试器,尤其是对象模型中可插拔元件的断点调试。

发明的背景

调试通常但不总是涉及调试器的使用,强大的工具可以允许编程者观察程序运行性

能的,并确定语义错误的所在位置。可以用特定调试特征组成语言及其相关库。当

多数编程者通过增加调用输出功能,从而试图从它们的代码中分离出问题的时候,

首先进行调试。这是非常合理的调试技术,但是一旦定位和修改了问题,所有这些

额外的功能调用必须从代码中移动。可能是这样的情况,增加新的代码甚至是一个

单独的调用,这种添加改变了正在调试的代码性能。

另一种可选的方法是使用调试器和读取分析有问题和错误代码的计算应用程序。在

使用调试器的方法中,编程者能够检查程序中变量的内容,而不用插入额外的调用

来输出这些值。另外,借助于调试器,可以在程序代码中插入断点在重要点停止执

行。当程序中止时(处在中断模式),使用调试设备(例如监视窗口)来检查局部变量

和其它相关的数据。在中断模式下不仅可以查看内容,还可以更改和/或编辑内容。

具体的说,断点是一个通知调试器在某一点上临时中止程序执行的信号。当执行在

断点处中止时,程序处于所述的中止模式。进入中止方式并不是结束或者停止你的

程序。任何时候可以恢复(继续)执行。

中止方式可以认为是在运动事件中的暂停。所有的选手还在场上(功能、变量、和

对象驻留在存储器中),但是他们的运动和活动中止了。在暂停期间,裁判能够检

查他们的位置和状态,来寻找违例情况(错误)。裁判有权在暂停阶段调整选手。在

中断方式下可以对程序进行调整。例如,可以改变变量的值。另外,还可以移动执

行的点,改变执行恢复时即将执行的下一个语句。

断点提供了一个强大的工具,使程序可以在任何希望的时间和地点中止执行。而不

是以一行一行地或者一条指令一条指令地单步调试代码,可以设置程序运行直到它

遇到断点,然后开始调试。这样大大加速了调试的进程。如果不具备这种能力,实

际上是不可能调试大型程序的。

许多程序语言具有中止执行和将程序置于中断方式的语句和结构。例如

Visual Basic具有停止(Stop)语句。由于断点是添加到程序中的非实际的资源代码,

因此断点不同于这些语句。断点语句没有被输入到资源窗口中,更确切的说,它要

求通过一些通用调试接口和调试器,依次来设置断点。

在具有可插拔部件(例如数据传输系统(DTS))的计算环境的运行时间环境中,调试

变得更加复杂。(特别是,由于运行期间没有部件的资源代码来在此运行,具有可

插拔部件的运行时间是一个独立的调试问题,调试是困难的。)而且,大多数运行

时间信息包(例如DTS信息包)的执行是在运行时间之外产生。另外,任务对本身

的执行进行控制,意即任务暂停时他们对任务自身进行控制(例如为了进行调试)。

运行时间暂停一个特殊的任务,运行时间(具有数据文件的计算应用程序,用来显

示或运行数据文件)需要和特殊的任务一起协同操作。现行办法提出了在运行时间

的调试,但由于没有提出运行时间和任务之间的协同工作因而不能处理运行期间可

插拔部件的调试。简而言之,运行时间对可插拔的部件进行了低效率的控制。

综上所述,有必要存在一个系统和方法来克服现有技术的不足。

发明概述

提供了一种可插拔部件断点的调试。在一个具有扩展的可插拔部件的计算环境中,

提供一种系统和方法在部件运行期间(例如执行)在不同的点设置断点,以便可以发

现、跟踪、和解决错误。在一个示出的实施例中,计算环境包括了客户端、运行时

间和任务。操作中客户端创建执行或者将信息包加载到运行时间。运行时间创建任

务并将任务配置成能够创建断点。任务然后创建断点并将断点信息传输给运行时间。

然后客户端通过计数断点集合来启动断点。当任务遇到断点时,任务停止执行,提

供运行时间的控制。运行时间让断点来调用客户端。运行时间也可以在支持这种操

作的所有任务上进行中止调用。直到满意为止,客户端然后通过和运行时间的通信

来恢复信息包,依次触发所有任务的恢复。

下面将描述本发明的其它方面。

附图简述

参考如下附图进一步描述可插拔元件的断点调试系统和方法:

附图1和2是适用于本发明计算环境的示意图,附图2是网络计算环境的示意图;

附图3是在可插拔元件断点执行时执行的处理的方框图;

附图4是根据所述系统和方法中的调试断点执行时的处理流程图。

说明性实施例的详细描述

概述

软件调试是一个开发者试图排除计算机程序中代码缺陷的过程。软件开发调试阶段

通常占整个开发时间的60-70%。实际上,调试担负着软件项目总量的约80%左右。

基本上,软件调试的关键过程中围绕着大量的困难和不确定性。这是因为,在错误

检测过程的每一个阶段很难确定多长时间能够发现和改正错误,更不用说是否已经

正确修改了缺陷。为了删除软件中的错误,开发者首先必须发现存在的问题,然后

将错误分类,找出问题所在的代码,最后创建补救这种形势的方案(不会引起其它

问题)。有些问题是难以捉摸的,以至编程者可能花费几个月,或者在极端情况下,

甚至几年去发现它们。开发者不断地在寻找改善和合理化软件调试过程的方法。与

此同时,他们已经试图在错误检测中使用自动化技术。

这些年来,调试技术有了实质性的改善,并且在不久的将来它将继续有重大的发展。

调试技术的研究呈现了重要性的趋势。大多数调试的改进集中在减少依赖的人力和

相互作用。调试技术的发展经历了几个阶段。在计算机刚刚开始的年代,编程者难

于使计算机产生他们运行的程序的输出结果。编程者被迫发明了不同的方法来获得

他们使用程序的信息。他们不仅要确定错误,而且必须创建工具来发现错误。在早

期得的调试技术中使用了例如显示器和程序控制灯泡。

最后编程者开始在他们的程序中输入打印指令来检测错误。通过这样做,编程者能

够跟踪程序路径和关键变量的值。打印语句的使用免去了编程者创建他们自己调试

工具任务的时间浪费。这种技术仍然在普遍使用,非常适合某种类型的问题。

尽管打印语句是调试技术中的一个改善,但他们仍然需要编程者相当多的时间和工

作。编程者需要的是一个一次执行一条程序指令的工具,然后打印程序中的任何变

量。这将使编程者免于提前决定打印语句所放的位置,因为这是他在单步调试程序

中应当做的。这样就产生了运行时间调试器。原则上,运行时间调试器仅仅是一个

自动化的打印语句。它允许编程者不必在代码中插入打印语句就能跟踪程序路径和

变量。

如今,市场上的每一个编译器事实上都带有运行时间调试器。在程序编译期间,这

种调试器作为通过编译的切换开关。经常,这种切换开关称为“-g”切换开关。这种

开关告诉编译器使足够的信息成为可执行的部分,以使其能够在运行时间在调试器

中运行。运行时间调试器相对于打印语句来说是一个巨大的进步,这是因为它允许

编程者编译和运行单个的编译程序,而不是修改资源和重编译,以尽量减少错误。

运行时间调试器使得检测程序中的错误变得很容易,但是他们不能发现导致错误的

原因。编程者需要一个更好的工具来定位和纠正软件错误。

软件开发商发现有些经典的错误,例如存储器误用和存储器漏洞可以自动检测出来。

这是调试技术前进的一步,这是因为它使发现错误的过程自动化。这种工具通知开

发者错误,他的任务仅仅是来改正它。自动调试器变得多样化。最简单的一种就是

能够连接到一个程序的库功能。当程序执行并调用这些功能时,调试器检查存储器

误用。如果发现这种情况,调试器就报告。这种工具的弱点就是不能检测这种存储

器误用确切产生的程序点的位置。这是因为调试器不能观察程序运行的每一条指令,

仅仅能够检测少量的错误。

下一代运行时间调试器技术基于OCI技术。这些工具读取编译器产生的对象代码,

在程序连接之前他们被装备。这些工具的基本原则是寻找访问存储器的处理器指令。

在对象代码中,修改任何访问处理器的指令来检查误用情况。这些工具比基于库技

术的工具更加有用,但是他们仍然是不完美的。由于这些工具由存储器指令触发,

他们仅仅能够检测出与处理器有关的错误。这些工具能够检测动态存储器中的错误,

但是他们在堆栈检测方面的能力是有限的,他们不能在静态存储器中工作。由于

OCI技术的弱点,他们不能检测其它任何类型的错误。在对象标准中,关于源代码

大量重要的信息永久性丢失,他们不能用于帮助确定错误。这些工具的另外一个缺

点是当处理器产生漏洞时不能进行检测。不能区分点和整体,这导致了漏洞的不可

检测。

第三代运行时间调试器基于SCI技术。工具读取程序源代码,分析,测试,结果

将每一条程序指令插入到工具指令中。由于工具读取源代码,它就能够发现和存储

器有关的错误和其它大的错误类。而且,这种工具能够检测出所有存储段中的存储

器误用错误,包括堆,静态和动态的存储器。这种工具最大的优点是它能够跟踪程

序内的指针,能够跟踪漏洞产生的点。另外,为了发现存储器错误,这些工具能够

检测语言特定错误和算术错误。这些工具将是下一步技术发展的基础。

所有现有的工具都有一个共同的缺点。在程序编译后,他们仍然需要编程者经历寻

找运行时间错误的额外步骤。在某种意义上,自从调试的“石器时代”以来,就没有

怎么改变过这种处理。首先,写入代码,然后检查代码的错误。在一个更高级别中

仍然存在这两种阶段的处理过程。这种过程需要整合成一个阶段。

断点允许执行的临时停止以用于调试目的。典型的软件开发环境提供了,暂停一个

正在运行的应用程序的线程,和基于不同的阶段决定应用程序的源代码在哪里停止,

就这两种断点行为。运行时间不能这样做由三点原因:1)任务是组成部分,因此一

旦执行中止就没有可以参考的源代码。2)大多数DTS信息包的执行发生在运行时

间的控制之外。任务能够控制他们自己的执行。为了停止他们,DTS运行时间需

要暂停任务上运行的线程。3)在任何时间,任务可能是一个不允许临时暂停的敏感

状态。

这里所述的系统和方法的目的是改善现有技术的缺点,提供了一种机制,当任务告

知运行时间遇到断点时,通过揭露断点和正确的响应,允许任务和运行时间协同工

作,并且允许可插拔部件在示例期间的任何时候创建断点。换句话说,调试器借助

可扩展部件的工作来设置用于运行时间跟踪和解决问题的断点。

可以理解的是虽然这里所述的系统和方法是在可插拔部件的调试环境中描述的,但

调试技术可以使用超出本发明提供的实施例范围之内的不同方式。

A.示例的计算环境

附图1示出能够在本发明中实施的适当的计算系统环境100的一个例子。计算系统

环境100仅仅是适合计算环境的一个例子,并没有暗示对本发明的使用范围和功能

进行任何限制。计算环境100不与示例的操作环境100中的任何一个部件或者是它

们的组合有依赖性或者必然联系。

本发明可供很多其它一般用途或者特殊用途的计算系统环境或结构一起使用。本发

明也包括但不限于使用合适的公知计算系统、环境和/或结构,上述系统或设备也

包括任何个人计算机、服务器计算机,手持式或者膝上型设备、多处理器系统、微

处理器系统、机顶盒、可编程消费电子、网络PC机、微型计算机、大型计算机、

分布式计算机环境,或者类似设备。

本发明可以用一般的计算机可执行的指令环境来描述,例如计算机执行的程序模块。

程序模块一般包括执行特殊任务或者实行特殊抽象数据类型的例程、程序、对象、

成员和数据结构等。本发明也可以在分布式计算环境中实施,该环境中通过通信网

络或者是其它数据传输媒体连接的远程处理设备执行任务。在分布式计算环境中,

程序模块和其它数据既可以在包括存储器存储设备的本地计算机存储媒体中,也可

以在包括存储器存储设备的远程计算机存储媒体中。

参考附图1,实施本发明的典型系统包括由计算机110组成的一般用途的计算设备。

计算机110的组成部分包括但不局限于处理单元120、系统存储器130和连接不同

部件的系统总线121,包括系统存储器和处理单元120的连接。系统总线121可以

是几种类型总线结构的任何类型,包括存储器总线或者存储控制器、外围总线和使

用任何多种总线结构的本地总线。作为实施例但不局限于此,这样的结构包括工业

标准结构(ISA)总线、微通道结构(MCA)总线、加强的ISA(EISA)总线、视频电子标

准协会(VESA)本地总线和外围部件接口(PCI)总线(也可以是公知的Mezzanine总

线)。

计算机110典型地包括大量的计算机可读媒体。计算机可读媒体可以是计算机110

可以访问的任何有效的媒体,包括易失的和非易失的媒体、可移动的和非可移动动

的媒体。作为实施例但不局限于此,计算机可读媒体可以包括计算机存储媒体和通

信媒体。计算机存储媒体既包括易失的也包括非易失的,既包括可移动也包括非可

移动的媒体,实现任何信息存储的方法和技术,例如计算机可读指令、数据结构、

程序模块或者其它数据。计算机存储媒体但不局限于包括RAM,ROM,EEPROM,

闪存或者其它存储技术,CD-ROM,数字化视频光盘(DVD)或者其它光磁盘媒体,

磁带盒,磁带,磁盘存储器或者其它磁存储设备,或者是能够存储所需信息并且计

算机110能够访问的其它媒体。通信媒体典型地包括计算机可读指令,数据结构,

程序模块或者以一种例如载波或其它传输机制的模块化数据信号的形式存在的其它

数据,并且包括任何信息传输媒体。术语“模块化数据信号”意指一种具有一个或多

个字符集的信号或以此来改变信号中的信息编码的信号。作为实施例但不局限于此,

通信媒体包括例如有线网络或直接线性连接的有线媒体,例如声学、RF、红外线

的无线媒体和其它无线媒体。计算机可读媒体的范围也包括上述任何媒体的组合。

系统存储器130包括例如是ROM131和RAM132的易失性的和/或非易失性的存储

器组成的计算机存储媒体。ROM131典型地存储有包含在启动期间帮助计算机110

内组成部分传输信息基本例程的基本输入输出系统133(BIOS)。RAM132典型地包

括能立即被访问和/或处理单元120操作的数据和/或程序模块。作为实施例但不局

限于此,附图1示出了操作系统134、应用程序135、其它程序模块136和程序数

据137。

计算机110也可以包括其它可移动/非可移动,易失/非易失地计算机存储媒体。仅

仅作为一个实施例,附图1示出了一个从/向非可移动、非易失的磁媒体读取/写入

的硬盘驱动器140,一个从/向可移动、非易失的磁盘152读取/写入的磁盘驱动器

151,和一个从/向非可移动、非易失的光盘156读取/写入的光盘驱动器155,例如

CD-ROM或其它光媒体。典型的操作环境中也可以使用其它的可移动的/非可移动

的、易失的/非易失的计算机存储媒体,包括但不限于磁带盒,闪速存储器卡,数

字光盘,数字视频磁带,固态ROM以及类似媒体。典型的,通过例如是接口140

的非可移动存储器接口,硬盘驱动器141与系统总线121连接,通过例如接口150

的可移动存储器接口磁盘驱动器151和光盘驱动器155与系统总线连接。

如上所讨论和附图1所示例的驱动器和其它相关的计算机存储媒体为计算机提供了

计算机可读指令、数据结构、程序模块和其它数据的存储。在附图1中,例如,硬

盘驱动器作为存储操作系统144,应用程序145,其它程序模块146和程序数据

147被示出。需要注意的是,这些组件既可以相同于、也可以不同于操作系统134,

应用程序135,其它程序模块136和程序数据137。这里操作系统144,应用程序

145,其它程序模块146和程序数据147以不同的数字表示在最小值方面是不同的

副本。用户通过输入设备、例如是键盘162和指示装置161、一般指鼠标、跟踪球

或触摸垫来向计算机输入命令和信息。其它的输入设备(未示出)也可以包括麦克风,

操纵杆,游戏垫、圆盘式卫星电视天线、扫描仪或者类似设备。这些和其它输入设

备经常是通过耦合到系统总线的用户输入接口160和处理单元120相连接,但是也

可以是通过其它的接口和总线结构连接,例如并行端口、游戏端口或者是通用串行

总线(USB)。显示器191或者其它类型的显示设备也是通过接口和系统总线连接的,

例如视频接口190。除了显示器,计算机也可以包括其它外围输出设备,例如通过

输出外围接口195连接的扬声器197和打印机196。

计算机110使用和一个或者多个远程计算机、例如远程计算机180的逻辑连接可以

在网络环境中运行。远程计算机180可以是个人计算机,服务器,路由器,网络

PC,对等设备或其它一般的网络节点,尽管附图1仅仅示例了存储器设备181,但

是典型的,远程计算机181还包括如上所述与计算机110有关的许多或者全部元件。

所述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也可以包括其它的

网络。将象企业域的计算机网络,企业内部局域网和互联网这样的网络环境应用在

在办公室中是很普通的现象。

当在局域网环境中使用时,计算机110通过网络接口或者适配器170和局域网171

连接。当在广域网中使用时,计算机110一般包括调试解调器172或者在广域网

173中建立通信的其它装置,例如互联网。内部或者外部的调制调节器172通过用

户输入接口160、或者其它适当的机制与系统总线121相连。在网络环境中,所述

与计算机110有关的程序模块或部分可以存储在远程存储存储器设备中。作为一个

实施例但不限于此,附图1例示了位于存储设备181上的远程应用程序185。可以

理解的是示出的网络连接是示范性的,可以使用在计算机间建立通信的其它装置。

B.网络计算环境实施例

如上所述的计算机环境100可用于计算机网络的一部分。通常,上述的计算机既可

以用于网络环境中的服务器计算机,也可以用于客户端服务器。附图2示出了网络

环境的一个实施例,具有本发明使用的由网络和客户端计算机通信的服务器。如附

图2所示,大量的服务器10a,10b等等由通信网络14(可以是LAN,WAN,企业

内部局域网,互联网,或其它计算机网络)和大量的客户端计算机20a,20b,20c

或者例如是移动电话15,陆地有线电话16和个人数字助理机17的计算设备相连

接。例如,在通信网络160是互联网的网络环境中,服务器10可以是万维网服务

器,客户端20通过大量公知的协议中的任何一种和服务器通信,例如超文本传输

协议(HTTP)或无线应用协议(WAP)。每一个客户计算机20可以配备访问服务器10

的浏览器180a。类似的,个人数字助理机17可以配备浏览器180b,移动电话15

可以配备浏览器180c来显示和接收不同的数据。

在操作中,一个用户(未示出)可以和运行在客户端计算设备上的计算应用程序交互

作用,进行可插拔部件中的断点调试。调试功能可以存储在服务器计算机中,由通

信网络14和客户端的协作用户进行通信。用户可以结合客户端计算设备上的计算

应用程序进行调试。客户端计算设备将这些事务处理传给服务器计算机以进行处理

和存储。服务器计算机可以作为主计算应用程序进行可插拔部件的调试。

因此,本发明可以使用在具有访问网络及与网络相互作用的客户端计算设备以及和

客户端交互作用的服务器计算机的计算机环境中。然而,在此所述的系统和方法可

以用多种基于网络的结构来实施,不仅限于给出的实施例。现在参考示出的实施例

将详细描述所述的系统和方法。

C.断点调试

在DTS(数据传输系统)中调试的概念在表面上和在其它的环境中是类似的。需要停

止信息包的执行,检查和改变变量,并继续执行,这样才能写入数据包。编程者通

过观察控制执行断点、检查和修改变量。DTS的不同点是多数执行发生在运行时

间的控制以外的信息包中。DTS只访问或者控制调用接口方法和例如中止任务线

程之间的任务。期望在断点处设置良好的控制。因此,对象模型为任务优选的提供

了一种方法来描述他们允许的变量、事件和方法作为断点目标。在接口的定义中,

一般的术语“对象”用来描述实施调试接口的实体。将这些接口应用于希望在揭露调

试和功能性断点的对象模型中的任务和对象是明智的。

在一个典型的实施例中,用户创建具有任务的信息包。运行期间出现了问题,编程

者想弄明白任务为什么没有按照他所想的方式去工作。在将三行集合成一行转换的

任务上设置断点。通过使用协作用户接口,编程者能够查看转换揭示的属性和变量。

通过查看被转换的行和中间执行的转换结果,可以推断出集合体的逻辑缺陷。

在第二个示出的实施例中,编程者具有循环执行的两个任务的信息包。第一个任务

设置了第二个任务使用的全局变量。由于某方面的原因在仅仅执行了部分循环是时

第二任务失败。编程者猜想这是由于全局变量设置成了一个无效值,于是当编程者

反复猜想和检查全局变量时,在循环处设置断点。编程者反复采取措施,直到她发

现可疑的全局变量的值的。在发现可疑的值后,编程者一步一步循环查看第二个任

务的失败。

一般的,设计断点的目的是任务不能面对在实施和使用中的挑战。运行时间保持了

任务揭示的断点和客户端是否能够使能信息,致使任务写入几乎不能工作。在运行

期间保持断点的状态提供了公知的优点,即可以正确执行。

为了揭示断点,结合示出的典型实施例,任务最好实施IDTS断点站断点。这种接

口来源于IDTS中止。当第一次创建任务时,运行时间将会调用IDTS断点站。任

务的接收断点管理通过断点管理的使任务能够通知它希望揭示的断点运行时间,检

验客户是否已经使能这些断点。典型的,调用接收断点管理时,任务将会创建大量

的断点,然后执行时调用几次断点是否使能。

每一个断点由任务定义和任务范围的ID所标识。揭示断点的例子如下:

  AcceptBreakpointManager(IDTSBreakpointManager*pManager)  

{ m_pManager=pManager; m_pManager->CreateBreakpoint(1,“Break

when the task is about to do X”,<br/>NULL); } Execute(…)

{VARIANT-BOOL isEnabled; m_pManager->IsBreakpointEnabled(1,

&amp;isEnabled); }

断点管理器支持更多复杂的情况,例如执行时创建和删除断点。而且,客户端可以

检索信息包中揭露的所有断点列表,或者仅仅通过调用IDTS信息包上的

GetBreakpoint( )进行特定的执行。集合中的每一个断点对象包括了断点的描述和使

能标志,当设置时能够导致在执行点停止任务。

附图3示出了在计算环境中具有扩展部件并且可以和计算环境通信,以实现断点调

试的示例的方块图。微软公司支持的DTS就是这样的计算环境的一个例子。

许多公司需要集中数据来改善共同的决策。然而,他们的数据可能以不同的格式存

在不同的地方。数据传输系统(DTS)阐明了这个重大的事宜,需要提供一组工具以

允许将不同资源的数据提取、转换和合并成单个的或者多个DTS连接支持的目的

地址。通过使用DTS工具以图形化的方式建立DTS信息包或者用DTS对象模型

来编程信息包,可以创建自定义的、编制用来专用于组织结构的商业需要的数据移

动解决方案。

DTS信息包是一个有组织连接、DTS任务、DTS转换和工作流程限制集合的集合

体,可以与DTS工具汇编或者编程,并且保存到MICROSOFT SQLSERVER,

SQL SERVER 2000中的数据服务器,结构化存储文件,或者是

MICROSOFT Visual Basic文件。一般地,在运行时每一个信息包包括一个或者多

个顺序或者是并行执行的步骤。当执行时,信息包连接到正确的数据源,复制数据

和数据库对象,转换数据并通知其它用户或者事件程序。信息包可以被编辑,密码

保护,执行调度,并且能够通过版本来检索。

伴随着信息包存在着DTS任务。DTS任务是一组离散的功能,在信息包中单步执

行。每一个任务定义了作为数据移动和数据转换进程的一部分待执行的工作项目,

或者作为待执行的任务。一般用于DTS任务的例子包括:1)输入和输出数据,2)

转换数据,3)复制数据库对象,和4)向/和其它的用户和信息包发送/接收信息。

完成DTS部件和操作的是DTS转换。在数据到达目的地之前,一个DTS转换是

一个或者多个依据一个数据块应用的功能或者操作。

如附图3所示,典型的计算环境包括客户端,运行时间和任务。箭头和数字表示客

户端、运行时间和任务间通信和操作的顺序。箭头数字1指示的第一通信是在客户

端和运行时间间进行的,在此客户创建可执行的或者可选的向运行时间加载信息包。

响应于客户端,运行时间创建箭头2示出的任务。任务在认为合适的位置创建断点

并将断点位置传输给运行时间,如箭头3所示。实际上,编程者在创建信息包和/

或执行的任何时候创建断点。任务仅仅在计算环境中设置断点,本质上为执行准备。

响应于任务断点设置,客户端通过如箭头4所示的技术断点集合开启断点。在这里,

客户端和运行时间进行通信以开启断点。客户端然后在运行时间中执行如箭头5.1

所示的信息包和/或执行。然后,运行时间执行如箭头5.2所示的可执行信息包的任

务。当执行时,任务可能遇到先前设置的断点。在这里,任务和断点通信,遇到运

行时间,如箭头6所示。如箭头7所示,运行时间将断点调用发送到客户端。现在

客户端位于检测执行直到确定了断点的位置并且研究发现问题源。如果满意,如箭

头9所示,客户端调用恢复信息包。如箭头10所示,这种调用使得运行时间依次

调用所有任务上的恢复程序。

附图4示出了在可插拔部件中实现断点调试所执行的进程。如图所示,进程从方框

400到方框405,在这里客户创建对象模型中的信息包。从这个进程到方框410,

运行时间创建任务。然后在方框405中任务创建断点。在方框420中响应于断点的

创建,客户端启动断点。客户端执行信息包425,在方框430中运行时间执行任务。

在方框435中任务遇到设置的断点,在方框440遇到断点通知给客户端。在方框

445中运行时间调用中止操作。在方框450中,直到满意为止,客户端调用恢复任

务,在方框455中运行时间调用恢复任务。进程进行到方框460中结束。

D.结论

总之,这里所述的系统和方法提供了可插拔部件的断点调试。然而可以理解的是本

发明允许不同的修改和变化的结构。并不想将本发明限制在这里所述的特定结构。

相反,在本发明的范围和精神下,本发明覆盖了所有的修改,可选的结构和同等物。

还要注意的是本发明可以在各种计算机环境(既包括无线的也包括有线的计算机环

境)、部分计算环境和真实世界环境中实施。这里所描述的各种技术可以用硬件来

实施或者用软件来实施,或者是二者的结合。优选的,这些技术可以作为在可编程

的计算机上执行的计算机程序,每个所述计算机包括处理器,处理器可读的存储器

媒体(包括易失的和非易失的存储器和/或存储元素),至少一个输入设备和一个输出

设备。程序代码被用于使用输入设备输入的数据以执行上述的功能并产生输出信息。

输出信息施加到一个或者多个输出设备。优选的,每个程序可以用高级程序或者面

相对象的编程语言来实施,以和计算机系统进行通信。然而,如果需要还可以用汇

编或者机器语言来实施。在任何情况下,语言可以是编译或翻译的语言。优选的,

每一个这样的计算机程序存储在一般计算机或者是特殊用途的计算机可以读取的存

储媒体或者设备上(例如ROM或者磁盘),当计算机读取存储媒体或者设备来执行

上述程序时配置和操作计算机。这种系统也可以考虑实施为计算机可读取配置有计

算机程序的存储媒体,这种配置的存储媒体致使计算机以特定的和预先定义的方式

来进行操作。

尽管上面已经详细描述了本发明典型的实施例,本领域的技术人员容易理解的是,

在实质上不脱离本发明新颖性教导和优点的情况下对本发明的实施例进行附加的修

改是可能的。因此,这些和所有这样的修改端口包括在本发明的范围之内。本发明

可以用以下的权利要求来更好的进行解释。

本文标签: 断点运行任务调试