CN102195970B - 基于客户端会话的调试 - Google Patents

基于客户端会话的调试 Download PDF

Info

Publication number
CN102195970B
CN102195970B CN201110065903.4A CN201110065903A CN102195970B CN 102195970 B CN102195970 B CN 102195970B CN 201110065903 A CN201110065903 A CN 201110065903A CN 102195970 B CN102195970 B CN 102195970B
Authority
CN
China
Prior art keywords
client
session
debug
code
client 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.)
Active
Application number
CN201110065903.4A
Other languages
English (en)
Other versions
CN102195970A (zh
Inventor
J·斯泰尔斯
T·赫杰斯伯格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102195970A publication Critical patent/CN102195970A/zh
Application granted granted Critical
Publication of CN102195970B publication Critical patent/CN102195970B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

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

基于客户端会话的调试
技术领域
本发明涉及远程应用技术,尤其涉及远程调试技术。
背景技术
随着网络通信和带宽可用性的增长,远程应用已经变成一种常见现象。代替在大量客户端设备上为相同的应用程序安装、维护、调试、更新并执行相似操作,应用程序可以改为在单个服务器中执行,客户端设备通过各个会话来访问该服务器。通过远程服务器上的单个应用程序来服务多个客户端的能力降低了维护成本、减轻了更新和问题解决操作的难度、并且减少了从客户端要求最小系统参数的需要。例如,现代应用程序代码与较早本版本的相比相对较大,需要供执行机器的较大的存储器和处理能力。另一方面,通过访问远程执行的应用程序,客户端设备可以不必具有如果应用程序在相同客户端设备上执行所需要的相同的系统资源。
调试在远程服务器或服务上执行的应用程序可能是一个具有挑战的任务。如果服务处理来自客户端的多个并发请求,允许调试阻塞其他客户端可能使用户体验降级。可靠性和安全也是并发调试需要考虑的问题。在客户端进程的调试在线程或进程层面上执行时,调试操作可以影响对其他客户端的请求的服务。
发明内容
提供本发明内容是为了以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
各实施例涉及在执行服务器上处理客户端请求时在不中断其他客户端会话的执行的情况下对远程执行的共享应用程序(物理上的或进程级)在各个客户端会话上执行调试操作。根据某些实施例,远程调试客户端可以连接到在服务器上执行的调试引擎,以允许调试客户端来查看源代码、设置断点、查看客户端连接、以及当正被调试的客户端会话命中断点时接收回调或通知。多个客户端可以分开调试,并且它们的执行各自由分开的调试客户端来控制。
通过阅读下面的“具体实施方式”并参考相关联的图形,这些及其他特点和优点将变得显而易见。可以理解,前述一般描述和以下具体实施方式均仅是说明性的,且不限制所要求保护的各方面。
附图说明
图1是示出客户端设备访问服务器上的远程执行的应用程序的概念图;
图2是示出多个客户端设备通过会话访问服务器上的远程执行的应用程序的另一概念图;
图3是示出根据各实施例的附连到服务器的、用于调试在服务器上执行的不同客户端代码的两个不同的调试客户端的图;
图4示出根据各实施例的用于执行基于客户端会话的调试的服务器-客户端系统的不同组件之间的交互;
图5是其中可实现根据各实施例的系统的联网环境;
图6是其中可实现各实施方式的示例计算操作环境的框图;以及
图7示出根据各实施例的执行基于客户端会话的调试的过程的逻辑流程图。
具体实施方式
如前简述,基于客户端会话的调试可以通过采用在服务器上执行的调试客户端来执行,从而在不中断其他客户端会话的执行的情况下能够调试各个客户端会话。如本文所述,远程执行的应用程序指的是在物理上分开的进程以及在逻辑上分开的进程。因此,客户端会话可以与另一客户端会话在相同的机器上执行但作为分开的进程的一部分并且实现各实施例。在以下详细描述中,参考了构成了详细描述的一部分并作为说明示出了各具体实施方式或示例的附图。可组合些方面,可利用其他方面,并且可以做出结构上的改变而不背离本发明的精神或范围。因此,以下具体实施方式并不旨在限制,并且本发明的范围由所附权利要求及其等效方案来限定。
虽然在结合在个人计算机上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述了各实施方式,但是本领域技术人员会认识到各方面也可以结合其他程序模块实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,如本领域技术人员理解的,各实施例可以用其他计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、小型计算机、大型计算机以及类似计算设备。各实施方式还能在任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
各实施例可被实现为计算机实现的过程(方法)、计算系统、或者如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并且编码包括用于使得计算机或计算系统执行示例过程的指令的计算机程序的计算机存储介质。例如,计算机可读存储介质可经由易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘和类似介质中的一个或多个来实现。
贯穿本说明书,术语“平台”可以是用于管理远程应用程序服务和有关网络通信的软件和硬件组件的组合。平台的示例包括但不限于,在多个服务器上执行的主存服务、在单个服务器上执行的应用程序以及类似系统。术语“服务器”一般指通常在联网环境中执行一个或多个软件程序的计算设备。然而,服务器还可被实现为视作网络上的服务器的、在一个或多个计算设备上执行的虚拟服务器(软件程序)。关于这些技术和示例操作的更多细节在以下提供。
图1包括示出客户端设备访问服务器上的远程执行的应用程序的概念图100。如本文所述,远程执行的应用程序指的是在物理上分开的进程以及在逻辑上分开的进程。因此,客户端会话可以与另一客户端会话在相同的机器上执行但作为分开的进程的一部分并且实现各实施例。与在客户端机器上安装并完全地执行的常规应用程序不同,远程执行的应用程序,诸如应用程序112可以由可能仍然在同一机器上的多个客户端共享。在虚拟化环境中,每一客户端在逻辑上可以是远程的在每一虚拟机中,但在物理上在同一机器上。
远程执行的应用程序112在服务器116的操作系统114的框架内执行。客户端设备106可以通过网络110连接到服务器116并建立会话。因此,对于客户端设备106的用户,可能看上去就像是应用程序112在操作系统104上运行为应用程序102(由虚线指示),而客户端设备106不必用诸如存储器、处理能力、寄存器等传统系统资源来支持该应用程序。
除了对用于执行远程应用程序的系统资源的缩减需求之外,应用程序112可由多个客户端同时访问(执行)。类似地,客户端设备106结合操作系统104可以用系统资源的一小部分并且在不必安装、维护或更新各个应用程序的情况下提供对多个远程应用程序的访问。
图2包括示出多个客户端设备通过会话访问服务器上的远程执行的应用程序的另一概念图200。如上所述,远程执行的应用程序可由多个客户端共享。在根据各实施例的系统中,每一客户端可以建立具有其远程应用程序的分开会话,可以在不中断其他会话的执行的情况下使用该会话来调试所执行的代码。
在图200的示例场景中,服务器220执行应用程序222和224。客户端234和236通过它们各自的会话来共享应用程序222。应用程序224由客户端226、228、230和232通过它们各自的会话来共享。服务器220上执行的调试引擎可以使得客户端代码(代表每一客户端在服务器上执行的代码)能够报告它们的状态并且还使得一个或多个远程调式客户端能够附连到各个会话并控制各个会话。因此,在具有多个客户端会话的服务器中,可以中断正被调试的特定会话的执行,这与常规的每线程或每进程中断不同。可以用安全的方式远程地同时调试多个客户端会话。此外,可以设置全局断点以使得调试客户端能够基于预定义断点(而非客户端会话)来找到要中断哪个客户端会话。
图3是示出根据各实施例的附连到服务器的用于调试在服务器上执行的不同客户端代码的两个不同的调试客户端的图。图300示出服务器340如上所讨论地执行一个或多个远程应用程序。客户端342、344和346可以通过各自的会话来访问服务器340。调试客户端348和350也可以通过各自的调试会话来访问服务器340。
在根据各实施例的系统中,每一会话可以单独地调试以允许其他会话在不中断的情况下继续执行。在服务器上执行的调试引擎可以使得客户端代码能够通过由客户端代码建立的会话对象将它们的状态报告给调试引擎。可以向远程调试客户端,诸如调试客户端348或350,提供执行代码的状态(例如,断点)和附加信息以使得远程调试客户端能够控制调试进程。
在图300的示例场景中,三个客户端(342、344和346)和两个调试客户端(348和350)被连接到服务器340。如果调试客户端A348附连到客户端A(346)的会话而调试客户端B350附连到客户端B(344)的会话,则调试客户端A348可以控制、检查、和/或分析客户端会话A在服务器340上的执行。调试客户端B350可以对客户端会话B进行同样的动作。因此,客户端C342不受任一个调试客户端的影响。
图4示出根据各实施例的用于执行基于客户端会话的调试的服务器-客户端系统的不同组件之间的交互。虽然图400示出一个服务器和在客户端机器上执行的一个调试客户端,但根据各实施例的系统可以包括多个服务器和/或客户端。
服务器452可以执行服务器代码454和/或客户端代码462,服务器代码454是客户端不可访问的代码或者是不应该被调试的代码(例如,调试器引擎本身或框架代码的其他部分)。客户端代码462是代表特定客户端在服务器上执行的代码。执行应用程序编程接口(API)458可以由服务器本身暴露且由在客户端会话的上下文中代表客户端的客户端代码462来调用。调试引擎456可以暴露由远程调试客户端464调用的调试客户端API 460。
客户端代码462可以调用执行API 458上的SessionStart(会话开始)方法一次并建立用于记住会话/客户端并将其与其他会话/客户端进行区分的会话对象。可以将会话对象作为该调用的结果返回到客户端代码462。随后,客户端代码462可以周期性地调用执行API 458上的StatementHit(语句命中)方法以通过会话对象来通知调试引擎456关于代码的位置及其相关联的客户端会话。StatementHit方法通常可以在执行每一逻辑语句之前调用,并且可以通过工具将调用本身插入或导入到代码中。
StatementHit方法随后可以确定调试客户端464是否附连到给定连接。该方法还可以确定执行是否应该是“断点”(即,如果已经在给定语句上设置了断点并且任何相关联的条件的求值为真)或调试客户端464在各个语句中步进。如果调试机器456确定应该中断,则可以通知相关联的远程调试客户端464。根据某些实施例,执行可以不返回至进行调用的代码直到调试客户端发出“继续”命令。
根据其他实施例,可以在StatementHit的实现过程中计算调用栈、变量、执行历史以及类似信息,并使得这些信息在请求时对调试客户端可用。调试客户端API 460使得外部调式客户端464能够连接到调试引擎456。该API可以使得调试客户端464能够执行以下动作中的一个或多个:查看在服务器上执行的客户端会话列表;选择要调试的客户端会话;设置断点,可任选地附加条件;当命中断点时接收通知;查询代码相对于原始、未经操纵的源代码的当前位置;以及查询调用栈、变量值、执行历史和有关的元数据。
虽然上述动作中的许多被“锁定”至单个客户端会话中,但某些可被允许是“全局”的。因此,根据其他实施例,命中特定断点/条件的任何客户端/会话可以触发给定的动作。这可以在期望调试客户端采取动作但预先不知道要调试哪个客户端的情况下采用。
已经用具体的服务器、客户端设备、软件模块和交互描述了图1、2、3和4中的示例系统。各实施例不限于根据这些示例配置的系统。基于客户端会话的调试可以在采用更少或更多组件并执行其他任务的配置中实现。此外,已经结合描述以上实施例讨论了具体的协议和接口。各实施例也不限于这些示例。可以使用此处描述的原理用相似的方式来实现其他协议、交换和接口。
图5是可以实现各实施方式的示例联网环境。提供远程应用程序服务的平台可经由诸如托管服务等在一个或多个服务器516上执行的软件来实现。该平台可以通过网络510来与诸如台式计算机511、膝上型计算机512、智能电话513、或手持式计算设备514(‘客户端设备’)等各个计算设备上的客户端应用程序进行通信。
如上所讨论的,用户可以通过客户端设备511-514来访问在服务器516中的一个或多个上远程执行的应用程序。在服务器516上执行的调试引擎可以暴露执行API和调试客户端API,其可以在不中断其他客户端的客户端代码的执行的情况下实现服务器上的会话级的客户端代码的调试。远程执行的应用程序可以直接从数据存储518检索必要数据或通过数据库服务器519来检索必要数据。
网络510可包括服务器、客户端、因特网服务供应商、以及通信介质的任何拓扑结构。根据各实施例的系统可具有静态或动态拓扑结构。网络510可包括诸如企业网络等安全网络、诸如无线开放网络等非安全网络、或因特网。网络510还可通过诸如公共交换电话网络(PSTN)或蜂窝网络等其他网络来协调通信。此外,网络510可包括诸如蓝牙或类似网络等短程无线网络。网络510提供此处描述的节点之间的通信。作为示例而非限制,网络510可包括诸如声学、RF、红外线和其他无线介质等无线介质。
可以采用计算设备、应用程序、数据源和数据分发系统的许多其它配置来实现基于客户端会话的调试的框架。此外,图5中所讨论的联网环境仅用于说明目的。各实施方式不限于示例应用程序、模块、或过程。
图6及相关联的讨论旨在提供对其中可实现各实施方式的合适计算环境的简要概括描述。参考图6,示出了根据各实施例的、诸如计算设备600等用于应用程序的示例计算操作环境的框图。在基本配置中,计算设备600可以是根据各实施例的实现基于客户端会话的调试的、执行远程应用程序的并包括至少一个处理单元602和系统存储器604的服务器。计算设备600还可包括协作执行程序的多个处理单元。取决于计算设备的确切配置和类型,系统存储器604可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。系统存储器604通常包括适于控制平台操作的操作系统605,诸如来自华盛顿州雷德蒙市的微软公司的WINDOWS 操作系统。系统存储器604还可包括一个或多个软件应用程序,诸如程序模块606、应用程序622、客户端代码624和调试引擎624。
应用程序622可以是远程地在计算设备600上执行的并可由一个或多个客户端设备访问的应用程序。应用程序622可以包括服务器代码和客户端代码,服务器代码不可由客户端设备访问(即不可调试的)。客户端代码可以如先前所述地采用调试引擎626来调试。该基本配置在图6中由虚线608内的组件示出。
计算设备600可具有附加特征或功能。例如,计算设备600还可包括附加数据存储设备(可移动和/或不可移动),诸如例如磁盘、光盘或磁带。在图6中通过可移动存储609和不可移动存储610示出了这样的附加存储。计算机可读介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器604、可移动存储609和不可移动存储610都是计算机可读介质的示例。计算机可读介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带、磁盘存储或其它磁存储设备、或能用于存储所需信息且可以由计算设备600访问的任何其它介质。任何这样的计算机可读介质都可以是计算设备600的一部分。计算设备600也可具有输入设备612,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备和类似输入设备。还可包括输出设备614,诸如显示器、扬声器、打印机和其他类型的输出设备。这些设备在本领域中公知并且无需在此处详细讨论。
计算设备600还可包含通信连接616,该通信连接允许该设备诸如通过分布式计算环境中的有线或无线网络、卫星链接、蜂窝链接、短程网络和类似机制来与其他设备618进行通信。其他设备618可包括执行通信应用程序的计算机设备、其他web服务器和类似设备。通信连接616是通信介质的一个示例。通信介质可在其中包括计算机可读指令、数据结构、程序模块或其它数据。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、射频(RF)、红外线及其他无线介质之类的无线介质。
各示例实施例还包括各种方法。这些方法可以用任何数量的方式,包括本文中所描述的结构来实现。一种此类方式是通过本文中描述的类型的设备的机器操作。
另一可任选方式是结合一个或多个人类操作者执行该方法的各个操作中的某一些来执行该方法的一个或多个操作。这些人类操作者无需彼此同在一处,而是其每一个可以仅与执行程序的一部分的机器同在一处。
图7示出根据各实施例的执行基于客户端会话的调试的过程700的逻辑流程图。过程700可作为执行远程应用程序的服务器的一部分来实现。
过程700从操作710开始,在那里在由调试引擎暴露的执行API处从客户端代码接收到StatementHit方法之后,可以为客户端建立会话对象。会话对象可以记住会话/客户端并将其与其他会话/客户端进行区分。
在操作720处,客户端代码可以通过会话对象来通知调试引擎代码的位置及其相关联的客户端会话。客户端代码可以通过通常在执行每一逻辑语句之前调用StatementHit方法来实现以上操作。在判定操作730处,StatementHit方法可以确定是否有调试客户端附连到给定连接。如果附连了调试客户端,则在操作740处还可以确定执行是否是断点。如果引擎确定应该中断,则可以通知相关联的调试客户端。执行可以等待返回至进行调用的客户端代码直到调试客户端发出继续命令。可以在StatementHit的实现过程中计算包括调用栈、变量、执行历史等的信息并在操作750处在请求时将其提供给调试客户端。
包括在过程700内的各操作仅出于说明目的。基于客户端会话的调试可以使用此处所述的各原理通过具有更少或更多步骤的相似过程、以及不同的操作次序来实现。
以上说明书、示例和数据提供了对各实施方式组成的制造和使用的全面描述。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求和各实施方式的示例形式而公开的。

Claims (14)

1.一种至少部分地在计算设备中执行的用于执行基于客户端会话的调试的方法,所述方法包括:
在调试引擎处接收与在服务器上执行的客户端代码的会话相关联的标识信息;
确定是否有调试客户端附连到所述会话;
如果附连了调试客户端,则确定是否到达所述客户端代码的执行中的断点;
如果到达断点,则将客户端代码信息提供给所附连的调试客户端以使得所述调试客户端能够在不中断所述服务器上的客户端代码的任何其他会话的情况下控制调试进程;以及
响应于来自所述客户端代码的方法调用来建立会话对象,其中在执行逻辑语句之前,使用所述会话对象通过来自所述客户端代码的周期调用来接收所述客户端代码信息,并且其中所述会话对象中包括的标识信息与所述客户端代码的位置以及相关联的会话相关联。
2.如权利要求1所述的方法,其特征在于,还包括:
将所述会话对象返回至所述进行调用的客户端代码,其中采用所述会话对象来记住所述会话并将所述会话与所述客户端代码的其他会话进行区分。
3.如权利要求1所述的方法,其特征在于,确定是否到达断点包括:
确定是否在特定语句上设置了断点;以及
确定至少一个相关联的条件是否为真。
4.如权利要求1所述的方法,其特征在于,还包括:
计算以下一组中的至少一个:调用栈、一个或多个变量、以及执行历史;以及
在请求时将所计算的信息提供给所述调试客户端。
5.如权利要求1所述的方法,其特征在于,使所述调试客户端能够执行以下一组动作中的至少一个:查看在所述服务器上执行的客户端会话列表;选择要调试的客户端会话;设置断点;接收关于断点的通知;查询所述客户端代码的当前位置;将条件附连到断点以及查询以下各项中的至少一个:调用栈、变量值、执行历史以及相关元数据。
6.如权利要求1所述的方法,其特征在于,所述断点被定义为全局的从而使得到达所述断点的所述客户端代码的任何会话被附连到所述调试客户端。
7.一种用于执行共享应用程序并提供基于客户端会话的调试的系统,所述系统包括:
存储可执行指令的存储器;
耦合到所述存储器的处理器,所述处理器执行客户端代码的多个会话和调试引擎,其中所述调试引擎被配置为:
通过会话对象从所述客户端代码接收所述客户端代码的位置和相关联的会话标识;
响应于通过执行应用程序编程接口(API)来自所述客户端代码的方法调用来建立所述会话对象,并通过所述执行API从所述客户端代码接收带有所述客户端代码的位置和相关联的会话标识的周期方法调用;
确定是否有调试客户端附连到所标识的会话;
如果附连了调试客户端,则确定是否到达所述客户端代码的执行中的断点;
如果到达所述断点,则确定与所述断点相关联的至少一个条件是否为真;以及
如果所述至少一个条件为真,则将所述客户端代码的位置和所述相关联的会话标识提供给所附连的调试客户端,以使得所述调试客户端能够在不中断服务器上的客户端代码的任何其他会话的情况下控制调试进程。
8.如权利要求7所述的系统,其特征在于,所述调试引擎还被配置成:
通过调试客户端API通知所附连的调试客户端关于到达所述断点的所述客户端代码的位置和所述相关联的会话标识;以及
接收与以下一组中的至少一个相关联的信息:要调试的客户端会话的选择、断点的设置、将条件附连到断点、以及通过所述调试客户端API向所述调试客户端查询所述客户端代码的当前位置。
9.如权利要求7所述的系统,其特征在于,所述处理器被配置为执行多个应用程序,每一应用程序由客户端共享。
10.如权利要求7所述的系统,其特征在于,所述处理器被配置为执行不可由任何客户端访问的服务器代码,所述服务器代码包括以下两项中的至少一个:调试引擎和框架代码。
11.一种用于基于客户端会话的调试的方法,所述方法包括:
响应于来自客户端代码的初始方法调用在调试引擎处建立会话对象,其中采用所述会话对象来记住所述客户端代码的会话并将所述会话与所述客户端代码的其他会话进行区分;
将所述会话对象返回至所述进行调用的客户端代码;
通过来自所述客户端代码的周期方法调用接收与所述客户端代码的位置及相关联的会话相关联的信息;
确定是否有调试客户端附连到所述会话;
如果附连了调试客户端,则确定是否到达所述客户端代码的执行中的断点并且与所述断点相关联的至少一个条件是否为真;以及
如果到达所述断点并且所述条件为真,
则暂停所述客户端代码的执行直到从所述调试客户端接收到继续命令,以及
将所接收的客户端代码信息提供给所附连的调试客户端以使得所述调试客户端能够在不中断服务器上的客户端代码的任何其他会话的情况下控制调试进程。
12.如权利要求11所述的方法,其特征在于,来自所述客户端代码的调用通过暴露给所述客户端代码的内部执行API来接收,而来自所述调试客户端的调用通过暴露给远程调试客户端的外部调试客户端API来接收。
13.如权利要求11所述的方法,其特征在于,所述周期调用用工具插入到所述客户端代码中。
14.一种用于基于客户端会话的调试的装置,所述装置包括:
用于响应于来自客户端代码的初始方法调用在调试引擎处建立会话对象的装置,其中采用所述会话对象来记住所述客户端代码的会话并将所述会话与所述客户端代码的其他会话进行区分;
用于将所述会话对象返回至所述进行调用的客户端代码的装置;
用于通过来自所述客户端代码的周期方法调用接收与所述客户端代码的位置及相关联的会话相关联的信息的装置;
用于确定是否有调试客户端附连到所述会话的装置;
用于如果附连了调试客户端,则确定是否到达所述客户端代码的执行中的断点并且与所述断点相关联的至少一个条件是否为真的装置;以及
用于如果到达所述断点并且所述条件为真,
则暂停所述客户端代码的执行直到从所述调试客户端接收到继续命令,以及
将所接收的客户端代码信息提供给所附连的调试客户端以使得所述调试客户端能够在不中断服务器上的客户端代码的任何其他会话的情况下控制调试进程的装置。
CN201110065903.4A 2010-03-10 2011-03-09 基于客户端会话的调试 Active CN102195970B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/721,170 2010-03-10
US12/721,170 US8171346B2 (en) 2010-03-10 2010-03-10 Client session based debugging

Publications (2)

Publication Number Publication Date
CN102195970A CN102195970A (zh) 2011-09-21
CN102195970B true CN102195970B (zh) 2015-11-25

Family

ID=44561082

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110065903.4A Active CN102195970B (zh) 2010-03-10 2011-03-09 基于客户端会话的调试

Country Status (2)

Country Link
US (1) US8171346B2 (zh)
CN (1) CN102195970B (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972953B2 (en) 2010-04-16 2015-03-03 Salesforce.Com, Inc. Methods and systems for internally debugging code in an on-demand service environment
US8856742B2 (en) * 2010-06-11 2014-10-07 International Business Machines Corporation Distributed debugging
US20120084758A1 (en) * 2010-10-05 2012-04-05 International Business Machines Corporation Collaborative Software Debugging In A Distributed System With Client-Specific Variable Evaluation
US20120102459A1 (en) * 2010-10-20 2012-04-26 International Business Machines Corporation Collaborative Software Debugging In A Distributed System With Stacked Event Group Management
US8904356B2 (en) 2010-10-20 2014-12-02 International Business Machines Corporation Collaborative software debugging in a distributed system with multi-member variable expansion
US8972945B2 (en) 2010-10-21 2015-03-03 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific access control
US8671393B2 (en) 2010-10-21 2014-03-11 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific dynamic breakpoints
US9009673B2 (en) 2010-10-21 2015-04-14 International Business Machines Corporation Collaborative software debugging in a distributed system with collaborative step over operation
US8850397B2 (en) 2010-11-10 2014-09-30 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific display of local variables
US9411709B2 (en) 2010-11-10 2016-08-09 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific event alerts
US8990775B2 (en) 2010-11-10 2015-03-24 International Business Machines Corporation Collaborative software debugging in a distributed system with dynamically displayed chat sessions
US8739127B2 (en) * 2011-04-20 2014-05-27 International Business Machines Corporation Collaborative software debugging in a distributed system with symbol locking
US8806438B2 (en) 2011-04-20 2014-08-12 International Business Machines Corporation Collaborative software debugging in a distributed system with variable-specific messages
US8656360B2 (en) 2011-04-20 2014-02-18 International Business Machines Corporation Collaborative software debugging in a distributed system with execution resumption on consensus
US8756577B2 (en) 2011-06-28 2014-06-17 International Business Machines Corporation Collaborative software debugging in a distributed system with private debug sessions
US9720809B2 (en) 2012-02-17 2017-08-01 Microsoft Technology Licensing, Llc Dynamically enabling debugging over the internet
US9251039B2 (en) * 2012-02-17 2016-02-02 Microsoft Technology Licensing, Llc Remote debugging as a service
CN103324567B (zh) * 2012-03-22 2016-03-02 百度在线网络技术(北京)有限公司 一种应用引擎的调试方法和调试系统
CN103473173B (zh) * 2013-09-10 2016-03-09 成都品果科技有限公司 一种对iOS系统进行汇编级动态调试的方法及装置
CN103699481A (zh) * 2013-12-03 2014-04-02 华为技术有限公司 一种代码调试方法及调试系统
CN104834586B (zh) * 2014-02-10 2018-11-20 腾讯科技(深圳)有限公司 安卓界面自动化测试方法、装置及系统
CN105630661B (zh) 2014-10-29 2018-09-25 国际商业机器公司 用于自动化跨系统程序调试的方法和装置
US9740593B2 (en) * 2015-01-08 2017-08-22 International Business Machines Corporation Comparative program execution through control of two or more debug sessions to automatically determine execution differences
CN105893123A (zh) * 2015-11-13 2016-08-24 乐视云计算有限公司 服务器进程管理方法及系统
GB2546577B (en) * 2016-01-19 2020-07-08 Arm Ip Ltd A method for allocating memory
CN107231401B (zh) * 2016-03-25 2021-02-09 华为技术有限公司 一种会话监控的方法、装置和系统
CN107818043A (zh) * 2016-09-13 2018-03-20 东华软件股份公司 用于程序调试的方法和装置
CN109726129B (zh) * 2018-12-29 2022-08-12 北京小米移动软件有限公司 代码段运行方法、装置、终端及存储介质
CN110837473B (zh) * 2019-11-07 2023-08-22 腾讯科技(深圳)有限公司 应用程序调试方法、装置、终端及存储介质
CN111625378A (zh) * 2020-05-28 2020-09-04 北京达佳互联信息技术有限公司 一种源代码远程查看方法和装置
CN111818046B (zh) * 2020-07-08 2023-06-02 北京百度网讯科技有限公司 用于交互信息的方法、装置、设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703870A (zh) * 2002-10-10 2005-11-30 思科技术公司 用于在通信系统中进行分布式调试的方法与系统
CN1874579A (zh) * 2005-05-31 2006-12-06 西门子(中国)有限公司 一种仿真基于ip的多媒体子系统的方法
CN101510870A (zh) * 2008-04-23 2009-08-19 北京德瑞海普科技有限公司 基于脚本和模块驱动的代码级网络协议仿真验证组织方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819093A (en) * 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US5815653A (en) * 1995-11-13 1998-09-29 You; Lawrence L. Debugging system with portable debug environment-independent client and non-portable platform-specific server
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
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
US7500225B2 (en) * 2004-02-10 2009-03-03 Microsoft Corporation SQL server debugging in a distributed database environment
US7634761B2 (en) * 2004-10-29 2009-12-15 Microsoft Corporation Breakpoint logging and constraint mechanisms for parallel computing systems
US20070168997A1 (en) * 2005-12-20 2007-07-19 Duong-Han Tran Debugging of remote application software on a local computer
US8060866B2 (en) * 2007-10-19 2011-11-15 GE Intelligent Platforms, Inc Systems and methods for debugging multiple workflow instances
US8205095B2 (en) * 2007-11-02 2012-06-19 Nvidia Corporation Method and system for remotely debugging a failed computer machine
US8706844B2 (en) * 2009-12-02 2014-04-22 Sap Ag Provision of troubleshooting tools in a network system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703870A (zh) * 2002-10-10 2005-11-30 思科技术公司 用于在通信系统中进行分布式调试的方法与系统
CN1874579A (zh) * 2005-05-31 2006-12-06 西门子(中国)有限公司 一种仿真基于ip的多媒体子系统的方法
CN101510870A (zh) * 2008-04-23 2009-08-19 北京德瑞海普科技有限公司 基于脚本和模块驱动的代码级网络协议仿真验证组织方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Debugging Java Applications";Hunt,et al;《informIT,www.informit.com/articles/printerfriendly.aspx?p=406342》;20050812;第1-19页 *

Also Published As

Publication number Publication date
US8171346B2 (en) 2012-05-01
CN102195970A (zh) 2011-09-21
US20110225460A1 (en) 2011-09-15

Similar Documents

Publication Publication Date Title
CN102195970B (zh) 基于客户端会话的调试
CN111279320B (zh) 实现微服务配置和管理的api储存库
TWI584141B (zh) 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用
US10613853B2 (en) Updating software components through online stores
US8881136B2 (en) Identifying optimal upgrade scenarios in a networked computing environment
US10430172B2 (en) Re-configuration in cloud computing environments
US9811356B2 (en) Automated software configuration management
CN108369504A (zh) 被分发到变化拓扑的由模型驱动的更新
JP2020074135A (ja) モバイルアプリケーションアクティビティ検出器
EP3436935A1 (en) Pre-formed instructions for a mobile cloud service
US9535666B2 (en) Dynamic agent delivery
US20230103989A1 (en) Nested build automation for software dependencies
US9501303B1 (en) Systems and methods for managing computing resources
US11720089B2 (en) Decoupled load generation architecture
US20120265879A1 (en) Managing servicability of cloud computing resources
US10853215B2 (en) Intelligent configuration management of user devices
US11709750B2 (en) Dynamically mapping software infrastructure utilization
US20100037244A1 (en) Method for Providing Inline Service-Oriented Architecture Application Fragments
US20160323397A1 (en) Aysnchronous Custom Exit Points
CN114817073A (zh) 自动化测试方法、装置、设备、介质和程序产品
CN115858643A (zh) 遗留本地部署处理代码的云迁移
Engman et al. A Feasibility Study of Migrating a Telematics Solution Back-end into the Cloud

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150729

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant