CN103365707B - 控制异步调用的返回的方法和装置 - Google Patents
控制异步调用的返回的方法和装置 Download PDFInfo
- Publication number
- CN103365707B CN103365707B CN201210091156.6A CN201210091156A CN103365707B CN 103365707 B CN103365707 B CN 103365707B CN 201210091156 A CN201210091156 A CN 201210091156A CN 103365707 B CN103365707 B CN 103365707B
- Authority
- CN
- China
- Prior art keywords
- program
- readjustment
- asynchronous call
- breakpoint
- information
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000004044 response Effects 0.000 claims description 13
- 238000002372 labelling Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 15
- 238000004590 computer program Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000008846 dynamic interplay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
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/3664—Environments for testing or debugging software
-
- 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
- G06F11/3632—Software debugging of specific synchronisation aspects
-
- 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
- G06F11/3644—Software debugging by instrumenting at runtime
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示出包含异步调用的程序的执行流程。在图1的例子中,主程序依次执行两个异步调用ASCall1和ASCall2,然后继续执行其他函数和功能,例如同步调用函数SC1,SC2等。对于这两个异步调用函数,开发人员可能预期依次获得这两个调用的返回结果,例如在SC1和SC2之间获得ASCall1的回调,在SC2之后获得ASCall2的回调。然而,取决于被调用方对ASCall1和ASCall2的执行情况,对应的回调函数的执行顺序有可能发生变化。例如,在特定情况下,ASCall2的返回时间可能早于ASCall1(如图中虚线所示),这种情况下主程序的执行结果有可能不同于预期的依次返回的情况,从而发生错误。由于这样的错误仅仅在异步调用的特定返回顺序下出现,因此难以通过常规的程序调试来发现。
由于无法控制异步调用的返回时间,为了进行除错,开发人员往往需要将程序运行大量次数,以期从中再现导致错误的异步调用返回顺序。然而,这样的方式相当耗时,并且仍然无法确保除错的效果。
在另一种方案中,开发人员从程序中提取出与异步调用相关的逻辑,并对其进行测试。假定程序中有5处异步调用,其中一种特定的返回顺序会导致程序出现错误,那么开发人员需要耗费大量时间来排列所有可能的返回顺序,并从中找出导致错误的一种顺序。并且,由于各种程序框架的快速发展,从复杂的程序功能块中提取出单个逻辑也非常困难。
因此,希望能够对异步调用的返回进行控制,从而便于程序的调试和除错。
发明内容
鉴于以上提出的问题,提出本发明,旨在提供一种方案,能够对异步调用的返回进行控制。
根据本发明一个实施例,提供一种控制程序中的异步调用的返回的方法,包括:检测程序中的至少一个异步调用;响应于检测到程序中设置的断点,在所述断点处中断所述程序的执行;获取与所述至少一个异步调用相对应的至少一个回调;根据用户选择将至少一个回调分别插入到程序的指定位置;以及响应于所述至少一个回调被插入到程序中,从所述断点处继续执行所述程序。
根据本发明另一实施例,提供一种控制程序中的异步调用的返回的装置,包括:检测单元,配置为检测程序中的至少一个异步调用;中断单元,配置为响应于检测到程序中设置的断点,在所述断点处中断所述程序的执行;回调获取单元,配置为获取与所述至少一个异步调用相对应的至少一个回调;回调插入单元,配置为根据用户选择将至少一个回调分别插入到程序的指定位置;以及执行单元,配置为响应于所述至少一个回调被插入到程序中,从所述断点处继续执行所述程序。
利用本发明实施例的方法和装置,开发人员能够在程序调试阶段根据需要对异步调用的返回进行,从而更好地对程序进行测试和除错。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出包含异步调用的程序的执行流程;
图2示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图3示出根据本发明一个实施例的控制异步调用的返回的方法;以及
图4示出根据本发明一个实施例的控制异步调用返回的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图2示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图2所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
现在参看图3,其示出根据本发明一个实施例的控制异步调用的返回的方法。如图3所示,实施例的方法包括以下步骤:在步骤30,检测程序中的至少一个异步调用;在步骤32,响应于检测到程序中设置的断点,在所述断点处中断所述程序的执行;在步骤34,获取与所述至少一个异步调用相对应的至少一个回调;在步骤36,根据用户选择将至少一个回调分别插入到程序的指定位置;以及在步骤38,从所述断点处继续执行所述程序。下面结合具体例子描述以上各个步骤的执行方式。
在一个实施例中,上述方法主要应用于单线程的程序,例如脚本程序。下面以脚本程序JavaScript为例描述上述方法的执行。在JavaScript中,由于单一线程用于逐行执行程序中的代码,异步调用主要通过与服务端的通信来实现。具体地,在进行异步调用时,主程序向服务端发送异步调用请求,并继续执行接下来的代码,同时等待服务端的响应。在服务端对异步调用的函数进行对应处理之后,会对主程序进行回调。通过这样的回调函数,主程序就可以获得异步调用的处理结果。由于与服务端之间通信效率的不同、服务端平台的处理能力的不同等多种因素,异步调用的返回时间并不确定。为此,通过执行以上的步骤30-38来控制异步调用的返回。
具体地,在步骤30,检测程序中的异步调用。JavaScript中异步调用函数的种类比较有限,主要包括ajax功能中常用的XMLHttpRequest(XHR),以及setTimeOut,setInterval等。因此,对于JavaScript,可以预先定义一个代码集,在该代码集中定义有可能用到的异步调用函数。在步骤30中,对程序的代码进行扫描,将扫描的代码与代码集的内容进行比对,由此检测程序中出现的异步调用。例如,一旦扫描到程序中出现有代码callXMLHttpRequest,就可以认定程序中进行了异步调用。对于检测到多个异步调用的情况,可以为这些异步调用函数赋以参考编号,以便于后续进行区分。
另一方面,用户可以在调试程序时根据需要在程序中设置断点。断点的设置可由预先约定的关键词来引导或标记,例如mark,breakpoint等。在对程序代码进行扫描时,可以检测和识别上述关键词。一旦扫描到上述关键词,就认为出现断点。在一个实施例中,断点的检测包含在上述步骤30中。在另一实施例中,通过其他流程步骤或处理进行断点的检测。一旦检测到断点,则需要暂停程序的执行,也就是执行步骤32。
具体地,一旦在程序中检测到断点,在步骤32中,在断点处中断主程序的执行,或者说,使得主程序在断点处形成阻塞。这可通过在程序的断点处插入形成阻塞的代码来实现。
在现有技术中,开发人员在进行程序调试时也经常需要设置断点,并使得程序的执行在断点处暂停。因此,除以上具体描述的实施方式之外,断点检测的执行方式和步骤32中程序中断的执行方式均可以参考现有技术中的其他方式来执行,或者可以采用本领域技术人员能够想到的其他方式。
与程序的中断并行地,在步骤34,获取与所检测的异步调用相对应的回调。如上所述,JavaScript主要通过与服务端的通信实现异步调用。因此,在该步骤中,为了获得异步调用的执行结果,首先根据步骤30中检测到的异步调用,将调用请求发送到服务端,然后监视服务端的响应,从中捕获服务端对调用函数进行处理之后对主程序进行的回调。
然后,在步骤36,根据用户选择将获得的回调分别插入到程序的指定位置。在一个实施例中,每获得一个异步调用的回调,就根据用户选择将该回调插入到指定位置。在另一实施例中,将获得的异步调用的回调放入一个回调库中。该回调库可以通过各种缓冲器或存储器来实现。在将检测到的所有异步调用的回调都放入回调库中之后,根据用户选择将这些回调从回调库中分别插入到JavaScript主程序中指定的位置。
在回调被插入回主程序之后,在步骤38,从断点处继续执行主程序。此时,由于异步调用的回调是根据用户选择插入到程序中指定位置的,因此在程序继续执行过程中,回调函数的执行顺序是根据用户选择来安排的。由此,在程序的调试阶段,用户可以对异步调用的返回进行控制,根据需要设定返回时间和返回顺序,从而便于程序的调试和除错。
如果程序中设置有多个断点,那么这多个断点可以将程序划分为多个代码段;除最后一个代码段(程序结尾处的代码段)之外,每个代码段都以一个断点作为结尾。在这样的情况下,可以针对每个代码段执行上述实施例的方法,使得程序的执行在代码段结尾处暂停,待这一代码段中的异步调用的回调被放回程序中之后,继续执行下一代码段,从而分段对程序进行调试。
为了使得用户清楚了解每个异步调用的过程,可以在程序调试时为用户提供与调用相关的信息。为此,在一个实施例中,上述方法还包括提供信息表的步骤,所述信息表用于示出检测到的异步调用的信息、对应的回调的信息以及异步调用与其对应的回调之间的关联信息。具体地,一旦在执行上述步骤30的过程中检测到异步调用,就记录该异步调用的信息,例如调用对象、调用栈等。如前所述,在多个异步调用的情况下,这些调用函数可被赋以参考编号。此时,上述参考编号也被记录。另一方面,还需记录与异步调用相对应的回调的信息,例如回调句柄及其引用等。基于以上记录的信息,可以将其安排为信息表的形式提供给用户。由此,信息表不仅示出异步调用的信息和回调的信息,还示出异步调用与其对应的回调之间的关联信息。这样的信息表可以使得用户在程序调试过程中清楚地知道每个异步调用及其回调的上下文信息,从而了解整个调用过程。借助于这样的信息表,用户可以更好地对程序中的调用进行追踪或回溯。
另一方面,在以上描述的方法中,根据用户选择将与异步调用相对应的回调插入到程序中的特定位置。上述用户选择可以通过多种方式获得。在一个实施例中,上述用户选择可以在执行图3的方法步骤之前由用户预先确定,例如默认按照异步调用的顺序执行回调函数。在另一实施例中,可以在执行上述方法过程中与用户进行交互,动态获得用户选择,从而根据用户选择对回调进行安排。
为了与用户进行动态交互,在一个实施方式中,本发明的方法还包括以下步骤:向用户提供与回调有关的选项,并接收用户对所述选项的选择。在一个实施例中,提供给用户的选项包括回调插入位置选项,以允许用户指定各个回调应该插入的位置。在另一实施例中,为了使得用户能够直观地对异步调用的回调进行控制和安排,提供给用户的选项还包括以上所述的信息表,并使得回调插入位置选项与信息表相结合。由此,用户在指定各个回调的插入位置时,可以通过参照信息表确定各个回调所对应的异步调用并了解各个异步调用的上下文信息,据此更清楚地安排回调的插入位置和返回顺序。
在一个实施例中,上述选项以图形用户接口GUI的形式提供给用户,使得选项的呈现更加直观。除了呈现回调插入位置选项,接口还能够接收用户对选项的选择,作为后续执行回调插入的基础。
由此,上述实施例的方法在程序调试过程中与用户交互,从而获得用户选择,并基于用户选择来安排回调的插入位置。因此,用户能够在调试程序时根据需要测试各种回调执行顺序,从而发现程序中与回调执行顺序相关的潜在问题。
以上的执行方式是结合JavaScript进行描述的。然而,可以理解,上述构思也可以应用于其他程序语言。例如,对于其他单线程的程序,可以修改以上所述的预定义的代码集,使其包含该程序能够支持的异步调用函数的集合。其他步骤的执行方式与JavaScript类似。
基于同一发明构思,本发明的实施例还提供了用于控制异步调用的返回的装置。图4示出根据一个实施例的控制异步调用返回的装置的框图。在图4中,该装置整体上表示为400,并包括以下单元:检测单元40,配置为检测程序中的至少一个异步调用直到检测到设置的断点;中断单元42,配置为在所述断点处中断所述程序的执行;回调获取单元44,配置为获取与上述异步调用相对应的回调;回调插入单元46,配置为根据用户选择将上述回调分别插入到程序的指定位置;以及执行单元48,配置为响应于上述回调被插入到程序中,从断点处继续执行程序。
在一个实施例中,上述装置400耦合至程序编译引擎,以对程序进行检测和控制操作;同时,装置400与服务端通信,以发送请求并捕获客户端的响应。装置400与其他装置的耦合和通信可通过公知的各种有线、无限方式利用各种协议来实现。
在一个实施例中,上述装置400还包括信息表提供单元(未示出),配置为向用户提供信息表。具体地,在检测单元40检测到异步调用的情况下,信息表提供单元可以记录检测到的异步调用的信息,并记录与异步调用相对应的回调的信息。基于以上记录的信息,信息表提供单元将其组织为信息表提供给用户,在其中不仅示出异步调用的信息和回调的信息,还示出异步调用与其对应的回调之间的关联信息。这样的信息表可以使得用户在程序调试过程中清楚地知道每个异步调用及其回调的上下文信息,从而了解整个调用过程。
在一个实施例中,上述装置400还包括接口单元(未示出),配置为向用户提供与回调结果有关的选项,并接收用户对所述选项的选择。在一个实施例中,提供给用户的选项包括回调插入位置选项,以允许用户指定各个回调应该插入的位置。在另一实施例中,为了使得用户能够直观地对异步调用的回调进行控制和安排,在以上描述的信息表的基础上向用户提供回调插入位置选项。上述接口单元还能够接收用户对选项的选择,作为回调插入单元46执行回调插入的基础。
通过以上的装置400,用户可以在进行程序调试时,根据需要安排异步调用的返回顺序,从而对程序的各种潜在问题进行测试。
以上各个单元的具体执行方式与上文参照具体例子对控制异步调用返回的方法的描述相类似,在此不再赘述。
在一个实施例中,由于许多脚本程序是在浏览器中进行编译的,因此上述装置400可以实现为浏览器的插件的形式。在另一实施例中,装置400可以作为程序调试工具的附加功能构件。在又一实施例中,装置400可以作为独立的工具,用于辅助发开人员进行程序调试。
可以理解,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种控制程序中的异步调用的返回的方法,包括:
检测程序中的至少一个异步调用;
响应于检测到程序中设置的断点,在所述断点处中断所述程序的执行;
通过将所述至少一个异步调用的调用请求发送到服务端,从服务端获取与所述至少一个异步调用相对应的至少一个回调,其中在获取与所述至少一个异步调用相对应的至少一个回调期间暂停程序的执行;
根据用户选择将至少一个回调分别插入到程序的指定位置;以及
响应于所述至少一个回调被插入到程序中,从所述断点处继续执行所述程序,其中根据需要安排异步调用的返回顺序。
2.根据权利要求1的方法,其中所述检测程序中的至少一个异步调用通过以下方式执行:扫描所述程序的代码,将所述代码与预先定义的代码集进行比较,由此检测出程序中的至少一个异步调用。
3.根据权利要求1的方法,其中所述程序中设置的断点通过扫描所述程序的代码并识别用于引导或标记断点的关键词来检测。
4.根据权利要求1的方法,其中在所述断点处中断程序的执行包括:在程序的断点处插入形成阻塞的代码,从而中断程序的执行。
5.根据权利要求1的方法,还包括提供信息表,所述信息表用于示出检测到的异步调用的信息、对应的回调的信息以及异步调用与其对应的回调之间的关联信息。
6.根据权利要求1的方法,还包括,向用户提供与回调有关的选项,并接收用户对所述选项的选择,从而获得所述用户选择。
7.根据权利要求6的方法,其中所述与回调有关的选项包括回调插入位置选项和信息表,所述信息表示出检测到的异步调用的信息、对应的回调的信息以及异步调用与其对应的回调之间的关联信息。
8.根据权利要求7的方法,其中所述与回调有关的选项被提供为图形用户接口的形式。
9.一种控制程序中的异步调用的返回的装置,包括:
检测单元,配置为检测程序中的至少一个异步调用;
中断单元,配置为响应于检测到程序中设置的断点,在所述断点处中断所述程序的执行;
回调获取单元,配置为通过将所述至少一个异步调用的调用请求发送到服务端,从服务端获取与所述至少一个异步调用相对应的至少一个回调,其中在获取与所述至少一个异步调用相对应的至少一个回调期间暂停程序的执行;
回调插入单元,配置为根据用户选择将至少一个回调分别插入到程序的指定位置;以及
执行单元,配置为响应于所述至少一个回调被插入到程序中,从所述断点处继续执行所述程序,其中根据需要安排异步调用的返回顺序。
10.根据权利要求9的装置,其中所述检测单元配置为,扫描所述程序的代码,将所述代码与预先定义的代码集进行比较,由此检测出程序中的至少一个异步调用。
11.根据权利要求9的装置,其中所述程序中设置的断点通过扫描所述程序的代码,识别用于引导或标记断点的关键词来检测。
12.根据权利要求9的装置,其中所述中断单元配置为,在程序的断点处插入形成阻塞的代码,从而中断程序的执行。
13.根据权利要求9的装置,还包括信息表提供单元,配置为提供信息表,所述信息表用于示出检测到的异步调用的信息、对应的回调的信息以及异步调用与其对应的回调之间的关联信息。
14.根据权利要求9的装置,还包括接口单元,配置为向用户提供与回调有关的选项,并接收用户对所述选项的选择,从而获得所述用户选择。
15.根据权利要求14的装置,其中所述与回调有关的选项包括回调插入位置选项和信息表,所述信息表示出检测到的异步调用的信息、对应的回调的信息以及异步调用与其对应的回调之间的关联信息。
16.根据权利要求15的装置,其中所述与回调有关的选项被提供为图形用户接口的形式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210091156.6A CN103365707B (zh) | 2012-03-30 | 2012-03-30 | 控制异步调用的返回的方法和装置 |
US13/770,194 US9164876B2 (en) | 2012-03-30 | 2013-02-19 | Controlling asynchronous call return |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210091156.6A CN103365707B (zh) | 2012-03-30 | 2012-03-30 | 控制异步调用的返回的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103365707A CN103365707A (zh) | 2013-10-23 |
CN103365707B true CN103365707B (zh) | 2016-08-03 |
Family
ID=49236828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210091156.6A Expired - Fee Related CN103365707B (zh) | 2012-03-30 | 2012-03-30 | 控制异步调用的返回的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9164876B2 (zh) |
CN (1) | CN103365707B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719797B2 (en) * | 2010-05-18 | 2014-05-06 | Blackberry Limited | System and method for debugging dynamically generated code of an application |
US9846597B2 (en) * | 2013-03-13 | 2017-12-19 | Microsoft Technology Licensing, Llc | Durable program execution |
US9405654B2 (en) * | 2013-06-20 | 2016-08-02 | Microsoft Technology Licensing, Llc | Monitoring mobile application performance |
WO2017129242A1 (en) * | 2016-01-27 | 2017-08-03 | Advantest Corporation | Deterministic concurrent test program executor for an automated test equipment |
US10095599B2 (en) * | 2016-03-31 | 2018-10-09 | International Business Machines Corporation | Optimization for application runtime monitoring |
US9697101B1 (en) | 2016-09-20 | 2017-07-04 | International Business Machines Corporation | Detecting errors in web application runtime environments |
US10452534B2 (en) * | 2017-06-05 | 2019-10-22 | Microsoft Technology Licensing, Llc | Asynchronous operation query |
CN107945430B (zh) * | 2017-11-24 | 2021-09-14 | 上海动联信息技术股份有限公司 | 一种用于智能pos机的基于串口的双向并发通讯方法 |
CN108200122A (zh) * | 2017-12-08 | 2018-06-22 | 北京奇虎科技有限公司 | 一种http数据处理方法及装置 |
CN108460078B (zh) * | 2018-01-08 | 2020-10-13 | 平安科技(深圳)有限公司 | 辅助功能的执行方法、装置、存储介质及终端 |
CN108595331B (zh) * | 2018-04-24 | 2021-11-02 | 杭州网易智企科技有限公司 | 异步接口的测试方法、介质、装置和计算设备 |
CN114253837B (zh) * | 2021-11-22 | 2023-03-24 | 杭州加速科技有限公司 | 一种ate测试机程序的多线程调试方法、系统及测试机台 |
CN114253694B (zh) * | 2022-02-25 | 2022-06-24 | 杭州雄迈集成电路技术股份有限公司 | 一种基于神经网络加速器的异步处理方法与装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892941A (en) * | 1997-04-29 | 1999-04-06 | Microsoft Corporation | Multiple user software debugging system |
US8032886B2 (en) | 2000-11-22 | 2011-10-04 | Microsoft Corporation | Tracking asynchronous execution of program using hierarchical structure of objects |
US7093249B2 (en) * | 2001-03-02 | 2006-08-15 | National Instruments Corporation | System and method for synchronizing execution of a test sequence |
US7451455B1 (en) * | 2003-05-02 | 2008-11-11 | Microsoft Corporation | Apparatus and method for automatically manipulating software products |
US7380235B1 (en) * | 2003-06-27 | 2008-05-27 | Microsoft Corporation | Application program interface call replay tool |
US7353427B2 (en) * | 2004-04-08 | 2008-04-01 | International Business Machines Corporation | Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions |
US20050246692A1 (en) | 2004-04-28 | 2005-11-03 | Convey Development, Inc. | Asynchronous compilation |
US7500149B2 (en) | 2005-03-31 | 2009-03-03 | Microsoft Corporation | Generating finite state machines for software systems with asynchronous callbacks |
US7506318B1 (en) * | 2005-06-28 | 2009-03-17 | Replay Solutions, Inc. | Recording and replaying computer programs |
US7930684B2 (en) * | 2005-10-12 | 2011-04-19 | Symantec Operating Corporation | System and method for logging and replaying asynchronous events |
US7770155B2 (en) * | 2005-11-03 | 2010-08-03 | International Business Machines Corporation | Debugger apparatus and method for indicating time-correlated position of threads in a multi-threaded computer program |
US7673181B1 (en) * | 2006-06-07 | 2010-03-02 | Replay Solutions, Inc. | Detecting race conditions in computer programs |
US8826242B2 (en) * | 2007-11-27 | 2014-09-02 | Microsoft Corporation | Data driven profiling for distributed applications |
US8756579B1 (en) * | 2007-12-03 | 2014-06-17 | Appcelerator, Inc. | Client-side and server-side unified validation |
CN100504810C (zh) * | 2007-12-27 | 2009-06-24 | 东信和平智能卡股份有限公司 | 嵌入式系统的调试方法 |
US8782611B1 (en) * | 2009-08-24 | 2014-07-15 | Nvidia Corporation | Visual inspection and debugging of threads in parallel computing systems |
CN101719093B (zh) * | 2009-12-09 | 2011-11-23 | 上海普元信息技术股份有限公司 | 企业Web应用系统中实现跨浏览器Javascript调试的系统及其方法 |
US8607199B2 (en) * | 2009-12-16 | 2013-12-10 | International Business Machines Corporation | Techniques for debugging code during runtime |
CN102222037B (zh) * | 2010-04-15 | 2014-04-02 | 国际商业机器公司 | 用于定位java程序的瓶颈的方法和设备 |
US8893090B2 (en) * | 2011-04-15 | 2014-11-18 | Microsoft Corporation | Stepping out of an asynchronous method into its continuation in a debugger |
US8914776B2 (en) * | 2012-05-17 | 2014-12-16 | Microsoft Corporation | Assisting development tools through inserted code statements |
-
2012
- 2012-03-30 CN CN201210091156.6A patent/CN103365707B/zh not_active Expired - Fee Related
-
2013
- 2013-02-19 US US13/770,194 patent/US9164876B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN103365707A (zh) | 2013-10-23 |
US20130263095A1 (en) | 2013-10-03 |
US9164876B2 (en) | 2015-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103365707B (zh) | 控制异步调用的返回的方法和装置 | |
US9274934B2 (en) | System and method for creating change-resilient scripts | |
US9317413B2 (en) | Testing device and testing method thereof | |
US9213625B1 (en) | Method and apparatus for performing automated user-interface layout testing | |
US10235281B2 (en) | Automated test runs in an integrated development environment system and method | |
CN110875858B (zh) | 应用测试数据抓取方法、系统、设备及存储介质 | |
US10318286B2 (en) | Adding on-the-fly comments to code | |
US9767003B2 (en) | Conditional component breakpoint setting system and method | |
CN104246714A (zh) | 软件缺陷验证 | |
JP2008040537A (ja) | Guiテスト支援システム及びテスト支援用アプリケーションプログラム | |
US20130326497A1 (en) | Synchronization point visualization for modified program source code | |
CN106126424A (zh) | 一种脚本可视化的自动化测试方法、装置和移动终端 | |
KR20180129623A (ko) | 연관된 다중 파일 정적 분석 장치 | |
CN105912657A (zh) | 应用程序中图片自动检测和压缩方法及系统 | |
CN112286782A (zh) | 控件遮挡检测方法、软件检测方法、装置及介质 | |
JP2013143044A (ja) | プログラム、情報処理方法、および情報処理装置 | |
CN111857752A (zh) | 一种PostgreSQL数据库安装方法、装置及设备 | |
CN109298952A (zh) | 应用程序编程接口的调用方法及其装置 | |
US8806448B2 (en) | Dynamic instrumentation method and apparatus for tracing and analyzing a program | |
US9374412B2 (en) | Information processing apparatus, information acquiring method, and computer readable recording medium in which information acquisition program is stored | |
CN112380134A (zh) | 一种基于图像识别的WebUI自动化测试方法 | |
KR101183675B1 (ko) | 비동기 웹서비스에 기반한 회신 처리 방법 및 장치 | |
CN114840416B (zh) | 一种基于图像分析的页面控件异步遍历方法 | |
US11328113B1 (en) | Dynamic localization using color | |
CN114945104B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 |