专利名称:用于暂停的被调试窗口应用程序的窗口恢复方法
技术领域:
本发明一般涉及用于数字数据处理程序的调试设施,特别是用于一些应用程序的调试设施,这些应用程序具有同时显示的屏幕窗口区域。
在具有窗口和图形功能的操作系统下写出的应用程序经常包含特殊的程序,用于画出应用窗口的内容。这类特殊部分的例子中有用于作图、画图表、或是画出涉及到特定知识领域的复杂图形的程序。事实上,在一个应用程序的窗口内所画出或绘制的内容是专用于该应用程序的,而和操作系统无关。
调试程序的一个功能是把一个应用程序暂时停止在它程序内的选定的地点,以便观察应用程序的各种执行状态。接受一个调试程序如上所述的操作的应用程序在这里称为“被调程序”。然而,当一个调试程序把一个被调窗口应用程序暂停时,应用程序就不再可能去重新绘制或刷新它的窗口内容,这意味着用于绘制窗口的那部份程序不能再执行。这样一来,如果有别的未被暂停的用户窗口放在被调程序的窗口之上,而后来又将之移开时,这些窗口的图像仍然留在被调程序的窗口之上。将这种不希望发生的情况称为“魔影”。由于魔影现象会扰乱工作环境,因此被调程序的窗口的视觉内容无法提供重要信息,而这些信息是和应用程序的调试有关的。
以下美国专利是不同程序调试和/或窗口系统的典型例子美国专利4,589,068“分段调试程序”(Heinen,Jr.);美国专利4,703,446“数据处理部件的诊断控制设备”(Momose);美国专利4,720,778“软件调试用分析器”(Hall等人);美国专利4,872,167“显示程序执行环境的方法以及使用该方法制造的设备”(Maezawa等人);美国专利4,885,717“用于面向对象的程序的图形表示操作的系统”(Beck等人);公共转让的美国专利4,941,102“专家系统所用两步调试程序”(Darnell等人);美国专利4,943,968“逻辑编程语言处理系统中显示执行跟踪的方法”(Hirose等人);美国专利5,038,348“用于调试数据流程序的设备”(Yoda等人);和公共转让的美国专利5,050,105“对多个应用程序和数据的直接的由光标控制的访问”(Peters)。
另外有意义的是IBM技术公开报告第31卷第8期,发表于1989年1月的由W.J.Cheney所写一文,名为“为调试程序的输入/输出操作提供单独显示的方法”。
然而上述专利和文献的学说并不能提供一个满意的方法来解决前面描述过的魔影现象。
因此本发明的一个目的就是提供一个调试程序,它对暂停的应用程序采用一种窗口恢复方法。
本发明的进一步的目的是提供一种在暂停应用程序的窗口内防止丢失信息的方法。
本发明解决了上面所述的和其他的问题,发明的目的能通过一些方法和设备来达到,这些方法和设备用于管理暂停应用程序的窗口,因而消灭魔影现象。
第一种方法用于一类数据处理系统,该系统拥有诸多应用程序,而这些应用程序都能够带有至少一个显示屏窗口。这个方法管理被暂停的应用程序的一个显示屏窗口,它包含以下步骤。对一个被暂停的应用程序作出响应后,调试程序进行如下操作(a)复制暂停应用程序的一个窗口的信息内容;(b)建立第二个窗口,这里称之为遮掩窗口,该遮掩窗口正好对准暂停应用程序的窗口,使得暂停应用程序的窗口从显示屏观察者的视野中消隐。(c)使用暂停应用程序的信息内容的复制件去绘制第二窗口;以及(d)对重新绘制第二窗口的信息作出响应,使用暂停应用程序的信息内容的复制件来重新绘到第二窗口。
绘制的步骤中最好包含一个预备步骤,这个预备步骤把暂停应用程序的窗口中任何模糊不清的部分所对应的复制件中那部分内容加以报废,例如把复制件中的报废部分变为一种预定的颜色。
第二种方法也用于一类数据处理系统,该系统拥有诸多应用程序,而这些应用程序都能够带有至少一个显示屏窗口。第二种方法管理被暂停的应用程序的一个显示屏窗口。它包含以下步骤。
对被暂停应用程序作出响应后,调试程序操作如下(a)初始化一个屏幕映象缓存,并把暂停应用程序的一个或多个窗口复制到该缓存中;(b)截取一条送给暂停应用程序的重新绘制窗口的信息;以及(c)使用对应于应重新绘制的暂停应用程序窗口的窗口复制件,去重新绘制暂停应用程序的显示屏窗口。
和第一种方法一样,在重新绘制前窗口的模糊不清部分可加以报废。
本发明还提供应用调试程序的实施例,这些实施例按照上述方法进行工作。
当连同所附图纸一起阅读下面的发明详细说明后,本发明的上述的和其他的特征将更为明显,其中
图1是根据本发明工作的数据处理系统的框图;
图2介绍了众多的显示屏平面和本发明的一种方法的运行效果;
图3是用来解释本发明第一种方法的流程图;以及图4是用来解释本发明第二种方法的流程图。
图1是根据本发明工作的数据处理系统10的框图。系统10包括一个操作系统(OS)12,该操作系统通过一条逻辑总线14和众多应用程序耦合起来,这些应用程序命名为APP116,APP218和APPn20。和总线14耦合的还有一个屏幕存储器22,该存储器有一个输出信号用于向一个具有显示屏24a的显示器24提供显示数据。键盘26向系统10的操作人员提供一个输入数据的功能。系统10还包括一个用于调试的应用程序(DEBUGGER)28。调试程序28与一个相联存储器(MEM)30耦合,该存储器的用途将在下面描述。
虽然应用程序16-20在图中是以分开的框的形式与逻辑总线14相耦合的,但是应该理解到,实际上应用程序16-20和用于调试的应用程序28包含在存储在系统内存中的计算机指令包中。OS12对不同应用程序的执行进行调度,使这些应用程序看起来在并行地运行。在系统10中,每个应用程序能够在显示屏24上至少拥有一个窗口,并能在该窗口内显示信息。一个窗口是显示屏24a上的一个预定的区域。一个应用程序的一个窗口可以局部地或全部地遮盖掉一个或更多其他应用程序的一个窗口。预定的和窗口有关的调用由应用程序16-20和28通过逻辑总线14送至OS12,和窗口有关的信息则由应用程序通过逻辑总线14从OS12接收。
OS12可包含在一个称为OS/2的操作系统中(OS/2是国际商业机器公司IBM的注册商标)。有关这个实施例的预定的OS12中和窗口有关的调用和信息将在下面详细介绍。但应理解到,本发明的学说并不仅限于使用在一种特定的操作系统上。
认为调试程序28包括以下方式向OS12提供调用以便暂时停止应用程序16-20中特定的一个,对暂停的应用程序进行单步调试,使暂停的应用程序运行起来,和完成其他常规的调试功能。
根据本发明,将描述两种方法,当调试程序28把被调程序暂时停止后,这两种方法向被调程序提供窗口恢复功能。随后的描述中假定APP116是暂停应用程序(被调程序)。
遮掩窗口法参照图3的流程图。在遮掩窗口法中,当一个单步调试或运行的命令结束,而被调试的应用程序(DA)被暂时停止(块A)以便从屏幕存储器22(块B)获取屏幕映象时,调试程序28对此做出响应。调试程序28产生OS12调用去询问OS12以便了解所有被调程序的窗口的尺寸和位置的信息。接着调试程序28为每一个被调程序的窗口在MEM30中复制了一份有关窗口的当前信息(块C)。
应注意的是,被调程序的窗口的一部分或多个部分会被其他窗口所遮盖住。由于不可能去构想应用程序绘制被遮盖区域的意图,最好将MEM30复制件中被调程序的窗口的被遮盖区域宣告作废,其方法是把每一个被遮盖区域换成某种预先选定的颜色(块D)。
其次,调试程序28为每个被调试窗口建立一个窗口,该窗口对准被调试窗口。就是说,调试程序建立一个同等尺寸和相同显示屏位置的窗口,该窗口在Z轴方向上和相应的被调试窗口相毗邻(块E和F)。这里那些由调试程序28建立的窗口称为“遮掩窗口”。顺序如下每个窗口位于屏幕存储器22内的单独的逻辑映象平面上,这些平面沿Z轴方向(深度方向)从后到前以堆栈方式存储。就这样,将遮掩窗口插入被调试窗口平面与另一离观察者更近些的平面之间。这样建立起来的遮掩窗口由调试程序28所拥有,并且不会被暂停。每个被调试窗口完全被一个相应的遮掩窗口所遮盖,因此它不需要重新绘制。
接着调试程序28使用存储在MEM30中的相应的被调试应用窗口的内容来绘制遮掩窗口(块G),这个绘制内容也包括任何一个或多个被作废的部分。
在块H中,调试程序对一个OS12的重新绘制遮掩窗口的信息作出响应,并使用MEM30中存储的相应的被调试窗口的映象来完成重新绘制的操作(块I)。OS12会在删除另一个应用程序的窗口时发出重新绘制的信息,被删的应用程序的窗口建立时曾部分地或全部地遮盖住了遮掩窗口的位置,这个位置也和被调程序的窗口位置重合在一起。由于被调程序没有能力对重新绘制的信息作出响应,当其他应用程序的起着遮盖作用的窗口被移走时,其后果通常是部分地或全部地破坏了被调试窗口内的信息内容。
然而,因为被调试窗口完全由遮掩窗口所遮盖,被调试窗口就有效地和任何用户操作隔离开,而这些用户操作本来会触发一个重新绘制被调试窗口的命令的。这样一来,OS12将不产生重新绘制被调试窗口的信息,而作为代替,它将产生一个重新绘制起着掩盖作用的遮掩窗口的信息。因此遮掩窗口用作了被调试窗口的代用品。其效果是用户在被调试的应用程序被暂停时继续看到一个或多个被调试窗口的映象,因此上面曾提到过的魔影现象就被消除了。
在块J内调试程序28在确定被调试的应用程序已被重新启动后,删去以前被暂停的应用程序的全部遮掩窗口。删去遮掩窗口后,在它下面的应用程序窗口即显露出来,这个以前被暂停的应用程序被认为再一次有能力去重新绘制它所带有的一个或多个窗口。
图2a和2b解释了图3中块G中本发明的方法的操作效果。在图2a中,映象平面1(P1)有一个APP116所带有的窗口(W1)。映象平面3(P3)有一个APP218所带有窗口(W2)。W2部分地遮盖了W1,结果是在W1内产生了一个模糊不清的区域(OA)。调试程序28为W1建立的遮掩窗口(SW)被显示在映象平面P2上,这里SW有一个作废区域(IA),这个区域和W1的OA相对应。SW显示的信息是当APP116被停止时,W1内存在的信息(图3的块A),被显示的信息是在执行图3中块G时由调试程序28从MEM30中取回的。SW比W1更接近于观察者,它被如此放置,是为了遮盖W1内的信息并把这些信息从观察者的视野中完全消隐掉。P4有一个APPn20所带有的窗口(W3)。W3并不遮盖住显示屏24a的任何别的窗口。
图2b描述了观察者看到的显示屏映象,认为W2不再被APP218所显示,可以看出,观察者看到SW的信息内容而不是W1的,因为W1位于SW的后面。假如另一个应用程序,例如APP116,会建立而以后又移走一个遮住W1的窗口,则当APP116被暂停时W1内的信息不会丢失,因为调试程序28会对从OS12来的重新绘制的信息作出响应,使用W1的存储信息来重新绘制SW。因此,魔影现象的问题得以解决。
全映象方法参照图4,全映象方法所依据的前提是调试程序28从逻辑总线14上把OS12所产生的所有的重新绘制被调试窗口的信息截取下来。调试程序28对被暂停的被调试应用程序(DA)作出响应(块A),把存储于MEM30内的屏幕缓存初始化,例如,把屏幕缓存设到为作废窗口部分选定的颜色(块B)。调度程序28向OS12查询全部被调程序窗口的大小和位置信息,并且在块C把一个或多个被调试窗口复制到MEM30中的屏幕缓存中去。任何需要的被调试窗口的作废操作在块D完成,正如图3中相应块的描述那样。
当调试程序28截取被调试窗口的一条重新绘制的信息时(块E),调试程序28把MEM30中存储的窗口映象的位映像用作将被重新绘制的窗口的交叉参考值,并且使用位映像的这部分直接去绘制显示的映象,这映象显示在被调试窗口所在区域的显示屏24a上面(块F)。这样,调试程序28保持有一个或多个被调试窗口的一份复制件,并且在被调试程序被暂停时担当起重新绘制被调试窗口的任务。
在块G和H中,调试程序28在应用程序被重新启动时作出响应,把MEM30中存储的被调试窗口映象的复制件加以删除。
如果OS12是OS/2操作系统,调试程序28采用数个操作系统的调用,来确定显示屏窗口所需要的信息。这些OS/2调用和返回给调用者的信息都以文件方式记录在出版物中,此出版物名为《OS/2技术库表示管理编程参考书》,第2卷,2.00版本(S10G-6265-00)。具体来说,调试程序28所采用的OS/2调用如下所述OS/2调用功能WinBeginEnumWindow查询双亲以及在(pg.8-16)Z轴方向窗口排顺序WinEndEnumWindow查询双亲以及在(pg.8-139)Z轴方向窗口排顺序WinGetNextWindow查询双亲以及在(pg.8-186)Z轴方向窗口排顺序WinQueryWindowPos查询窗口的大小和(pg.8-386)位置WinBeginPaint查询窗口区域的大小和(pg.8-18)位置,在从OS12接收到
WM_PAINT信息后重新绘制当一个窗口必须重新绘制时,调试程序28对于从OS/2接收到的WM_PAINT信息作出响应。WM_PAINT信息在出版物的12-47页有描述,此出版物名为《OS/2技术库表示管理编程参考书》,第3卷,2.00版本(S10G-6272-00)。
在遮掩窗口法和全映象法之间选择那一种方法,这取决于调试程序28截取从OS12来的被调程序的WM_PAINT信息的能力。如果调试程序28不能为被调程序截取以下信息,即绘制屏幕的那一块区域,则宜采用遮掩窗口法。如果调试程序28能够直接截取OS12来的被调程序WM_PAINT请求信息,则宜采用全映象法。应该注意,遮掩窗口法有副作用,即当遮掩窗口被取消而控制权归还给被调程序时,OS12为所有的被调试窗口产生全窗口重新绘制的信息(就是,这些窗口被“暴露”)。这比使用全映象技术更可能扰乱应用程序的工作环境。
虽然本发明在这里是结合所提出的最佳实施例来揭示和描述的,但本领域的一般技术人员应明白,形式和细节都可改变而不会背离本发明的范围和实质。
权利要求
1.一种用于管理暂停的应用程序的显示屏窗口的方法,此方法应用于一类数据处理系统,该系统拥有诸多应用程序,而这些应用程序都能够带有至少一个显示屏窗口,此方法的特征中包括以下步骤对一个暂停的应用程序进行响应,复制该暂停的应用程序的窗口的信息内容;对准暂停的应用程序的窗口建立一个第二窗口,使暂停的应用程序的窗口从显示屏装置观察者的视野中消隐;把暂停的应用程序的信息内容的复制件绘制于第二窗口中;以及对重新绘制第二窗口的信息作出响应,使用暂停的应用程序的信息内容的复制件来重新绘制第二窗口。
2.如权利要求1所述的方法,其特征是复制的步骤中包括一个预备步骤,即确定显示屏装置中被暂停应用程序的窗口所占据的区域。
3.如权利要求1所述的方法,其特征包括下一步骤对已暂停而又开始运行的应用程序作出响应,去删除第二窗口。
4.如权利要求1所述的方法,其特征是绘制的步骤中包括一个预备步骤,即把复制件中对应于暂停应用程序窗口中任何模糊不清部分的那部分宣告作废。
5.如权利要求4所述的方法,其特征是宣告作废的步骤中包括一个步骤,即把复制件中宣告作废的部分的颜色换为预定的颜色。
6.一种用于管理暂停的应用程序的显示屏窗口的方法,此方法应用于一类数据处理系统,该系统拥有诸多应用程序,而这些应用程序都能够带有至少一个显示屏窗口,此方法的特征中包括以下步骤对暂停的应用程序作出响应,把一个显示屏装置的信息内容加以复制,该显示屏装置包括暂停应用程序的窗口;截取一个送向暂停应用程序的窗口重新绘制的信息;以及使用对应于暂停应用程序窗口的那部分复制件,对显示屏装置的暂停应用程序窗口实行重新绘制。
7.如权利要求6所述的方法,其特征是复制的步骤中包括一个步骤,即确定被暂停应用程序窗口所占据的显示屏装置的区域。
8.如权利要求6所述的方法,其特征包括下一步骤对已暂停而又开始运行的应用程序作出响应,把包括暂停应用程序窗口在内的显示屏映象的复制件删除。
9.如权利要求6所述的方法,其特征是复制步骤中包括下列步骤把复制件中对应于暂停应用程序窗口中任何模糊不清部分的那部分宣告作废;以及使用带有作废部分的复制件来绘制暂停应用程序的窗口。
10.如权利要求9所述的方法,其特征是作废的步骤包括一个步骤,即把复制件的作废部分设置为一种预定的颜色。
11.一种应用于一类数据处理系统的调试程序,该数据处理系统拥有诸多应用程序,而这些应用程序都能带有至少一个显示屏窗口,此调试程序的特征包括一种方式,能对被暂停的应用程序作出响应,用于把暂停应用程序窗口的信息内容复制到一种存储器装置中;一种方式,能产生一个建立第二窗口的请求,这个第二窗口对准了暂停应用程序的窗口,因而暂停应用程序的窗口就从显示屏装置的观察者的视野中消隐;一种方式,能用暂停应用程序的信息内容的复制件来绘制第二窗口;以及一种方式,能对重新绘制第二窗口的信息作出响应,使用暂停应用程序的信息内容的复制件来重新绘制第二窗口。
12.如权利要求11所述的一种调试程序,其特征包括一种方式,对已暂停而又开始运行的应用程序作出响应,把第二窗口删除掉。
13.如权利要求11所述的一种调试程序,其特征包括一种方式,用于把复制件中与暂停应用程序窗口中任何模糊不清部分相对应的部分宣告作废,它还包括一种手段,用于把复制件的作废部分设置到一种预定的颜色。
14.一种应用于一类数据处理系统的调试程序,该数据处理系统拥有诸多应用程序,而这些应用程序都能带有至少一个显示屏窗口,此调试程序的特征包括一种方式,对被暂停的应用程序作出响应,用于把显示屏装置的信息内容复制到存储器装置中去,该显示屏装置包括暂停应用程序的窗口;一种方式,用于截取送至暂停应用程序的重新绘制窗口的信息;以及一种方式,对重新绘制窗口信息的截取作出响应,使用与暂停应用程序窗口相对应的那部分复制件去重新绘制暂停应用程序的显示屏装置窗口。
15.如权利要求14所述的调试程序,其特征包括一种方式,对已暂停而又开始运行的应用程序作出响应,把复制件删除。
16.如权利要求14所述的调试程序,其特征包括一种方式,用于把复制件中与暂停应用程序窗口中任何模糊不清部分的相对应的部分宣告作废,它还包括一种方式,用于把复制件的作废部分设置到一种预定的颜色。
全文摘要
一种管理被暂停应用程序的显示屏窗口的方法,包括对一个被暂停的应用程序作出响应,(a)复制暂停应用程序的窗口的信息内容;(b)建立第二窗口,该窗口和暂停应用程序的窗口对准,使暂停应用程序的窗口从显示屏的观察者的视野中消隐;(c)使用暂停应用程序的信息内容的复制件来绘制第二窗口;以及(d)对重新绘制第二窗口的信息作出响应,使用暂停应用程序的信息内容的复制件重新绘制第二窗口。
文档编号G06F11/36GK1092879SQ9410013
公开日1994年9月28日 申请日期1994年1月4日 优先权日1993年1月5日
发明者杰弗里·斯科特·波斯顿, 多纳尔德·菲利普·帕泽尔, 兹维·彼德·韦斯 申请人:国际商业机器公司