针对基于云的调试的制作方法

文档序号:9732021阅读:172来源:国知局
针对基于云的调试的制作方法
【专利说明】针对基于云的调试
[0001] 对相关申请的交叉引用
[0002] 本申请要求于2014年5月1日提交的、标题为叮argeted Cloud-based Debugging" 的共同未决美国申请No. 14/267,361和于2013年8月22日提交的、标题为"Taskf low Targeted Debugging in the Cloucf的共同未决美国临时专利申请No.61/868,763的优先 权,其中每个申请的全部公开内容都通过引用被结合于此,用于所有目的。
【背景技术】
[0003] 通常,当软件开发者在编写代码时,开发者将在调试模式下编译和执行代码。调试 模式可W允许开发者查看代码在执行期间是如何工作的。当代码在调试模式下被执行时, 开发者通常能够:查看在执行期间的变量值、设置在该处代码的执行将停止直到开发者触 发继续执行的断点、和/或在逐行的基础上单步执行代码。
[0004] 当代码在开发者本地的计算机系统处被编译、调试和/或执行时,运种布置可W很 好地工作。在常规的布置中,可能需要在完全地在(允许调试功能的)调试模式下或者在(常 规上不允许调试功能的)运行时模式下执行代码之间做出选择。当开发者是使用计算机系 统的唯一的人员时,运种选择可W由开发者容易地做出。
[0005] 此外,当开发者具有希望被调试的代码时,开发者可能只对调试代码的一部分而 同时允许代码的其余部分不带调试功能地执行感兴趣。为整个代码片段提供的调试功能会 起到分散开发者的注意力和/或浪费其时间的作用。因此,由于运些W及其它原因,可能希 望开发者能够指定代码包的用于调试的一个或多个部分,W排除其它部分。

【发明内容】

[0006] 在一些实施例中,给出了用于调试代码的方法。该方法可W包括通过计算机系统 将代码编译为已编译代码,其中代码的第一部分对应于第一任务流并且代码的第二部分对 应于第二任务流。该方法可W包括通过计算机系统经由网络从开发者计算机系统接收对第 一任务流的选择,其中该选择指示第一任务流要被调试。该方法可W包括通过计算机系统 开始第一任务流的执行。该方法可W包括:在计算机系统正在执行已编译代码的第一任务 流的同时,通过计算机系统经由网络向开发者计算机系统提供用于代码的第一部分的调试 功能。
[0007] 运种方法的实施例可W包括W下特征中的一个或多个特征:该方法可W包括:在 编译代码之前,通过计算机系统经由网络浏览器接口和网络从开发者计算机系统接收用于 编译的代码,其中计算机系统是为多个开发者计算机系统提供编译服务的网络服务计算机 系统。该方法可W包括通过计算机系统执行第二任务流。可W不经由网络从开发者计算机 系统接收到用于第二任务流的调试的选择。可W不向开发者计算机系统提供与代码的第二 部分相关联的调试功能。该方法可W包括通过计算机系统经由网络浏览器向开发者计算机 系统提供允许在多个任务流中进行选择的接口,该多个任务流包括第一任务流和第二任务 流。该方法可W包括:在第一任务流的执行期间,通过计算机系统从开发者计算机系统接收 对第二任务流的选择。该方法可W包括通过计算机系统开始第二任务流的执行。该方法可 W包括:在计算机系统正在执行已编译代码的第二任务流的同时,通过计算机系统经由网 络向开发者计算机系统提供用于代码的第二部分的调试功能。通过计算机系统执行第一任 务流可W通过由计算机系统执行的虚拟机执行,该虚拟机将已编译代码作为运行时线程执 行。该方法可W包括:在执行第一任务流的同时,通过由计算机系统执行的虚拟机执行第二 运行时线程,其中第二运行时线程不具有提供给任何用户的调试功能。将代码编译为已编 译代码可W包括在编译期间修改代码的第一部分和代码的第二部分,W包括附加代码,其 中该附加代码提供调试功能。调试功能可W包括选自包括W下的组中的一个或多个特征: 在开发者计算机系统处的代码的第一部分内的断点处停止第一任务流的执行、在第一任务 流的执行期间将来自代码的第一部分内的变量值输出到开发者计算机系统、W及从开发者 计算机系统接收触发代码的第一部分中的各个表达式的处理发生的输入。
[0008] 在一些实施例中,给出了用于调试代码的系统。该系统可W包括网络服务计算机 系统,该网络服务计算机系统包括一个或多个处理器;W及与该一个或多个处理器通信地 禪合并且能够被其读取的存储器,并且该存储器具有存储在其中的处理器可读指令。当运 些指令被该一个或多个处理器执行时,使得该一个或多个处理器将代码编译为已编译代 码,其中代码的第一部分对应于第一任务流并且代码的第二部分对应于第二任务流。指令 可W使得该一个或多个处理器经由网络从开发者计算机系统接收对第一任务流的选择,其 中该选择指示第一任务流要被调试。指令可W使得该一个或多个处理器开始第一任务流的 执行。指令可W使得该一个或多个处理器在网络服务计算机系统正在执行已编译代码的第 一任务流的同时经由网络向开发者计算机系统提供用于代码的第一部分的调试功能。
[0009] 运种系统的实施例可W包括W下特征中的一个或多个特征:指令可W使得该一个 或多个处理器在编译代码之前经由网络浏览器接口和网络从开发者计算机系统接收用于 编译的代码。指令可W使得该一个或多个处理器执行第二任务流。可W不经由网络从开发 者计算机系统接收到用于调试第二任务流的选择。可W不向开发者计算机系统提供与代码 的第二部分相关联的调试功能。指令可W使得该一个或多个处理器经由网络浏览器向开发 者计算机系统提供允许在多个任务流中进行选择的接口,该多个任务流包括第一任务流和 第二任务流。指令可W使得该一个或多个处理器在第一任务流的执行期间从开发者计算机 系统接收对第二任务流的选择。指令可W使得该一个或多个处理器开始第二任务流的执 行。指令可W使得该一个或多个处理器在计算机系统正在执行已编译代码的第二任务流的 同时经由网络向开发者计算机系统提供用于代码的第二部分的调试功能。第一任务流的执 行可W通过由计算机系统执行的虚拟机来执行,该虚拟机将已编译代码作为运行时线程执 行。指令可W使得该一个或多个处理器在执行第一任务流的同时通过虚拟机执行第二运行 时线程,其中第二运行时线程不具有提供给任何用户的调试功能。在被执行时使得该一个 或多个处理器将代码编译为已编译代码的处理器可读指令可W包括运样的处理器可读指 令:该处理器可读指令在被执行时,使得该一个或多个处理器在编译期间修改代码的第一 部分和代码的第二部分,W包括附加代码,其中该附加代码提供调试功能。调试功能包括选 自包括W下的组中的一个或多个特征:在开发者计算机系统处的代码的第一部分内的断点 处停止第一任务流的执行、在第一任务流的执行期间将来自代码的第一部分内的变量值输 出到开发者计算机系统、W及从开发者计算机系统接收触发代码的第一部分中的各个表达 式的处理发生的输入。
[0010] 在一些实施例中,给出了用于调试代码的非临时性处理器可读介质。指令可W被 配置为使得该一个或多个处理器将代码编译为已编译代码,其中代码的第一部分对应于第 一任务流并且代码的第二部分对应于第二任务流。指令可W被配置为使得该一个或多个处 理器经由网络从开发者计算机系统接收对第一任务流的选择,其中该选择指示第一任务流 要被调试。指令可W被配置为使得该一个或多个处理器开始第一任务流的执行。指令可W 被配置为使得该一个或多个处理器在执行已编译代码的第一任务流的同时经由网络向开 发者计算机系统提供用于代码的第一部分的调试功能。在一些实施例中,指令可W被配置 为使得该一个或多个处理器在编译代码之前经由网络浏览器接口和网络从开发者计算机 系统接收用于编译的代码,其中计算机系统是为多个开发者计算机系统提供编译服务的网 络服务计算机系统。
[0011] 在一些实施例中,给出了用于调试代码的系统。该系统可W包括网络服务计算机 系统。网络服务计算机系统还可W包括编译器,该编译器被配置为将代码编译为已编译代 码,其中代码的第一部分对应于第一任务流并且代码的第二部分对应于第二任务流;选择 单元,被配置为经由网络从开发者计算机系统接收对第一任务流或第二任务流的选择,其 中该选择指示第一任务流或第二任务流要被调试;第一执行单元,被配置为当第一任务流 被选择时开始第一任务流的执行;W及第一调试功能单元,被配置为在第一执行单元正在 执行已编译代码的第一任务流的同时经由网络向开发者计算机系统提供用于代码的第一 部分的调试功能。在例子中,网络服务计算机系统还可W包括代码接收单元,该代码接收单 元被配置为在编译代码之前经由网络浏览器接口和网络从开发者计算机系统接收用于编 译的代码。在例子中,网络服务计算机系统还可W包括第二执行单元,该第二执行单元被配 置为执行第二任务流,其中未经由网络从开发者计算机系统接收到用于第二任务流的调试 的选择,并且其中与代码的第二部分相关联的调试功能不被提供给开发者计算机系统。在 例子中,网络服务计算机系统还可W包括接口提供单元,该接口提供单元被配置为经由网 络浏览器向开发者计算机系统提供允许在多个任务流中进行选择的接口,该多个任务流包 括第一任务流和第二任务流。在例子中,网络服务计算机系统还可W包括第=执行单元,该 第=执行单元被配置为当选择单元在第一任务流的执行期间从开发者计算机系统接收到 对第二任务流的选择时,开始第二任务流的执行;W及第二调试功能单元,第二调试功能单 元被配置为:在第=执行单元正在执行已编译代码的第二任务流的同时,经由网络向开发 者计算机系统提供用于代码的第二部分的调试功能。在例子中,第一执行单元是由计算机 系统执行的虚拟机,该虚拟机将已编译代码作为运行时线程执行。在例子中,在执行第一任 务流的同时,虚拟机执行第二运行时线程,其中第二运行时线程不具有提供给任何用户的 调试功能。在例子中,编译器还可W包括代码修改单元,该代码修改单元被配置为在编译期 间修改代码的第一部分和代码的第二部分,W包括附加代码,其中附加代码提供调试功能。 在例子中,第一调试功能单元和第二调试功能单元分别包括:停止单元,该停止单元被配置 为在开发者计算机系统处的代码的第一部分和第二部分内的断点处停止第一任务流和第 二任务流的执行;输出单元,该输出单元被配置为在第一任务流和第二任务流的执行期间 将来自代码的第一部分和第二部分内的变量值输出到开发者计算机系统;W及输入单元, 该输入单元被配置为从开发者计算机系统接收触发代码的第一部分和第二部分中的各个 表达式的处理发生的输入。
[0012] 在一些实施例中,给出了用于调试代码的装置。该装置可W包括:用于通过计算机 系统将代码编译为已编译代码的元件,其中代码的第一部分对应于第一任务流并且代码的 第二部分对应于第二任务流;用于通过计算机系统经由网络从开发者计算机系统接收对第 一任务流的选择的元件,其中该选择指示第一任务流要被调试;用于通过计算机系统开始 第一任务流的执行的元件;W及用于在计算机系统正在执行已编译代码的第一任务流的同 时通过计算机系统经由网络向开发者计算机系统提供用于代码的第一部分的调试功能的 元件。在例子中,该装置还可W包括:用于在编译代码之前通过计算机系统经由网络浏览器 接口和网络从开发者计算机系统接收用于编译的代码的元件,其中该计算机系统是为多个 开发者计算机系统提供编译服务的网络服务计算机系统。在例子中,该装置还可W包括:用 于通过计算机系统执行第二任务流的元件,其中:未经由网络从开发者计算机系统接收到 用于第二任务流的调试的选择,并且不向开发者计算机系统提供与代码的第二部分相关联 的调试功能。在例子中,该装置还可W包括:用于通过计算机系统经由网络浏览器向开发者 计算机系统提供允许在多个任务流中进行选择的接口的元件,该多个任务流包括第一任务 流和第二任务流。在例子中,该装置还可W包括:用于在第一任务流的执行期间通过计算机 系统从开发者计算机系统接收对第二任务流的选择的元件;用于通过计算机系统开始第二 任务流的执行的元件;W及用于在计算机系统正在执行已编译代码的第二任务流的同时通 过计算机系统经由网络向开发者计算机系统提供用于代码的第二部分的调试功能的元件。 在例子中,用于通过计算机系统执行第一任务流的元件是由计算机系统执行的虚拟机,该 虚拟机将已编译代码作为运行时线程执行。在例子中,该装置还可W包括:用于在执行第一 任务流的同时通过由计算机系统执行的虚拟机执行第二运行时线程的元件,其中第二运行 时线程不具有提供给任何用户的调试功能。在例子中,用于将代码编译为已编译代码的元 件还可W包括:用于在编译期间修改代码的第一部分和代码的第二部分W包括附加代码的 元件,其中附加代码提供调试功能。在例子中,用于为代码的第一部分提供调试功能的元件 还可W包括:用于在开发者计算机系统处的代码的第一部分内的断点处停止第一任务流的 执行的元件、用于在第一任务流的执行期间将来自代码的第一部分内的变量值输出到开发 者计算机系统的元件、W及用于从开发者计算机系统接收触发代码的第一部分中的各个表 达式的处理发生的输入的元件。
【附图说明】
[0013] 对各种实施例的性质和优点的进一步理解可W通过参考W下附图来实现。在附图 中,类似的部件或特征可W具有相同的附图标记。此外,相同类型的各种部件可W通过在附 图标记后面跟着的连接号W及在相似部件中进行区分的第二标记加 W区别。如果在说明书 中只使用了第一附图标记,那么该描述适用于具有相同第一附图标记的类似部件中的任何 一个部件,而与第二附图标记无关。
[0014] 图1示出了被配置为同时执行一个或多个运行时线程和一个或多个逻辑桐察 (logic insi曲t)线程的系统的实施例。
[0015] 图2示出了被配置为编译和执行逻辑桐察注入代码从而使得只与被选的任务流相 关联的调试功能对开发者可用的系统的实施例。
[0016] 图3示出了被配置用于针对任务流的调试的系统的实施例的框图。
[0017] 图4示出了用于针对任务流的调试的方法的实施例。
[0018] 图5示出了用于针对任务流的调试的方法的另一种实施例。
[0019] 图6示出了允许使用远程开发者计算机系统的分布式系统的实施例。
[0020] 图7示出了服务可W通过其来作为云服务被提供的系统环境的实施例的框图。
[0021] 图8示出了可W用来实现本文详细描述的各种实施例的计算机系统的实施例。
[0022] 图9示出了根据本文详细描述的原理进行配置的用于调试代码的系统的实施例的 功能框图。
【具体实施方式】
[0023] 可W使用提供网络服务的计算机系统(例如,网络服务器)来为一个或多个用户同 时编译和执行代码,诸如业务逻辑代码。运种布置对用户来说会具有显著的优点一一由于 正在被用户使用的本地设备不执行代码的编译或执行,因此在本地设备处可W使用和/或 需要较少的处理能力。通过网络服务编译和执行的代码可W被称为注入代码。运种注入代 码是从远程计算机系统被提供用于编译和/或执行的。编写或编辑代码的开发者可W使用 本地计算机系统来查看和编辑代码,但是可W将代码传递到网络服务用于编译和执行。
[0024] 可能正在经由网络连接从远程计算设备访问网络服务的一些用户可能具有被网 络服务计算机系统执行的运行时线程。运种运行时线程可W是正在被不带调试功能地执行 的已编译注入代码,诸如已编译业务逻辑代码。因此,正在被网络服务计算机系统执行的运 行时线程可W不包含或强制执行断点、可W不停止并等待输入来继续执行代码中的每个表 达式、并且可W不输出在注入代码内出现的各种变量的值。网络服务的不同用户可W与不 同的运行时线程相关联。正在为不同用户执行的运行时线程可W对应于已编译代码的相同 或不同片段(例如,代码的特定已编译片段可W被执行为用于多个用户的多个线程)。因此, 经由网络(例如,因特网)访问网络服务的用户可W使网络服务执行运行时线程,而经由网 络访问网络服务的另一个用户可W使网络服务执行与第一运行时线程无关的第二运行时 线程。
[0025] 运些运行时线程中的每个运行时线程可W被网络服务计算机系统的同一虚拟机 执行。运种虚拟机可W被配置为W特定的模式独占地运行。例如,运个虚拟机可W被配置为 W调试模式或者W运行时模式运行。运些模式可W是独占的;正在被虚拟机执行的所有线 程可能需要W调试模式被执行或者正在被虚拟机执行的所有线程可能需要W运行时模式 被执行。
[0026] 如果特定用户(例如,业务逻辑开发者)希望调试代码,诸如开发者已编写或修改 的业务逻辑代码,那么调试模式可能是开发者所希望的。调试可W允许开发者做W下调试 活动中的一种或多种调试活动:在注入代码中设置断点,在该点处业务逻辑的执行暂停直 到开发者指示执行要继续;在逐个表达式的基础上单步执行注入代码;W及在已编译注入 代码的执行期间查看和/或编辑变量的值。
[0027] 此外,应该理解,正在被开发者调试的代码可能是复杂的、具有一个或多个子部 分。在开发者可能希望调试注入代码的一部分的同时,开发者可能希望注入代码的另一部 分不带调试功能地执行。运种布置可W允许开发者将其调试针对注入代码的特定部分,同 时允许注入代码的剩余部分在不向开发者提供调试功能的情况下执行。
[0028] 如果虚拟机在调试模式下运行,W允许一个或多个开发者调试代码,那么对于网 络服务器上的其他用户的注入代码的执行可能受到影响并且被迫也在调试模式下运行。因 此,可能希望使同一虚拟机执行一个或多个线程,其中一些线程正在被并发调试而一个或 多个其它线程W运行时模式(不带调试功能地)运行,W允许访问网络服务器的所有用户都 使代码W期望的模式被执行。
[0029] 为了允许一个或多个开发者调试注入代码而其它线程并发地W运行时模式不带 调试功能地被网络服务执行,网络服务的虚拟机可W W运行时模式独占地运行。当希望被 调试的注入代码被编译时,编译器可W编辑正在被编译的注入代码W包括调试功能。一旦 被编译,从注入代码中创建的字节码就可W被虚拟机作为运行时来执行。因此,从网络服务 的虚拟机的角度看,基于已编译注入代码的线程作为运行时被执行;但是,从开发者的角度 看,该线程与假如虚拟机是在调试模式下相比具有相同或相似的调试功能。调试功能允许 注入代码被调试,因为运种调试功能是在编译处理期间被添加到注入代码中的。
[0030] 在开发者可能希望调试注入代码的某些部分的同时,开发者可能希望注入代码的 其它部分在不向开发者提供调试功能的情况下被执行。为注入代码的不希望被调试的部分 启用调试功能会分散、延迟和/或W其它方式负面地影响开发者调试代码中该开发者希望 调试的该一个或多个部分的能力。
[0031] 注入代码可W被各种任务流调用。"任务流"可W定义代码的一个或多个部分或片 段,该代码是与公共功能有关的一系列请求和/或代码的部分。任务流定义一组活动,该组 活动被按顺序地一起执行,W执行应用中的特定功能任务。活动可W被定义W执行整个应 用代码的一些子集,像显示新的页面、输入应用数据或者保存应用数据。在从代码编译的网 络应用中,特定任务流的活动可W通过源自用户的浏览器的请求来激活。任务流可W激活 注入代码的特定片段或部分。任务流可W激活注入代码并且也可W激活静态代码。静态代 码可W指没有被注入和/或不能被开发者编辑的代码。运种静态代码可W由原始应用开发 者和/或应用可W激活的其它服务的提供商来提供。任务流可W是预定义的(即不能被开发 者编辑)或者可W允许被开发者创
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1