CN102422274A - 低特权调试信道 - Google Patents
低特权调试信道 Download PDFInfo
- Publication number
- CN102422274A CN102422274A CN2010800203491A CN201080020349A CN102422274A CN 102422274 A CN102422274 A CN 102422274A CN 2010800203491 A CN2010800203491 A CN 2010800203491A CN 201080020349 A CN201080020349 A CN 201080020349A CN 102422274 A CN102422274 A CN 102422274A
- Authority
- CN
- China
- Prior art keywords
- browser
- application program
- channel repeater
- debugging
- channel
- 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
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
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
基于浏览器的调试器应用程序被配置成调试第二基于浏览器的应用程序。调用信道中继器模块以在调试器应用程序和第二应用程序之间建立双向通信信道。通过信道中继器模块从第二应用程序传输开始指示。第二应用程序进入被阻止等待状态。对第二应用程序执行调试操作。通过信道中继器模块,将调试请求消息传输到第二应用程序,以导致第二应用程序从被阻止等待状态转换到运行状态,并执行由调试请求消息指示的调试动作。通过信道中继器模块,从第二应用程序接收对调试请求消息的响应。第二应用程序从运行状态转换到被阻止等待状态。
Description
背景
调试器是允许程序员监视程序的执行的工具。调试器可以停止正被调试的程序的执行、重新启动程序的执行、在程序中设置断点,和/或访问或改变存储器中的值。调试器可以允许程序被一步一步地运行(叫做“步进”),当遇到断点时停止在代码的特定行(中断),并且可以在程序处于断点或当程序正在运行时允许检查变量的值(检查)。当程序正在运行时,除观察和报告程序状态之外,一些调试器也可以修改程序状态。因此,调试器会非常有用的。
通常为调试器进程提供了相对高级别的特权,以使得它们被允许以此方式对程序进行调试。然而,使得调试器对于查找错误有用的此相同功能还能使调试器成为有用的软件破解工具,其可以被用来违反安全性,包括检索敏感信息、逃避拷贝保护、规避数字权限管理等等。由此,必须仔细地管理向调试器进程提供的特权级别。
例如,在某些情况下,可能需要使用在客户机计算机上运行的基于浏览器应用程序来调试服务器上的应用程序。然而,在客户机计算机上运行的应用程序通常没有足够的特权来调试服务器上的应用程序。如果在客户机上运行的应用程序具有足够的特权来调试服务器上的应用程序,则将会出现很大的安全性问题。为将基于客户机的基于浏览器的应用程序的特权级别提高到调试基于服务器的应用程序的足够的级别,通常必须在客户机计算机处安装启用软件(enabling software)。例如,被配置成提高基于客户机计算机的应用程序的特权的调试DLL(动态链接库),或其他形式的调试API(应用程序编程接口),可能需要被安装在客户机计算机处。这样的API可能对于许多应用程序不可用。为获取对这样的API的访问,应用程序可能需要用户通过普通.MSI(MicrosoftInstaller(安装器))或通过引用ActiveX控件来安装更具特权的调试堆栈(例如,MicrosoftICorDebug),或者可能需要执行其他复杂的进程。
概述
提供本发明内容以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
提供了用于使基于浏览器的调试器应用程序能调试基于浏览器的被调试应用程序而无需要求提升特权的方法、系统,以及计算机程序产品。
在一种实现中,提供了基于浏览器的调试器应用程序调试第二基于浏览器的应用程序的方法。调用信道中继器模块以在第一基于浏览器的应用程序和第二基于浏览器的应用程序之间建立双向通信信道。通过信道中继器模块从第二基于浏览器的应用程序传输开始指示。第二基于浏览器的应用程序进入被阻止等待状态。可以对第二基于浏览器的应用程序执行一个或多个调试操作。例如,调试请求消息可以通过信道中继器模块传输到第二基于浏览器的应用程序以导致第二基于浏览器的应用程序从被阻止等待状态转换到运行状态,并执行由调试请求消息指示的调试动作。可以通过信道中继器模块,从第二基于浏览器的应用程序接收对调试请求消息的响应。第二基于浏览器的应用程序从运行状态转换到被阻止等待状态。
在另一种实现中,提供了基于浏览器的调试器应用程序。基于浏览器的调试器应用程序包括信道建立器模块、调试启动模块,以及调试器模块。信道建立器模块被配置成调用信道中继器模块以在基于浏览器的应用程序和第二基于浏览器的应用程序之间建立双向通信信道。调试启动模块被配置成通过信道中继器模块从第二基于浏览器的应用程序接收开始指示。调试器模块被配置成对第二基于浏览器的应用程序执行一个或多个调试操作。调试器模块包括调试指令传输模块和调试响应接收器模块。调试指令传输模块被配置成通过信道中继器模块,向第二基于浏览器的应用程序传输调试请求消息。调试请求消息被配置成导致第二基于浏览器的应用程序从被阻止等待状态转换到运行状态。第二基于浏览器的应用程序执行由调试请求消息指示的调试动作。调试响应接收器模块被配置成通过信道中继器模块,从第二基于浏览器的应用程序接收对调试请求消息的响应。第二基于浏览器的应用程序从运行状态转换到被阻止等待状态。
此处还描述了供调试器应用程序调试被调试应用程序的计算机程序产品。
此外,此处还描述了用于被调试应用程序、信道中继器模块,并用于如此处所描述的更进一步的实施例的方法、系统,以及计算机程序产品。
下面将参考各个附图,详细描述本发明的进一步特点和优点,以及本发明的各实施例的结构和操作。值得注意的是,本发明不仅限于此处所描述的特定实施例。这样的实施例只是出于例示的目的。基于此处所包含的原理,另外的实施例对那些相关领域技术人员是显而易见的。
附图简述
结合到本说明书并构成本说明书的一部分的附图示出了本发明,且与描述一起,进一步用于说明本发明的原理,并允许那些精通相关的技术人员实施和使用本发明。
图1示出了其中可以实现本发明的实施例的示例客户机-服务器通信系统的框图。
图2示出了根据本发明的示例实施例的调试系统的框图。
图3示出了根据示例实施例的调试器应用程序的框图。
图4示出了根据示例实施例的被调试应用程序的框图。
图5示出了根据示例实施例的提供用于执行调试的调试器应用程序的过程的流程图。
图6和7示出了根据示例实施例的调试系统的框图。
图8示出了根据示例实施例的调试系统的框图。
图9-12示出了根据示例实施例的提供用于启动对被调试应用程序的调试的过程的流程图。
图13-16示出了根据示例实施例的提供用于由调试器应用程序执行对被调试应用程序的调试的过程的流程图。
图17-19示出了根据示例实施例的提供用于终止调试的过程的流程图。
图20示出了根据示例实施例的用于配置低特权调试流水线的流程图。
图21A和21B示出了根据示例实施例的用于客户机-客户机低特权调试的示例系统的框图。
图22示出了可以被用来实现本发明的各实施例的示例计算机的框图。
通过下面的结合附图对本发明进行的详细说明,本发明的特点和优点将变得更加显而易见,在附图形中,类似的附图标记在整个说明书中标识对应的元素。在附图中,相同的附图标记一般指示相同的、功能上类似的和/或在结构上类似的元素。元素首先在其中出现的附图由对应的附图标记中最左边的数字来指示。
详细描述
I.引言
本说明书公开了包括本发明的特征的一个或多个实施例。所公开的实施例只例示了本发明。本发明的范围不仅限于所公开的实施例。本发明由所附的权利要求进行定义。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表示所描述的实施例可包括特定特征、结构或特性,但是,每一个实施例可以不一定包括该特定特征、结构,或特征。此外,这样的短语不一定是指同一实施例。此外,当结合实施例描述特定特征、结构或特性时,假定在本领域技术人员的知识范围内,可以与其他实施例一起实施这样的特征、结构或特性,无论是否被显式地描述。
II.调试器和特权
许多现代处理器体系结构具有允许操作系统以不同的特权级别运行的CPU模式。例如,访问资源的进程、资源和指令被用特权级别进行标记。当一个进程试图使用资源或试图执行有特权的指令时,处理器确定该进程是否具有执行此项操作的许可,并准许或者拒绝该操作。这可防止用户进程损坏操作系统或在机器上运行的其他进程。可能存在各种数目的特权级别。例如,某些处理器支持两个特权级别,如用户(低特权)和超级用户(高特权)。其他处理器具有四个级别,级别#0具有最大特权(高特权),级别#3具有最小的特权(级别#2和级别#3可以被视为低特权)。
调试器是允许程序员监视程序的执行的工具。一般而言,调试器进程是高特权进程,而被调试程序(正在被调试的程序或调试目标)通常是低特权进程。当在本地调试时(例如,用户正在他自己的计算机上调试程序),两者(调试器或被调试程序)中的哪一个特权更大通常无关紧要,因为计算机上的所有信息通常都属于同一个用户。远程调试(调试在通过网络连接可访问的系统上运行的程序)更有问题。远程调试通常在客户机-服务器环境中执行(例如,在存在客户机-服务器关系的情况下)。
客户机-服务器关系是在两个不同的计算机上运行的两个计算机程序之间的关系,其中,一个程序,客户端,作出对另一个程序(服务器)的服务请求。诸如电子邮件交换、web访问以及数据库访问之类的典型网络功能都基于客户机-服务器模型。术语“服务器”一般而言是指在计算机上运行的服务于请求的进程和该服务在其上面运行的实际计算机两者。服务器通常专用于通过计算机网络——典型地通过请求-响应协议——提供一个或多个服务。服务通常由被设计成能处理多个并行请求的服务器应用程序提供。服务器应用程序的示例包括邮件服务器、文件服务器、web服务器,以及代理服务器。服务器通常是高特权的,以使得它可以服务于请求并访问它服务于请求所需要访问的信息。
客户机是通过网络访问服务器上的远程服务的应用程序或计算机。客户机-服务器模型广泛地用于因特网上,其中,用户可以通过因特网协议套件连接到在远程系统上操作的服务。web浏览器是用户计算机上的可以访问网络中的任何web服务器上的信息并检索网页供显示在用户计算机上的客户机程序(或进程,即,正在执行的程序是进程)。这样的客户机对于保护机密、有特权或敏感信息,以及对于防窜改目的,通常是低特权的。
例如,在某些情况下,可能需要使用在客户机计算机上运行的基于浏览器的应用程序来调试服务器应用程序。然而,在客户机计算机上运行的基于浏览器的应用程序通常没有足够的特权来调试服务器上的应用程序。基于客户机的应用程序的特权级别相对于服务器被保持得较低,以使得基于客户机的应用程序不能损坏操作系统或在服务器上运行的其他进程。为将基于客户机的基于浏览器的应用程序的特权级别提高到调试基于服务器的应用程序的足够的级别,通常必须在客户机计算机处安装允许软件。例如,被配置成提高基于客户机计算机的应用程序的特权的调试DLL(动态链接库),或其他形式的调试API(应用程序编程接口),可能需要被安装在客户机计算机处。
本发明的各实施例克服了用于在客户机-服务器环境中调试应用程序的传统技术的缺陷。下面几部分描述了这样的实施例的示例。
III.示例低特权调试实施例
此处所描述的示例实施例只是为说明性用途而提供,而不是限制性的。此外,通过此处的原理,附加的结构和操作实施例,包括修改/更改,对于相关领域的技术人员将变得显而易见。
本发明的各实施例涉及对应用程序的调试。在各实施例中,在客户机计算机上运行的调试器应用程序被允许在不提升在客户机计算机处运行的基于浏览器的应用程序的特权级别的情况下调试基于服务器的应用程序。由于不必提高调试器应用程序的特权级别,因此,避免了服务器上的安全性问题。在一个实施例中,在调试器应用程序和被调试应用程序之间建立双向通信信道。与调试相关的消息被允许通过双向通信信道在调试器和被调试应用程序之间传输。在一个实施例中,消息未经修改地到达,并按由特定发送方(调试器或者被调试应用程序)发送的相同顺序。在一个实施例中,被调试应用程序被配置成能够阻止其自己的执行的线程,同时等待来自调试器应用程序的调试请求。
在各实施例中,可以由调试器和被调试应用程序使用各种协议来通过双向通信信道进行通信。例如,在一个实施例中,可以根据HTTP(超文本传输协议)配置双向通信信道。以此方式,标准web安全机制可以由通信来使用。
图1示出了其中可以实现本发明的实施例的示例客户机-服务器通信系统100的框图。如图1所示,系统100包括客户机计算机106、服务器计算机108,以及网络110。下面描述了系统100。
客户机计算机106和服务器计算机108可以各自是此处所描述的任何合适类型或以其他方式已知的计算设备,包括台式计算机、移动计算机或计算设备,或其他类型的计算机。网络110被配置成可通信地耦合客户机计算机106和服务器计算机108。网络110可包括有线和/或无线的一个或多个通信链路和/或通信网络,如PAN(个人区域网络)、LAN(局域网)、WAN(广域网),或诸如因特网之类的网络的组合,并可包括有线或无线的一个或多个电信网络,如GSM(全球移动通信系统)网络、3G网络,和/或其他网络。
服务器计算机108包括(例如,存储在存储器和/或相关联的存储器中)调试器应用程序102和被调试应用程序104。调试器应用程序102包括调试能力,并可包括更进一步的能力。例如,调试器应用程序102被配置成能够调试被调试应用程序104。调试器和被调试应用程序102和104可以是相同类型的应用程序或进程,或者也可以是不同类型的应用程序或进程。如图1所示,客户机计算机106被配置成执行浏览器112。在一个实施例中,调试器和被调试应用程序102和104可以是基于浏览器的应用程序,它们能够被由诸如浏览器112之类的浏览器加载和运行。例如,调试器和被调试应用程序102和104可以由浏览器112直接执行和/或由浏览器112的“插件”或“附加件”执行。这样的插件的示例包括由位于美国华盛顿州雷德蒙市的微软公司发布的SilverlightTM、JavascriptTM插件(JavascriptTM是由位于加利福尼亚州圣克拉拉市的Sun Microsystems有限公司发布的)、由位于加利福尼亚州圣何塞市的Adobe Systems有限公司开发的Adobe Flash播放器,以及其他插件。由此,调试器和被调试应用程序102和104可以是SilverlightTM进程、JavascriptTM进程、Flash进程(例如,.SWF文件),以及其他应用程序/脚本。浏览器112可以是任何类型的web浏览器,包括Microsoft Internet ExplorerGoogle Chrome、Mozilla Firefox等等。
如由图1中的虚线所指示的,浏览器112可以加载调试器应用程序102。例如,浏览器112可以导航(例如,通过用户与浏览器112的交互)至由包括调试器应用程序102的服务器计算机108服务的网页。结果,调试器应用程序102被下载到客户机计算机106中。在客户机计算机106上,用户可以与调试器应用程序102进行交互(例如,通过浏览器112)以调试被调试应用程序104。根据一个实施例,在调试器应用程序102和被调试应用程序104之间建立双向通信信道,通过该信道,调试器应用程序102能够调试被调试应用程序104。
例如,图2示出了根据示例实施例的调试系统200的框图。如图2所示,系统200包括调试器应用程序102、被调试应用程序104、信道中继器模块202,以及双向通信信道204。如图2所示,调试器应用程序102通过双向通信信道204将调试相关消息206传输到被调试应用程序104,而被调试应用程序104通过双向通信信道204将与调试相关的消息208传输到调试器应用程序102。在一个实施例中,调试相关消息206和208分别以未经修改的形式并以与它们被传输的相同的顺序到达被调试应用程序104和调试器应用程序102。在一个实施例中,调试器应用程序102和被调试应用程序104之间的消息206和208在双向通信信道204中流过信道中继器模块202。信道中继器模块202允许调试器应用程序102通过双向通信信道204来调试被调试应用程序104,而无需提升调试器应用程序102的特权级别。
可以以各种方式来配置调试器应用程序102和被调试应用程序104以便能通过双向通信信道204进行调试。例如,图3示出了根据示例实施例的调试器应用程序300的框图。此外,图4还示出了根据示例实施例的被调试应用程序400的框图。调试器应用程序300是调试器应用程序102的示例,而被调试应用程序400是被调试应用程序104的示例。下面描述了调试器应用程序300和被调试应用程序400。
如图3所示,调试器应用程序300包括信道建立器模块302、调试启动模块304,以及调试器模块306。在图3的示例中,调试器模块306包括调试指令传输模块308和调试响应接收器模块310。信道建立器模块302被配置成调用信道中继器模块202以在调试器应用程序102和被调试应用程序104之间建立双向通信信道204。调试启动模块304被配置成通过信道中继器模块202从图4的被调试应用程序400接收开始指示312。调试器模块306被配置成对被调试应用程序400执行一个或多个调试操作。调试指令传输模块308被配置成通过信道中继器模块202将调试请求消息314传输到被调试应用程序400。调试响应接收器模块310被配置成通过信道中继器模块202接收调试已执行消息316,作为对来自被调试应用程序400的调试请求消息314的响应。
如图4所示,被调试应用程序400包括调试控制模块402和应用程序执行模块410。调试控制模块402被配置成执行对被调试应用程序400的调试,如由来自调试器应用程序400的通过信道中继器模块202的通信所控制的。应用程序执行模块410允许如由调试控制模块402所控制的,执行被调试应用程序400的应用程序代码。在图4的示例中,调试控制模块402包括调试开始模块404、执行阻止模块406,以及调试响应传输模块408。调试开始模块404被配置成允许调试被调试应用程序400。例如,如图4所示,调试开始模块404生成开始指示412,用以指示对被调试应用程序400的调试可以进行。开始指示412由图3中的调试启动模块304通过信道中继器模块202接收到,来作为开始指示312。
如图4所示,执行阻止模块406从调试开始模块404接收阻止信号414。调试开始模块404在传输开始指示412之后生成阻止信号414。执行阻止模块406维持被调试应用程序104的状态,并被配置成在接收到阻止信号414之后进入被阻止等待状态。此外,执行阻止模块406还生成执行启用/禁用信号418,该信号由应用程序执行模块410接收。在执行阻止模块406的被阻止等待状态,生成执行启用/禁用信号418以导致被调试应用程序400的代码在应用程序执行模块410中的执行被禁用(即,被停止或阻止)。
如在图4中进一步示出的,执行阻止模块406可以从信道中继器模块202接收调试请求消息416,该消息是由信道中继器模块202接收到的调试请求消息314。调试请求消息416指示要对被调试应用程序400的代码执行的一个或多个调试动作/操作。在接收到调试请求消息416之后,执行阻止模块406变换到运行状态,并生成执行启用/禁用信号418,以导致被调试应用程序400的代码应用程序执行模块410中的执行被启用(例如,执行启用/禁用信号418的值相对于被配置成禁用应用程序执行模块410的值而切换或改变)。由此,由应用程序执行模块410对被调试应用程序400的代码的执行可以进行。如图4所示,应用程序执行模块410生成执行输出420,该输出由调试响应传输模块408接收。执行输出420指示正在由应用程序执行模块410执行的代码中的执行的当前点,一个或多个变量值,和/或关于被调试应用程序104的代码的执行的所感兴趣的更进一步的信息。
此外,执行阻止模块406还生成调试指令422。调试指令422是从调试请求消息416(从图3的调试请求消息314)中提取的调试指令。调试指令422可包括要对被调试应用程序400的代码执行的各种调试操作指令中的一个或多个,包括设置断点和运行,设置断点和步进的指令等等。调试指令422由调试响应传输模块408接收。调试响应传输模块408监视执行输出420,并确定调试指令422何时完成,诸如到达断点,步进已完成等等。当调试响应传输模块408确定调试指令422已完成时,调试响应传输模块408生成由执行阻止模块406接收的阻止信号426。执行阻止模块406被配置成在接收到阻止信号426之后转换到被阻止等待状态,并生成执行启用/禁用信号418,以导致被调试应用程序400的的代码在应用程序执行模块410中的执行被禁用。此外,当调试响应传输模块408确定调试指令422已完成时,调试响应传输模块408还生成调试已执行消息424。调试已执行消息424被传输到信道中继器模块202,该模块202将调试已执行消息424作为调试已执行消息316传输到调试响应接收器模块310。调试已执行消息424指示调试请求消息314已经被完成,并可以可任选地包括更进一步的信息,包括执行输出420的信息。
回顾图2,调试器应用程序102可以以各种方式执行对被调试应用程序104的调试。例如,图5示出了根据示例实施例的提供了调试器应用程序执行对被调试应用程序104的调试的过程的流程图500。例如,流程图500可以由调试器应用程序102执行并由图3的调试器应用程序300执行。基于关于流程图500的讨论,其他结构和操作实施例对相关领域技术人员而言是显而易见的。在下面的子节描述了流程图500。
A.用于建立双向通信信道的示例实施例
如图5所示,流程图500从步骤502开始。在步骤502中,调用信道中继器模块以在第一基于浏览器的应用程序和第二基于浏览器的应用程序之间建立双向通信信道。参考图2,例如,可以调用信道中继器模块202以在调试器应用程序102(第一基于浏览器的应用程序)和被调试应用程序104(第二基于浏览器的应用程序)之间建立双向通信信道204。例如,在一个实施例中,信道中继器模块202可以由图3所示出的信道建立器模块302来调用。当信道中继器模块202被调用时,信道中继器模块202变成被启用以从调试器应用程序102接收消息,并将它们传输到被调试应用程序104,并且从被调试应用程序104接收消息,并将它们传输到调试器应用程序102。调试器和被调试应用程序102和104被允许使用它们被加载到其中的浏览器(诸如图1所示出的浏览器112)启用的通信协议来进行通信。例如,通信协议可以由浏览器直接启用(例如,HTTP)和/或由浏览器的附加件/插件启用。这允许调试器和被调试应用程序102和104通过双向通信信道进行通信,以调试被调试应用程序104,而无需提升特权。
在一个实施例中,信道中继器模块202可以被包括在调试器应用程序300中。在这样的实施例中,当对应用程序的调试将被执行时,信道建立器模块302可以调用调试器应用程序300中的信道中继器模块202。在另一实施例中,信道中继器模块202可以是调试器应用程序300外部的,如被包括在与其中包括了调试器应用程序的同一计算机系统中,或被包括在不同的计算机系统中。在这样的实施例中,当对应用程序的调试将被执行时,信道建立器模块302可以通过将信道调用信号318(图3所示出的)传输到信道中继器模块202来调用信道中继器模块202。
例如,图6示出了根据示例实施例的调试系统600的框图。调试系统600是图2所示出的调试系统200的示例。如图6所示,系统600包括调试器应用程序102、被调试应用程序104、信道中继器模块202、双向通信信道204、第一浏览器112a、第二浏览器112b,以及服务器计算机108。在图6中,第一浏览器112a运行并为调试器应用程序102提供用户界面,而第二浏览器112运行并为被调试应用程序104提供用户界面。第一浏览器112a和第二浏览器112b可以被包括在同一浏览器中(例如,是图1中的浏览器112的分开的窗口或标签),或者也可以是分开的浏览器调用。在图6的实施例中,信道中继器模块202被包括在服务器计算机108中。由此,如上文所描述的,当对应用程序的调试将被执行时,图3所示出的信道建立器模块302可以通过将信道调用信号318传输到服务器计算机108上的信道中继器模块202来调用信道中继器模块202。
如图6所示,调试器应用程序102通过服务器计算机108上的信道中继器模块202(例如,通过图1所示出的网络110),将与调试相关的消息206传输到被调试应用程序104。例如,调试器应用程序102将调试相关消息206a(例如,图3的消息314)传输到服务器计算机108上的信道中继器模块202,该模块202又将相同的消息作为调试相关消息206b(例如,图4的消息416)传输到被调试应用程序104。此外,被调试应用程序104还通过服务器计算机108上的信道中继器模块202将调试相关消息208传输到调试器应用程序102。例如,被调试应用程序104将调试相关消息208a(例如,图4的开始指示412或消息424)传输到服务器计算机108上的信道中继器模块202,该模块202又将相同的消息作为调试相关消息208b(例如,图3的开始指示312或消息316)传输到调试器应用程序102。
图7示出了根据示例实施例的调试系统700的框图。调试系统700是图2所示出的调试系统200的另一个示例。如图7所示,系统700包括调试器应用程序102、被调试应用程序104、信道中继器模块202、双向通信信道204、第一浏览器112a、第二浏览器112b,以及服务器计算机108。在图7的实施例中,信道中继器模块202和双向通信信道204被包括在客户机计算机106中。当对应用程序的调试将被执行时,图3所示出的信道建立器模块302可以调用客户机计算机106中的信道中继器模块202。如上文所描述的,虽然在图6中未示出,信道中继器模块可以被包括在调试器应用程序102中。
如图7所示,调试器应用程序102通过客户机计算机106中的信道中继器模块202将调试相关消息206传输到被调试应用程序104。例如,调试器应用程序102将调试相关消息206a(例如,图3的消息314)传输到客户机计算机106上的信道中继器模块202,该模块202又将调试相关消息206b(例如,图4的消息416)传输到被调试应用程序104。此外,被调试应用程序104还通过客户机计算机106上的信道中继器模块202将与调试相关的消息208传输到调试器应用程序102。例如,被调试应用程序104将调试相关消息208a(例如,图4的开始指示412或消息424)传输到客户机计算机106上的信道中继器模块202,该模块202又将调试相关消息208b(例如,图3的开始指示312或消息316)传输到调试器应用程序102。
B.用于启动调试的示例实施例
在此子章节描述了用于启动调试的示例实施例。可以以各种方式启动对被调试应用程序104的调试。回顾图5,在流程图500的步骤504中,通过信道中继器模块从第二基于浏览器的应用程序接收开始指示。参考图2,例如,被调试应用程序104可以通过信道中继器模块202将开始指示传输到调试器应用程序102以启动对被调试应用程序104的调试。
图8示出了根据示例实施例的调试系统800的框图。本章节参考图8以示出了用于启动对被调试应用程序104的调试的示例实施例。调试系统800类似于图2所示出的调试系统200,并且还示出了在双向通信信道204中调试器应用程序102和被调试应用程序104之间的通过信道管理器模块的示例通信。参考示出了根据示例实施例的用于启动对被调试应用程序104的调试的相应的流程图的图9-12描述了图8。图9示出了被调试应用程序中的用于启动调试的过程的流程图900。图10和11示出了在启动调试过程中调试器应用程序的相应的流程图1000和1100。图12示出了在启动调试过程中信道中继器模块的流程图1200。基于关于流程图900、1000、1100、1200,以及图8的系统800的讨论,其他结构和操作实施例对相关领域技术人员是显而易见的。
如图9所示,流程图900始于步骤902。在步骤902中,通过信道中继器模块,将开始指示传输到第一基于浏览器的应用程序。例如,参考图8,被调试应用程序104可以将开始指示412传输到信道管理器模块202,而信道管理器模块202可以将开始指示412作为开始指示312传输到调试器应用程序102。如上文参考图4所描述的,调试开始模块404可以生成开始指示412,并且如图3所示,调试启动模块304可以接收开始指示312。
在步骤904中,第二基于浏览器的应用程序转换到被阻止等待状态。例如,在传输开始指示412之后,被调试应用程序104可以转换到被阻止等待状态。例如,如上文参考图4所描述的,执行阻止模块406可以生成执行启用/禁用信号418,以导致被调试应用程序400的代码在应用程序执行模块410中的执行被禁用(即,被停止或阻止)。以此方式,被调试应用程序104的代码的执行可以被阻止,甚至在被调试应用程序104的第一代码行之前。
关于调试器应用程序102,可以以各种方式启动对被调试应用程序104的调试。流程图1000和1100(图10和11)示出了用于在调试器应用程序102中启动对被调试应用程序104的调试的示例实施例。例如,如图10所示,流程图1000包括步骤1002。在步骤1002中,作为由第二基于浏览器的应用程序向所述信道中继器模块的传输开始指示的结果,从所述信道中继器模块异步地接收开始指示。例如,参考图8,可以从信道管理器模块202异步地接收开始指示312。在这样的实施例中,调试器应用程序102不必一定等待或提供调试器应用程序102正在等待开始指示312的指示。
在图11的实施例中,流程图1100始于步骤1102。在步骤1102中,将等待指示传输到信道中继器模块。例如,如图8所示,调试器应用程序102可以将等待指示802传输到信道管理器模块202。例如,参考图3,调试启动模块304可以被配置成传输等待指示802。
在步骤1104中,浏览器导航到第二基于浏览器的应用程序的地址。例如,如上文所描述的,调试器应用程序102可能先前已经被调用,如通过将浏览器112导航到包括调试器应用程序102的服务器计算机108上的网页。在步骤1104中,浏览器112可以导航到服务器计算机108上的被调试应用程序104的地址(例如,网页的统一资源定位符(URL))。以此方式,被调试应用程序104被加载,以供由调试器应用程序102进行调试。
在步骤1106中,等待来自信道中继器模块的对张贴(post)的等待指示的响应。例如,参考图8,在传输等待指示802之后,调试器应用程序102可以被配置成等待接收开始指示312。步骤1106是可选的,而在其他实施例中,调试器应用程序102可以不一定等待开始指示312(例如,调试器应用程序102可以同时执行其他功能)。
在步骤1108中,响应于等待指示,且作为由第二基于浏览器的应用程序向信道中继器模块传输开始指示的结果,从信道中继器模块接收开始指示。例如,参考图8,可以响应于等待指示802被传输到信道中继器模块202,从信道管理器模块202接收开始指示312。
如上文所描述的,信道中继器模块202对于由调试器应用程序102和被调试应用程序104传输的信号执行中继器功能。参考图12,流程图1200始于步骤1202。在步骤1202中,从第一基于浏览器的应用程序接收等待指示。例如,如图8所示,等待指示802由信道中继器模块202从调试器应用程序102接收。步骤1202是可选的。
在步骤1204中,从第二基于浏览器的应用程序接收开始指示。例如,如图8所示,开始指示412由信道中继器模块202从被调试应用程序104接收。
在步骤1206中,向第一基于浏览器的应用程序传送开始指示。例如,如图8所示,开始指示412由信道中继器模块202作为开始指示312传输到调试器应用程序102。
C.用于执行调试的示例实施例
在此子章节描述了用于执行调试的示例实施例。回顾图5,在流程图500的步骤506中,对第二基于浏览器的应用程序执行调试操作。参考图2,例如,调试器应用程序102可以通过信道中继器模块202对被调试应用程序104执行一个或多个调试操作。
可以以各种方式执行由调试器应用程序102对被调试应用程序104的调试。例如,图13-16示出了根据示例实施例的用于执行调试的流程图。图13和14示出了在调试器应用程序中执行用于调试的过程的流程图1300和1400。图15示出了调试期间被调试应用程序的流程图1500。图16示出了执行调试期间信道中继器模块的流程图1600。为了说明,参考图8所示出的调试系统800描述了流程图1300、1400、1500,以及1600。基于关于流程图1300、1400、1500、1600,以及图8的系统800的讨论,其他结构和操作实施例对相关领域技术人员是显而易见的。
如图13所示,流程图1300始于步骤1302。在步骤1302中,通过信道中继器模块将调试请求消息传输到第二基于浏览器的应用程序以导致第二基于浏览器的应用程序从被阻止等待状态转换到运行状态,并执行由调试请求消息指示的调试动作。例如,如图8所示,调试器应用程序102可以将调试请求消息314传输到信道管理器模块202。例如,参考图3,调试指令传输模块308可以被配置成传输调试请求消息314。调试请求消息314可包括要对被调试应用程序104执行的一个或多个调试操作,如在别处所描述的。
在步骤1304中,通过信道中继器模块,从第二基于浏览器的应用程序接收对调试请求消息的响应。例如,参考图8,通过信道中继器模块202,由调试器应用程序102接收调试已执行消息316,作为对来自被调试应用程序104的调试请求消息314的响应。参考图3,调试响应接收器模块310可以被配置成接收调试已执行消息316。在接收到调试已执行消息316之后,被调试应用程序104的代码的执行被阻止。由此,用户(例如,正在与浏览器112进行交互)可以被允许在其当前执行状态执行对被调试应用程序104的调试分析。
调试器应用程序102可以可任选地等待对调试请求消息314的响应。例如,在这样的实施例中,调试器应用程序102可以根据图14所示出的流程图1400来执行图13的流程图1300。如图14所示,流程图1400始于步骤1402。在步骤1402中,将调试请求消息传输到信道中继器模块。例如,如图8所示,调试器应用程序102可以将调试请求消息314传输到信道管理器模块202。
在步骤1404中,等待来自信道中继器模块的对调试请求消息的响应。例如,参考图8,在传输调试请求消息314之后,调试器应用程序102可以被配置成等待接收调试已执行消息316。步骤1404是可选的,而在其他实施例中,调试器应用程序102可以不一定等待调试已执行消息316(例如,调试器应用程序102可以同时执行其他功能)。
在步骤1406中,从信道中继器模块接收包括由第二基于浏览器的应用程序向信道中继器模块传输的调试已执行消息的对调试请求消息的响应。例如,参考图8,通过信道中继器模块202,由调试器应用程序102接收调试已执行消息316——作为对来自被调试应用程序104的调试请求消息314的响应。
关于被调试应用程序104,可以以各种方式执行调试。例如,如图15所示,流程1500始于步骤1502。在步骤1502中,响应于先前的传输,从信道中继器模块接收调试请求消息。例如,参考图8,由被调试应用程序104接收传输到信道中继器模块202的调试请求消息314,作为调试请求消息416。如上文参考图4所描述的,执行阻止模块406可以接收调试请求消息416。在一个实施例中,由被调试应用程序104响应于先前到信道中继器模块202的传输,接收调试请求消息416。例如,可以响应于被调试应用程序104向信道中继器模块202传输开始指示412(例如,在启动调试时)或响应于向信道中继器模块202传输先前的调试已执行消息424(例如,在紧邻的先前的调试周期期间),从信道中继器模块202接收调试请求消息416。
在步骤1504中,第二基于浏览器的应用程序从被阻止等待状态转换到运行状态。例如,在接收到调试请求消息416之后,被调试应用程序104可以从被阻止等待状态转换到运行状态。例如,如上文参考图4所描述的,执行阻止模块406可以生成执行启用/禁用信号418,以导致被调试应用程序400的代码在应用程序执行模块410中的执行被启用。
在步骤1506中,执行由调试请求消息指示的调试动作。被调试应用程序104执行由调试请求消息416指示的调试动作。例如,如图4所示,执行阻止模块406生成调试指令422。调试指令422是从调试请求消息416中提取的调试指令。调试指令422可包括要对被调试应用程序400的代码执行的各种调试操作指令中的一个或多个,包括设置断点和运行,设置断点和步进的指令或此处所描述的或以其他方式已知的其他调试操作。
在步骤1508中,将调试已执行消息传输到信道中继器模块。例如,参考图8,调试已执行消息424由被调试应用程序104传输到信道中继器模块202。如上文参考图4所描述的,调试响应传输模块408可以生成调试已执行消息424。
如上文所描述的,信道中继器模块202对于由调试器应用程序102和被调试应用程序104传输的信号执行中继器功能。参考图16,流程图1600始于步骤1602。在步骤1602中,从第一基于浏览器的应用程序接收调试请求消息。例如,如图8所示,调试请求消息314由信道中继器模块202从调试器应用程序102处接收。
在步骤1604中,响应于从第二基于浏览器的应用程序到信道中继器模块的先前的传输,调试请求消息被传输到第二基于浏览器的应用程序。例如,如图8所示,调试请求消息314作为调试请求消息416,被从信道管理器模块202传输到被调试应用程序104。在一个实施例中,如上文所描述的,调试请求消息314可以作为对以前的传输的响应被从被调试应用程序104传输到信道中继器模块202。
在步骤1606中,从第二基于浏览器的应用程序接收调试已执行消息。例如,如图8所示,在信道管理器模块202处从被调试应用程序104接收调试已执行消息424。
在步骤1608中,响应于调试请求消息,调试已执行消息被传输到第一基于浏览器的应用程序。例如,如图8所示,调试已执行消息424被从信道管理器模块202作为调试已执行消息424传输到调试器应用程序102。在一个实施例中,调试已执行消息424可以作为对从调试器应用程序102到信道中继器模块202的先前的传输(如调试请求消息314)的响应,被传输到调试器应用程序102。
注意,如上文所描述的,可以以各种方式执行由调试器应用程序102通过信道中继器模块202对被调试应用程序104的调试。例如,在一个实施例中,可以以多线程方式调试被调试应用程序104,其中,调试开始模块404在第一线程中执行,且应用程序执行模块410在第二线程中执行,并且第一和第二线程协作以如上文参考流程图1500所描述的类似的方式执行调试。
在另一实施例中,可以使用过程调用来执行流程图1500,以调试被调试应用程序104。例如,在这样的实施例中,执行阻止模块406可以被配置成将调用插入到被调试应用程序400的代码中。应用程序执行模块410被配置成在被由调试控制模块402接收到的调试请求消息416(步骤1502)启用(步骤1504)之后执行代码(图15的步骤1506)。应用程序执行模块410执行代码,直到到达代码中的被插入的调用。在这个点,应用程序执行模块410被作为方法调用而被发送到调试控制模块402的消息420阻止执行进一步的代码,而调试已执行消息424被从调试控制模块402传输(步骤1508)。每当接收到另一个调试请求消息416时,应用程序执行模块410都从由消息420调用的方法返回,并执行代码,直到到达下一调用,在该点,代码的执行被消息420的下一方法调用阻止,并且调试已执行消息424被传送。如果需要,则可以使用单个线程执行以此方式使用过程调用的实施例。在这样的情况下,如上文所描述的,当到达执行代码中的调用时,线程可以能够阻止其本身。这可以例如通过使用XMLHttpRequest(这是提供用于在客户机和服务器之间传输数据的脚本化客户机功能的API)的发送方法的非异步形式来传输消息412和424来完成。发送方法返回将在随后充当接收消息416。当发送方法被阻止时,应用程序执行模块410被阻止(根据需要)等待消息420返回,消息420又被阻止等待消息416到达。
D.用于终止调试的示例实施例
在一个实施例中,由调试器应用程序102对被调试应用程序104的调试可以终止。可以以各种方式实现这样的调试的结束。例如,图17-19示出了根据示例实施例的用于结束调试的流程图1700、1800,以及1900。为了说明,参考图8所示出的调试系统800描述了图17-19。基于关于图17-19,以及图8的系统800的讨论,其他结构和操作实施例对相关领域技术人员是显而易见的。
例如,图17示出了根据示例实施例的可以由调试器应用程序102执行以终止调试的步骤1702。在步骤1702中,将终止消息传输到信道管理器模块。例如,如图8所示,调试器应用程序102将终止消息804传输到信道管理器模块202。参考图3,例如,可以由调试指令传输模块308生成终止消息804。例如,正在调试被调试应用程序104的用户可以确定调试已完成,并可以导致调试器应用程序102(例如,通过与浏览器112上的调试器应用程序102进行交互)传输终止消息804。可另选地,可以通过关闭被调试应用程序104,通过关闭正在运行被调试应用程序104的浏览器,或以另一种方式,来传输终止消息804。
图18示出了根据示例实施例的在调试终止期间可以在信道管理器模块202中执行的流程图1800。在步骤1802中,从第一基于浏览器的应用程序接收终止消息。例如,如图8所示,终止消息804由信道管理器模块202从调试器应用程序102接收。
在步骤1804中,向第二基于浏览器的应用程序传输终止消息。例如,如图8所示,结束消息804被作为结束消息806从信道管理器模块202传输到被调试应用程序104。
图19示出了根据示例实施例的在调试终止期间可以在被调试应用程序104中执行的流程图1900。在步骤1902中,从信道管理器模块接收终止消息。例如,如图8所示,被调试应用程序104接收终止消息806。在一个实施例中,响应于被调试应用程序104向信道中继器模块202传输先前的调试已执行消息424(例如,在紧邻的先前的调试周期期间),可以从信道中继器模块202接收终止消息806。
在步骤1904中,终止执行。在一个实施例中,在接收到终止消息806之后,被调试应用程序104终止。
E.示例通信协议实施例
注意,如上文所描述的,在各实施例中,可以由调试器应用程序102和被调试应用程序104使用各种协议来通过双向通信信道204进行通信。例如,在一个实施例中,双向通信信道204可以被根据HTTP(超文本传输协议)来配置,由此,通信可以通过双向通信信道204使用标准web安全机制来执行。使用标准HTTP协议允许第一基于浏览器的应用程序调试基于另一个浏览器的应用程序。例如,第一SilverlightTM应用程序可以被允许调试第二SilverlightTM应用程序,而无需以此方式提升特权。
在一个实施例中,可以使用HTTP服务器(例如,服务器计算机108)和标准HTTP协议来实现双向通信信道204。通过向HTTP服务器执行HTTPpost,信道参与者可以通过双向通信信道204来发送和接收消息。例如,参考图8,等待指示802、开始指示412、调试请求消息314、调试已执行消息424,以及终止消息804可以各自被作为HTTP post传输到信道管理器模块202。开始指示312、调试请求消息416、调试已执行消息316、,以及终止消息806可以各自由调试器应用程序102和被调试应用程序104作为对相对应的HTTP post的响应,从信道管理器模块202传输。在一个实施例中,可以通过使用HTTPS(超文本传输协议安全)代替HTTP来保护双向通信信道204的安全。关于授权,在一个实施例中,可以使用标准HTTP授权技术,包括SharedKey等等。
如果如上文所描述的,服务器计算机108是调试器应用程序102的起点的服务器,并且是被调试应用程序104的起点的域,则不需要提升特权。如果不是,则可以由调试器应用程序102使用标准跨站脚本技术。被调试应用程序104可以使用允许阻止执行的跨站脚本技术。
服务器可以通过使用URI参数来指定哪一个信道正在被使用,来支持多个同时的信道。在一个实施例中,可以使用此技术,以及ASP.NET的IHttpAsyncHandler来实现请求处理程序以最小化在信道参与者正在等待消息时消耗的线程的数量。
通过双向通信信道204传输的消息的格式可以是诸如XML(可扩展标记语言)文档或其他消息格式类型之类的八位位组的任何序列。
如上文所描述的,被调试应用程序104被配置成当到达断点或完成步进操作时阻止执行。例如,如上文所描述的,执行阻止模块406可以允许这样的阻止。
IV.示例低特权调试流水线实施例
在一个实施例中,双向通信信道204可被配置成低特权调试信道。例如,可以配置低特权调试流水线,该流水线使用双向通信信道204来在调试器应用程序102和被调试应用程序104之间执行通信。在一个实施例中,起点HTTP服务器(例如,服务器计算机108)的域可以通过提供低特权调试流水线来促进调试器应用程序102和被调试应用程序之间的通信。
例如,图20示出了根据示例实施例的可以由服务器计算机108执行的步骤2002。在步骤2002中,双向通信信道被配置为低特权调试流水线。图21A和21B示出了根据此处所公开的主题的其他方面允许低特权调试的系统2100的示例。系统2100可包括下列各项中的一个或多个:诸如服务器2102之类的一个或多个服务器计算机等等,和/或一个或多个客户机计算机2118、2120等等。服务器2102是服务器计算机108的示例,而客户机计算机2118和2120是客户机计算机106的示例。
可以通过将第一客户机进程(例如,浏览器客户机1 2104)通过第一连接(例如,因特网协议连接2122)连接到服务器(例如,服务器计算机2102),将第二客户机进程(例如,浏览器客户机2 2106)通过第二连接(例如,因特网协议连接2124)连接到服务器计算机2102,并在随后从通信信道中移除服务器,如图21B所示,允许客户机进程(例如,浏览器客户机1 2104和浏览器客户机2 2106)通过低特权流水线(例如,低特权调试流水线2114)直接进行通信——代替如在传统的调试模式中那样让第一客户机下载可调试第二客户机的具特权的组件——来建立客户机-客户机调试连接。
例如,假设因特网用户通过该用户的浏览器(例如,浏览器客户机12104)导航到服务器2102上的网页并下载JAVA小程序,某些MicrosoftSilverlight代码,或通常在浏览器内的客户端上运行的其他应用程序,通常是低特权组件。假设应用程序(JAVA小程序或Silverlight代码)打开第二浏览器(例如,浏览器客户机2 2106),以使得现在客户机机器具有在它上运行的两个浏览器客户机。假设应用程序具有数行脚本代码在它内部运行。第一浏览器客户端(例如,浏览器客户端2104)可以通过发布低特权调试流水线(例如,低特权调试流水线2114)(通过使用低特权调试流水线发布者),来调试下载的代码。第一浏览器客户机通过低特权调试流水线2114向后与服务器2102进行通信。服务器2102可以将低特权调试流水线2114转发到第二浏览器客户端2106。由此,服务器充当客户机计算机2118上的第一和第二浏览器之间的流水线管道。服务器2102可以在连接之外被优化,以便通信,不是从客户机上的一个浏览器到服务器并返回到客户机上的另一个浏览器,而是在客户机计算机2118上的客户机浏览器之间直接进行。即,通信的路由可以被优化,以便通过低特权调试流水线直接在在客户机上运行的两个低特权浏览器之间建立通信,从而建立客户机-客户机低特权调试会话。
在一个实施例中,可以在调试流水线2114中实现双向通信信道204(包括信道中继器模块202),以使得调试器应用程序102和被调试应用程序104能够以低特权方式如此处所描述的进行通信。在2008年12月19日提交的题为“Low Privilege Debugging Pipeline(低特权调试流水线)”的共同受让的、共同待审的美国申请No.12/339,111中描述了适用于本发明的各实施例的低特权调试流水线的进一步的描述和示例,该申请的全部内容通过援引纳入于此。
V.其他示例实施例
图22描绘了其中可以实现本发明的各实施例的计算机2200的示例性实现。例如,可以类似于计算机2200实现客户机计算机106(图1、6和7)、服务器计算机108(图1和6)、客户机计算机2118(图21A和21B),以及服务器计算机2102(图21A和21B),并可包括计算机2200的一个或多个特征和/或替换的特征。计算机2200可以是例如诸如个人计算机、移动计算机或工作站之类的常规计算机形式的通用计算设备,或者,计算机2200可以是特殊用途的计算设备。此处所提供的对计算机2200的描述只是为了说明,并不是限制性的。如相关领域的技术人员所知道的,本发明的各实施例可以在其他类型的计算机系统中实现。
如图22所示,计算机2200包括处理单元2202、系统存储器2204,以及将包括系统存储器2204的各种系统组件耦合到处理单元2202的总线2206。系统总线2206表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种总线体系结构中的任何一种的处理器或局部总线。系统存储器2204包括只读存储器(ROM)2208和随机存取存储器(RAM)2210。基本输入/输出系统2212(BIOS)存储在ROM 2208中。
计算机2200还具有一个或多个以下驱动器:用于读写硬盘的硬盘驱动器2214、用于读或写可移动磁盘2218的磁盘驱动器2216、以及用于读或写诸如CD ROM、DVD ROM或其他光介质之类的可移动光盘2222的光盘驱动器2220。硬盘驱动器2214、磁盘驱动器2216,以及光驱动器2220分别通过硬盘驱动器接口2224、磁盘驱动器接口2226,以及光学驱动器接口2228连接到系统总线2206。驱动器以及它们相关联的计算机可读介质为计算机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算
机可读介质来存储数据。
数个程序模块可被存储在硬盘、磁盘、光盘、ROM,或RAM上。这些程序包括操作系统2230、一个或多个应用程序2232、其他程序模块2234,以及程序数据2236。应用程序2232或程序模块2234可包括,例如,用于实现浏览器112、调试器应用程序102、被调试应用程序104、信道中继器模块202、信道建立器模块302、调试启动模块304、调试器模块306、调试指令传输模块308、调试响应接收器模块310、调试控制模块402、调试开始模块404、执行阻止模块406、调试响应传输模块408、应用程序执行模块410、调试流水线2114、浏览器客户机2104、浏览器客户机2106、流程图500、900、1000、1100、1200、1300、1400、1500、1600、1700、1800、1900和/或2000(包括流程图500、900、1000、1100、1200、1300、1400、1500、1600、1700、1800、1900和/或2000的任何步骤),和/或如上文所描述的任何进一步实施例的计算机程序逻辑(和/或其他合适的装置)。
用户可以通过诸如键盘2238和定点设备2240之类的输入设备向计算机2200中输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些及其他输入设备常常通过耦合到总线2206的串行端口接口2242连接到处理单元2202,但是,也可以通过其他接口,诸如并行端口、游戏端口、通用串行总线(USB)端口,来进行连接。
监视器2244或其他类型的显示设备也可以经由诸如视频适配器2246之类的接口来连接到系统总线2206。除了监视器之外,计算机2200还可包括其他外围输出设备(未示出),如扬声器和打印机。
计算机2200通过网络接口或适配器2250、调制解调器2252、或用于通过网络建立通信的其他装置连接到网络2248(例如,因特网)。调制解调器2252(可以是内置的或外置的),通过串行端口接口2242连接到系统总线2206。
如此处所使用的,术语“计算机程序介质”和“计算机可读介质”被用来泛指诸如与硬盘驱动器2214相关联的硬盘、可移动磁盘2218、可移动光盘2222,以及诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他介质。
如上文所指示的,计算机程序和模块(包括应用程序2232及其他程序模块2234)可以存储在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口2250或串行端口接口2242来接收。这样的计算机程序,当由应用程序执行或加载时,使得计算机2200能实现此处所讨论的本发明的特征。相应地,这样的计算机程序表示计算机2200的控制器。
本发明还涉及包括存储在任何计算机可使用介质上的软件的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使数据处理设备如此处所描述的那样操作。本发明的各实施例使用现在已知的或将来已知的任何计算机可使用或计算机可读介质。计算机可读介质的示例包括,但不仅限于,诸如RAM、硬盘驱动器、软盘、CD ROM、DVD ROM、zip磁盘、磁带、磁存储设备、光存储设备、MEM(存储器)、基于纳米技术的存储设备等等之类的存储设备。
VI.结论
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。那些精通有关技术的人员将理解,在不偏离如所附权利要求书所定义的本发明的精神和范围的情况下,可以在形式和细节方面进行各种修改。因此,本发明的范围不应该受到上述示例性实施例的任一个的限制,而只应根据下面的权利要求和它们的等效内容进行定义。
Claims (15)
1.一种第一基于浏览器的应用程序(102,300)中的方法(500),包括:
调用(502)信道中继器模块以在所述第一基于浏览器的应用程序和第二基于浏览器的应用程序之间建立双向通信信道,所述第一和第二基于浏览器的应用程序被允许通过使用由浏览器启用的通信协议,来通过所述双向通信信道进行通信,而无需提升特权;
通过所述信道中继器模块,从所述第二基于浏览器的应用程序接收(504)开始指示,所述第二基于浏览器的应用程序处于被阻止等待状态;以及
对所述第二基于浏览器的应用程序执行(506)调试操作,所述执行包括
通过所述信道中继器模块,将调试请求消息传输(1302)到所述第二基于浏览器的应用程序,以导致所述第二基于浏览器的应用程序从所述被阻止等待状态转换到运行状态,并执行由所述调试请求消息指示的调试动作,以及
通过所述信道中继器模块,从所述第二基于浏览器的应用程序接收(1304)对所述调试请求消息的响应,所述第二基于浏览器的应用程序被从所述运行状态转换到所述被阻止等待状态。
2.在如权利要求1所述的方法,其特征在于,所述调用信道中继器模块以在所述第一基于浏览器的应用程序和第二基于浏览器的应用程序之间建立双向通信信道包括:
调用远离主存所述第一基于浏览器的应用程序的客户机计算机的服务器上的所述信道中继器模块。
3.在如权利要求1所述的方法,其特征在于,所述调用信道中继器模块以在所述第一基于浏览器的应用程序和第二基于浏览器的应用程序之间建立双向通信信道包括:
调用主存所述第一基于浏览器的应用程序的客户机计算机上的所述信道中继器模块。
4.如权利要求1所述的方法,其特征在于,所述通过信道中继器模块从所述第二基于浏览器的应用程序接收开始指示包括:
作为由所述第二基于浏览器的应用程序向所述信道中继器模块传输开始指示的结果,从所述信道中继器模块异步地接收所述开始指示。
5.如权利要求1所述的方法,其特征在于,还包括:
向所述信道中继器模块传输等待指示;
将浏览器导航到所述第二基于浏览器的应用程序的地址;以及
等待来自所述信道中继器模块的对所述等待指示的响应;
其中所述通过所述信道中继器模块从所述第二基于浏览器的应用程序接收开始指示包括
响应于所述等待指示,并且作为由所述第二基于浏览器的应用程序向所述信道中继器模块传输开始指示的结果,从所述信道中继器模块接收所述开始指示。
6.如权利要求1所述的方法,其特征在于,所述通过信道中继器模块将调试请求消息传输到所述第二基于浏览器的应用程序,以导致所述第二基于浏览器的应用程序从所述被阻止等待状态转换到运行状态,并执行由所述调试请求消息指示的调试动作包括:
将所述调试请求消息传输到所述信道中继器模块,所述信道中继器模块被配置成将所述调试请求消息传输到所述第二基于浏览器的应用程序,作为对由所述第二基于浏览器的应用程序向所述信道中继器模块进行的先前的传输的响应;以及
其中所述通过所述信道中继器模块从所述第二基于浏览器的应用程序接收对所述调试请求消息的响应包括
从所述信道中继器模块接收包括由所述第二基于浏览器的应用程序向所述信道中继器模块传输的调试已执行消息的对所述调试请求消息的响应。
7.如权利要求6所述的方法,其特征在于,所述通过信道中继器模块将调试请求消息传输到所述第二基于浏览器的应用程序,以导致所述第二基于浏览器的应用程序从所述被阻止等待状态转换到运行状态,并执行由所述调试请求消息指示的调试动作还包括:
等待来自所述信道中继器模块的对所述调试请求消息的响应;
8.如权利要求1所述的方法,其特征在于,所述调试请求消息包括设置断点指令、运行指令或步进指令中的至少一个,其中所述通过所述信道中继器模块从所述第二基于浏览器的应用程序接收对所述调试请求消息的响应包括:
接收已经到达所述断点或所述步进完成中的至少一项的指示。
9.如权利要求1所述的方法,其特征在于,所述通信协议是超文本传输协议(HTTP),并且从所述第一基于浏览器的应用程序和从所述第二基于浏览器的应用程序向所述信道中继器模块进行的传输是根据HTTP来配置的。
10.如权利要求9所述的方法,其特征在于,所述从信道中继器模块接收到的开始指示和所述对从信道中继器模块接收到的调试请求消息的响应是根据不是HTTP的第二通信协议来配置的。
11.在如权利要求1所述的方法,其特征在于,所述调用信道中继器模块以在所述第一基于浏览器的应用程序和第二基于浏览器的应用程序之间建立双向通信信道包括:
将所述双向通信信道配置为低特权调试流水线。
12.一种包括在其上记录有计算机程序逻辑的计算机可读介质的计算机程序产品,包括:
用于允许处理器执行权利要求1-11中的任一项权利要求的计算机程序逻辑装置(2234)。
13.一种基于浏览器的调试器应用程序(102,300),包括:
信道建立器模块(302),所述信道建立器模块被配置成调用信道中继器模块(202)以在所述基于浏览器的调试器应用程序(102,300)和第二基于浏览器的应用程序(104,400)之间建立双向通信信道(204),所述基于浏览器的调试器应用程序(102,300)和所述第二基于浏览器的应用程序(104,400)被允许使用由浏览器(112)启用的通信协议通过所述双向通信信道(204)进行通信,而无需提升特权;
调试启动模块(304),所述调试启动模块(304)被配置成通过所述信道中继器模块(202)从所述第二基于浏览器的应用程序(104,400)接收开始指示(312);以及
调试器模块(306),所述调试器模块被配置成对所述第二基于浏览器的应用程序(104,400)执行一个或多个调试操作,所述调试器模块(306)包括
调试指令传输模块(308),所述调试指令传输模块(308)被配置成通过所述信道中继器模块(202),将调试请求消息(314)传输到所述第二基于浏览器的应用程序(104,400),以导致所述第二基于浏览器的应用程序(104,400)从被阻止等待状态转换到运行状态,并执行由所述调试请求消息(314)指示的调试动作,以及
调试响应接收器模块(310),所述调试响应接收器模块(310)被配置成通过所述信道中继器模块(202)从所述第二基于浏览器的应用程序(104,400)接收对所述调试请求消息(314)的响应(316),所述第二基于浏览器的应用程序(104,400)从所述运行状态转换到所述被阻止等待状态。
14.如权利要求13所述的基于浏览器的调试器应用程序,其特征在于,所述通信协议是超文本传输协议(HTTP),而所述调试指令传输模块被配置成将调试请求消息作为超文本传输协议(HTTP)post传输到所述信道中继器模块。
15.如权利要求14所述的基于浏览器的调试器应用程序,其特征在于,所述从信道中继器模块接收到的开始指示和所述对从所述信道中继器模块接收到的调试请求消息的响应是根据不是HTTP的第二通信协议来配置的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/436,233 | 2009-05-06 | ||
US12/436,233 US8346870B2 (en) | 2009-05-06 | 2009-05-06 | Low-privilege debug channel |
PCT/US2010/033255 WO2010129432A2 (en) | 2009-05-06 | 2010-04-30 | Low-privilege debug channel |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102422274A true CN102422274A (zh) | 2012-04-18 |
CN102422274B CN102422274B (zh) | 2013-12-04 |
Family
ID=43050787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800203491A Active CN102422274B (zh) | 2009-05-06 | 2010-04-30 | 专用调试信道 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8346870B2 (zh) |
EP (1) | EP2427826B1 (zh) |
CN (1) | CN102422274B (zh) |
WO (1) | WO2010129432A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595820A (zh) * | 2013-11-28 | 2014-02-19 | 深圳英飞拓科技股份有限公司 | 嵌入式前端设备后台控制调试方法及装置 |
CN109684795A (zh) * | 2018-12-25 | 2019-04-26 | 成都卫士通信息产业股份有限公司 | 应用程序反调试的方法、装置及电子设备 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090228838A1 (en) * | 2008-03-04 | 2009-09-10 | Ryan Christopher N | Content design tool |
GB2483907A (en) * | 2010-09-24 | 2012-03-28 | Advanced Risc Mach Ltd | Privilege level switching for data processing circuitry when in a debug mode |
US8589885B2 (en) * | 2010-09-30 | 2013-11-19 | Microsoft Corporation | Debugger launch and attach on compute clusters |
US20150195181A1 (en) * | 2010-09-30 | 2015-07-09 | Google Inc. | Testing of dynamic web content applications |
US8572404B2 (en) * | 2011-11-04 | 2013-10-29 | Honeywell International Inc. | Security and safety manager implementation in a multi-core processor |
US20130159779A1 (en) * | 2011-12-19 | 2013-06-20 | Microsoft Corporation | Framework for the remote debugging of web applications |
CN103324567B (zh) * | 2012-03-22 | 2016-03-02 | 百度在线网络技术(北京)有限公司 | 一种应用引擎的调试方法和调试系统 |
WO2013142948A1 (en) | 2012-03-30 | 2013-10-03 | Irdeto Canada Corporation | Method and system for preventing and detecting security threats |
US9819725B1 (en) * | 2013-05-08 | 2017-11-14 | Amdocs Software Systems Limited | System, method, and computer program for remotely controlling mobile web applications installed on a mobile device |
US9477579B2 (en) * | 2013-08-09 | 2016-10-25 | Freescale Semiconductor, Inc. | Embedded software debug system with partial hardware acceleration |
US9507691B2 (en) * | 2014-01-10 | 2016-11-29 | International Business Machines Corporation | Conditional component breakpoint setting system and method |
US9384109B2 (en) | 2014-04-17 | 2016-07-05 | Texas Instruments Deutschland Gmbh | Processor with debug pipeline |
CN105227608B (zh) | 2014-06-27 | 2018-07-27 | 国际商业机器公司 | 用于开发丰富互联网应用的方法和装置 |
CN104699618B (zh) * | 2015-03-31 | 2017-04-26 | 北京奇虎科技有限公司 | 指定用户对高权限进程自动化测试的方法及装置 |
US9471466B1 (en) * | 2015-05-28 | 2016-10-18 | Sap Se | End-to-end in-browser web-application debugging |
MY179336A (en) * | 2015-12-25 | 2020-11-04 | Intel Corp | Device, method and system for performing closed chassis debug with a repeater |
US10754765B2 (en) * | 2017-05-17 | 2020-08-25 | Google Llc | Operating system validation |
US11361106B2 (en) | 2020-09-01 | 2022-06-14 | Microsoft Technology Licensing, Llc | Chaining, triggering, and enforcing entitlements |
US20230281342A1 (en) * | 2022-03-01 | 2023-09-07 | Microsoft Technology Licensing, Llc | Granting entitlements to log data generated by a data privacy pipeline to facilitate debugging |
US20230281109A1 (en) * | 2022-03-01 | 2023-09-07 | Microsoft Technology Licensing, Llc | Debugging data privacy pipelines using sample data |
US11922145B2 (en) | 2022-03-01 | 2024-03-05 | Microsoft Technology Licensing, Llc | Initiating data privacy pipelines using reusable templates |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324683B1 (en) * | 1996-02-23 | 2001-11-27 | International Business Machines Corporation | System, method and program for debugging external programs in client/server-based relational database management systems |
US6654807B2 (en) * | 1998-02-10 | 2003-11-25 | Cable & Wireless Internet Services, Inc. | Internet content delivery network |
US20070168997A1 (en) * | 2005-12-20 | 2007-07-19 | Duong-Han Tran | Debugging of remote application software on a local computer |
US7334163B1 (en) * | 2004-06-16 | 2008-02-19 | Symantec Corporation | Duplicating handles of target processes without having debug privileges |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2205096C (en) * | 1997-05-09 | 2001-10-09 | Ibm Canada Limited-Ibm Canada Limitee | A system for remote debugging of client/server applications |
EP0939929A4 (en) | 1997-07-01 | 2007-01-10 | Progress Software Corp | TEST AND DEBUGGING TOOL FOR NETWORK APPLICATIONS |
JPH1185564A (ja) | 1997-09-09 | 1999-03-30 | Toshiba Corp | ウェブ・ブラウザを使ったデバッグ方法および装置 |
US7949779B2 (en) * | 1998-02-10 | 2011-05-24 | Level 3 Communications, Llc | Controlling subscriber information rates in a content delivery network |
US6119247A (en) * | 1998-06-22 | 2000-09-12 | International Business Machines Corporation | Remote debugging of internet applications |
CA2255050C (en) * | 1998-11-30 | 2007-06-19 | Ibm Canada Limited-Ibm Canada Limitee | A method and system for debugging hybrid source code |
AU2002211349A1 (en) * | 2000-10-03 | 2002-04-15 | Sun Microsystems, Inc. | Http transaction monitor with capacity to replay in debugging session |
US20050050159A1 (en) * | 2003-09-03 | 2005-03-03 | Zeev Suraski | Remote debugging of web applications |
US8180845B2 (en) * | 2003-12-17 | 2012-05-15 | Sap Ag | Remote debugging of software |
US7216257B2 (en) * | 2004-01-21 | 2007-05-08 | Sap Ag | Remote debugging |
US7500225B2 (en) * | 2004-02-10 | 2009-03-03 | Microsoft Corporation | SQL server debugging in a distributed database environment |
US20060101404A1 (en) * | 2004-10-22 | 2006-05-11 | Microsoft Corporation | Automated system for tresting a web application |
US20060129991A1 (en) * | 2004-12-13 | 2006-06-15 | Frank Kilian | Method and system for on-the-fly debugging |
US7721262B2 (en) * | 2005-02-02 | 2010-05-18 | International Business Machines Corporation | System, methods and apparatus for markup language debugging |
US8171493B2 (en) * | 2005-09-06 | 2012-05-01 | Nvoq Incorporated | VXML browser control channel |
US20100031167A1 (en) * | 2008-08-04 | 2010-02-04 | Alexander Roytman | Browser-based development tools and methods for developing the same |
US9823903B2 (en) * | 2008-07-18 | 2017-11-21 | Oracle International Corporation | Debugging software through visual representations mapped to computer code |
US8392885B2 (en) * | 2008-12-19 | 2013-03-05 | Microsoft Corporation | Low privilege debugging pipeline |
-
2009
- 2009-05-06 US US12/436,233 patent/US8346870B2/en active Active
-
2010
- 2010-04-30 CN CN2010800203491A patent/CN102422274B/zh active Active
- 2010-04-30 EP EP10772627.5A patent/EP2427826B1/en active Active
- 2010-04-30 WO PCT/US2010/033255 patent/WO2010129432A2/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324683B1 (en) * | 1996-02-23 | 2001-11-27 | International Business Machines Corporation | System, method and program for debugging external programs in client/server-based relational database management systems |
US6654807B2 (en) * | 1998-02-10 | 2003-11-25 | Cable & Wireless Internet Services, Inc. | Internet content delivery network |
US7334163B1 (en) * | 2004-06-16 | 2008-02-19 | Symantec Corporation | Duplicating handles of target processes without having debug privileges |
US20070168997A1 (en) * | 2005-12-20 | 2007-07-19 | Duong-Han Tran | Debugging of remote application software on a local computer |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595820A (zh) * | 2013-11-28 | 2014-02-19 | 深圳英飞拓科技股份有限公司 | 嵌入式前端设备后台控制调试方法及装置 |
CN109684795A (zh) * | 2018-12-25 | 2019-04-26 | 成都卫士通信息产业股份有限公司 | 应用程序反调试的方法、装置及电子设备 |
CN109684795B (zh) * | 2018-12-25 | 2023-01-24 | 成都卫士通信息产业股份有限公司 | 应用程序反调试的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US8346870B2 (en) | 2013-01-01 |
EP2427826A4 (en) | 2012-10-10 |
US20100287562A1 (en) | 2010-11-11 |
WO2010129432A3 (en) | 2011-03-03 |
CN102422274B (zh) | 2013-12-04 |
WO2010129432A2 (en) | 2010-11-11 |
EP2427826B1 (en) | 2019-01-09 |
EP2427826A2 (en) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102422274B (zh) | 专用调试信道 | |
US11621924B2 (en) | Incorporating web applications into web pages at the network level | |
CN101877696B (zh) | 在网络应用环境下重构错误响应信息的设备和方法 | |
US9021367B2 (en) | Metadata capture for screen sharing | |
KR102220127B1 (ko) | 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치 | |
EP3550788A1 (en) | Data acquisition method and device | |
Steiner | What is in a web view: An analysis of progressive web app features when the means of web access is not a web browser | |
TW200844856A (en) | Dynamically loading scripts | |
CN103168301A (zh) | 向Web应用透露资源能力 | |
WO2010148075A2 (en) | Standard commands for native commands | |
US20100229081A1 (en) | Method for Providing a Navigation Element in an Application | |
CN110365724B (zh) | 任务处理方法、装置及电子设备 | |
EP3104279B1 (en) | Testing interactive network systems | |
US11023558B1 (en) | Executing functions on-demand on a server utilizing web browsers | |
CN103841188A (zh) | 一种浏览器中Cookie信息的处理方法和装置 | |
US10423793B2 (en) | Install runtime agent for security test | |
EP2959402B1 (en) | Architecture for remote access to content state | |
JP2011043924A (ja) | Web行動履歴取得システム、Web行動履歴取得方法、ゲートウェイ装置、及びプログラム | |
US20160048418A1 (en) | Service response detection and management on a mobile application | |
JP2011022856A (ja) | Webアプリケーションの連携方法、連携装置、および連携プログラム | |
Cisco | Voice DSP Control Message Logger | |
KR102303182B1 (ko) | 테스트 자동화 네트워크 시스템 및 테스트 자동화 방법 | |
US11562092B1 (en) | Loading and managing third-party tools on a website | |
US20240205193A1 (en) | Supporting local host traffic in remote device infrastructure | |
CN116149757B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150429 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150429 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |