CN110879781A - 程序调试方法、装置、电子设备及计算机可读存储介质 - Google Patents

程序调试方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN110879781A
CN110879781A CN201911076438.7A CN201911076438A CN110879781A CN 110879781 A CN110879781 A CN 110879781A CN 201911076438 A CN201911076438 A CN 201911076438A CN 110879781 A CN110879781 A CN 110879781A
Authority
CN
China
Prior art keywords
program
debugged
thread
target object
interface
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
Application number
CN201911076438.7A
Other languages
English (en)
Other versions
CN110879781B (zh
Inventor
崔显龙
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201911076438.7A priority Critical patent/CN110879781B/zh
Publication of CN110879781A publication Critical patent/CN110879781A/zh
Application granted granted Critical
Publication of CN110879781B publication Critical patent/CN110879781B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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为本发明实施例中程序调试方法的步骤102的细化流程示意图;
图4为本发明实施例中程序调试方法的应用***示意图;
图5为本发明实施例中程序调试装置的结构示意图之一;
图6为本发明实施例中程序调试装置的结构示意图之二;
图7为本发明实施例中程序调试装置的存储模块的细化结构示意图;
图8为本发明实施例中电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
首先对本发明实施例提供的程序调试方法进行说明。
需要说明的是,本发明实施例提供的程序调试方法可以应用于电子设备。可选的,该电子设备可以为嵌入有待调试程序的设备,可以用于对待调试程序进行调试,以进行接口测试或者问题定位。
参见图1,图中示出了本发明实施例中程序调试方法的流程示意图之一。如图1所示,该方法可以包括如下步骤:
步骤101,在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;其中,所述目标对象用于存储所述待调试程序对应的线程中的调试信息;
步骤102,在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;其中,所述调试信息包括所述待调试程序的接口返回数据;
步骤103,将所述目标对象中存储的调试信息添加到返回结果。
在步骤101中,所述待调试程序可以是实现任意功能的程序,比如,对于视频播放平台,所述待调试程序可以是实现统计视频播放平台上的用户画像的程序,又比如,对于视频发布平台,所述待调试程序可以是实现视频检测的程序。
所述待调试程序可以是采用任意编程语言进行描述的程序,比如,可以是采用高级语言如VB语言或JAVA语言等进行描述的程序,又比如,也可以是采用中级语言如C语言或C++语言等进行描述的程序,又比如,亦或是采用低级语言如汇编语言和机器语言等进行描述的程序。以下实施例中,所述待调试程序将以JAVA语言为例进行详细说明。
在调试所述待调试程序时,所述待调试程序必须依赖于载体,并嵌入至载体中去运行,所述待调试程序的载体可以是任意电子设备,所述电子设备可以运行所述待调试程序,从而实现所述待调试程序对应的线程的功能。
比如,所述待调试程序的载体可以是计算机设备,该计算机设备通常需要具备运行或调试所述待调试程序的环境,因此,该计算机设备可以安装有运行或调试所述待调试程序的软件。举个例子来说,若所述待调试程序为基于C语言的程序,计算机设备可以安装有运行或调试基于C语言程序的软件如Visual C++软件。
又比如,所述待调试程序的载体也可以是产品设备,该产品设备可以理解为集成所述待调试程序的设备,从而实现所述待调试程序对应的线程的功能。需要说明的是,所述产品设备需要进行产品测试,该产品测试可以是处于测试阶段的测试,也可以是处于开发阶段的测试,还可以是处于上线出售阶段为产品维护而进行的测试。
所述待调试程序为一个静态的概念,其可以理解为由编程语言撰写的一套能够由计算机识别和执行的逻辑指令,若运行或调试所述待调试程序,会启动所述待调试程序对应的线程,线程为一个动态的概念,其可以理解为按照所述待调试程序中的逻辑指令执行指定的任务。
所述待调试程序对应的线程中可以包括一个或多个接口,比如,所述待调试程序对应的线程中可以包括输入接口,用于为所述待调试程序对应的线程提供输入参数,若所述待调试程序对应的线程中需要返回结果给另一程序对应的线程或者用户,所述待调试程序对应的线程中还可以包括输出接口。
所述输入接口和输出接口可以定义为所述待调试程序对应的线程的第一种类型的接口,同时,所述待调试程序对应的线程还可以包括第二种类型的接口,第二种类型的每个接口可以代表线程中的一个子任务,其接口内部可以调用第三方接口,以获取第三方***的数据来实现该接口对应的子任务。比如,对于一个接口A,其内部可以调用第三方接口B,第三方接口B获取第三方***C的数据,在实现接口A对应的子任务之后,返回数据给接口A。
另外,所述第二种类型的接口可以包括接口前端、接口后端和接口内部,所述接口前端可以获取所述接口前端而来的数据,所述接口后端可以输出返回数据,供所述接口后端使用,所述接口内部可以调用第三方接口获取第三方***的数据,已实现该接口对应的子任务。
举个例子来说,接口A可以实现视频播放平台上的用户画像的统计功能,首先,接口A可以获取接口A前端而来的数据作为接口A的输入参数启动接口A的子任务,在接口A内部,可以调用第三方接口B,以获取视频播放平台中用户的评论数据,基于这些评论数据,统计用户画像,并将用户画像输出给接口A后端使用。
所述待调试程序的接口可以为第二种类型的请求,可以通过超文本传输协议(Hyper Text Transfer Protocol,HTTP)请求调用第三方接口,获取第三方接口对应的第三方***的数据,在待调试程序的接口未开始处理请求的情况下,也就是说,在待调试程序的接口还未进行HTTP请求的情况下,在所述待调试程序对应的线程中设置目标对象。
可以在待调试程序的目标接口还未进行HTTP请求的情况下,在所述待调试程序对应的线程中设置目标对象,所述目标接口可以是需要开始记录调试信息的接口,可以在所述目标接口还未进行HTTP请求的情况下,通过面向切面编程(Aspect OrientedProgramming,AOP)切点技术在所述待调试程序对应的线程中设置目标对象。
在一种优选的实施方式中,所述目标接口为所述待调试程序对应的线程中通过HTTP请求调用第三方接口的第一个接口,也就是说,在待调试程序的所有接口还未进行HTTP请求的情况下,也就是说,在所有接口处理HTTP请求前,也可以说,在第一个接口的接口前端的相应位置,通过AOP切点技术在所述待调试程序对应的线程中设置目标对象。这样,可以记录所述待调试程序对应的线程中第二种类型的所有接口的返回数据,并且,对原有代码入侵较少,可以仅在HTTP请求的底层代码中,植入判断及写入相关数据至目标对象的逻辑指令即可。
所述待调试程序可以仅对应一个线程,也可以对应多个线程,比如,所述待调试程序对应两个线程,分别为第一线程和第二线程,第一线程可以为所述待调试程序的父线程,相应的,第二线程可以为所述待调试程序的子线程,当然,第二线程可以为所述待调试程序的父线程,相应的,第一线程可以为所述待调试程序的子线程。至于具体哪个线程定义为父线程,哪个线程定义为子线程,这里不做具体限制。
在所述待调试程序对应的线程中设置目标对象,所述目标对象用于存储所述待调试程序对应的线程中的调试信息,也就是说,所述目标对象仅供所述待调试程序对应的线程可以使用,仅关联所述待调试程序对应的线程,换句话说,所述目标对象与其他的线程无关,这里其他的线程是与所述待调试程序对应的线程不同的任何线程。另外,所述目标对象可以由所述待调试程序的全线程共享,也就是说,对于所述待调试程序对应的线程中可记录的任何数据,都可以存储至所述目标对象中。这样,通过所述目标对象,可以提供一个线程独立的,且全线程共享的数据存储位置。
应当说明的是,由于目标对象为基于线程独立,因此,在所述待调试程序对应多个线程时,需要为所述待调试程序对应的每个线程都设置一个对应的目标对象。比如,所述待调试程序对应两个线程,分别为第一线程和第二线程,可以为第一线程设置第一目标对象,为第二线程设置第二目标对象,所述第一目标对象用于存储所述第一线程中的调试信息,所述第二目标对象用于存储所述第二线程中的调试信息。这样,通过第一目标对象和第二目标对象,可以实现对所述待调试程序对应的线程中的调试信息进行记录。
在一种优选的实施方式中,所述目标对象可以为线程本地变量的对象,所述线程本地变量的对象用于存储所述待调试程序对应的线程中的本地变量信息,所述本地变量信息包括所述调试信息。所述线程本地变量可以为ThreadLocal类,同时,ThreadLocal类使用哈希表HashMap作为存储介质,HashMap是一种以键值对方式存储数据的数据结构,可以存储所述待调试程序对应的线程中的调试信息。举个例子来说,所述目标对象可以为ThreadLocal<HashMap>对象,记为F。
另外,所述调试信息至少包括第二种类型的接口返回数据,当然,所述调试信息还可以包括所述待调试程序对应的线程中其他本地变量的数据,只需在本地变量对应的位置植入判断及写入相关数据至目标对象的逻辑指令即可。这样,可以自定义记录调用者感兴趣的信息,实现待调试程序的问题定位。
在步骤102中,所述待调试程序的接口返回数据可以包括所述接口内部调用第三方接口过程中第三方***返回的数据,还可以包括所述接口返回给接口后端使用的数据,为了快速查看待调试程序内部依赖接口的调用情况,所述待调试程序的接口返回数据至少包括所述接口内部调用第三方接口过程中第三方***返回的数据。
在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中,也就是说,在所述待调试程序的接口内部调用第三方接口过程中第三方***返回数据的情况下,将所述第三方***返回的数据存储至所述目标对象中,同时,还可以在所述待调试程序的接口返回数据给接口后端使用时,将返回数据存储至所述目标对象中。
具体实现过程中,可以在所述待调试程序对应的线程中整个接口处理过程中,执行数据存储的逻辑指令时,判断是否存在ThreadLocal<HashMap>对象F,若存在ThreadLocal<HashMap>对象F,表示可以记录并存储数据存储的逻辑指令中的这些数据,则将这些数据存入ThreadLocal<HashMap>对象F中,若不存在,则直接跳过数据存储的逻辑,不对数据存储的逻辑指令中的这些数据进行存储。
应当说明的是,需要在所述待调试程序的每个接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中,从而实现对所述待调试程序的所有接口返回数据进行存储。
在步骤103中,在所述待调试程序的所有接口都已经返回数据的情况下,将所述目标对象中存储的调试信息添加至返回结果中。
之后,将所述返回结果返回给调用者,供调用者查看所述调试信息,以查看接口内部调用依赖接口的情况,从而实现接口测试或问题定位。
需要说明的是,为实现将所述目标对象中存储的调试信息添加至返回结果中的功能,需要在相应位置如所述待调试程序的最后一个接口的接口后端植入添加调试信息的逻辑指令。
具体实现过程中,可以通过AOP切点技术,实现在所有接口返回数据时,执行数据存储的逻辑指令,判断是否存在ThreadLocal<HashMap>对象F,若存在ThreadLocal<HashMap>对象F,则将所述ThreadLocal<HashMap>对象F中存储的调试信息添加到返回结果中,同时,清空本次线程的ThreadLocal<HashMap>对象F,为启动下一次所述待调试程序对应的线程做准备。若不存在,则直接跳过添加调试信息的逻辑,不将调试信息添加至返回结果中。
本实施例提供的程序调试方法,通过在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;并在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;将所述目标对象中存储的调试信息添加到返回结果。这样,在结果进行返回时,可以将所述待调试程序的接口返回数据直接返回给调用者查看,使调用者可以快速查看待调试程序内部依赖接口的调用情况,帮助其更快定位问题,从而可以提高程序开发和测试效率。
并且,通过该方式查看待调试程序内部依赖接口的调用情况,对原有代码入侵较少,仅在需要记录数据的位置写入相应数据的逻辑即可,同时,可以及时返回当前接口内部依赖接口的调用情况,简便高效。
为了不影响所述待调试程序对应的线程的线上请求,也就是说,为了不影响所述待调试程序对应的线程的正常运行,需要在开启所述待调试程序对应的线程的调试信息存储机制的情况下,才进行对待调试程序的调试,从而对产品设备进行测试。这样,可以实现对处于上线出售阶段的产品设备进行产品维护。
进一步的,基于实施例一,参见图2,图中示出了本发明实施例中程序调试方法的流程示意图之二。如图2所示,该方法可以包括如下步骤:
步骤201,确定是否开启所述待调试程序对应的线程的调试信息存储机制;
步骤202,在确定开启所述待调试程序对应的线程的调试信息存储机制的情况下,在待调试程序的所有接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;其中,所述目标对象用于存储所述待调试程序对应的线程中的调试信息;
步骤203,在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;其中,所述调试信息包括所述待调试程序的接口返回数据;
步骤204,将所述目标对象中存储的调试信息添加到返回结果。
在步骤201中,所述待调试程序对应的线程的调试信息存储机制开启表示可以对所述待调试程序对应的线程中的调试信息进行存储,相应的,所述待调试程序对应的线程的调试信息存储机制未开启或者关闭表示不对所述待调试程序对应的线程中的调试信息进行存储。
可以通过确定所述待调试程序对应的线程的接口参数是否包括调试参数且所述调试参数是否为预设值,来确定是否开启所述待调试程序对应的线程的调试信息存储机制,若确定所述待调试程序对应的线程的接口参数包括调试参数且所述调试参数为预设值,则确定开启所述待调试程序对应的线程的调试信息存储机制,若确定所述待调试程序对应的线程的接口参数不包括调试参数或者所述调试参数不为预设值,则确定未开启所述待调试程序对应的线程的调试信息存储机制。这样,可以通过接口参数控制所述待调试程序对应的线程的调试信息存储机制的开启和关闭,可以在不影响线上请求的情况下实现对待调试程序的调试。
其中,所述接口参数可以是所述待调试程序对应的线程中接口的接口前端传输过来的参数,在获取到所述接口参数之后,进行调试参数的判定,从而实现对该接口内部的本地变量信息是否开启调试信息存储机制。在一种可选的实施方式中,为了实现对所述待调试程序对应的线程中所有本地变量信息的统一控制,所述接口参数可以是所述待调试程序对应的线程中输入接口的接口前端传输过来的参数,在获取到所述接口参数之后,进行调试参数的判定,确定是否开启所述待调试程序对应的线程的调试信息存储机制,从而可以通过一个接口参数控制所述待调试程序对应的线程中所有本地变量信息的存储。
所述预设值可以根据实际情况进行设置,比如,预设值设置为1时,当所述待调试程序对应的线程的接口参数包括的调试参数为1时,确定开启所述待调试程序对应的线程的调试信息存储机制,当所述待调试程序对应的线程的接口参数包括的调试参数不为1时,确定未开启所述待调试程序对应的线程的调试信息存储机制。
也可以通过确定所述待调试程序嵌入的设备是否为预设测试设备,来确定是否开启所述待调试程序对应的线程的调试信息存储机制,若确定所述待调试程序嵌入的设备为预设测试设备,则确定开启所述待调试程序对应的线程的调试信息存储机制,若确定所述待调试程序嵌入的设备不为预设测试设备,则确定未开启所述待调试程序对应的线程的调试信息存储机制。这样,可以保证仅内部测试人员和开发人员才可以开启调试信息存储机制,在不影响线上请求的情况下实现对待调试程序的调试。
其中,可以通过判断产品设备的身份识别码(Identification,ID)是否为预设测试设备的ID,来确定是否开启所述待调试程序对应的线程的调试信息存储机制。具体的,预设测试设备的ID可以预先存储在数据库中,可以将产品设备的ID与数据库中预先存储的预设测试设备的ID进行匹配,若匹配成功,则表示产品设备为预设测试设备,确定开启所述待调试程序对应的线程的调试信息存储机制,若匹配失败,则表示产品设备不为预设测试设备,不可以开启所述待调试程序对应的线程的调试信息存储机制。
当然,还可以通过确定所述待调试程序对应的线程的接口参数是否包括调试参数且所述调试参数是否为预设值;同时,还需确定所述待调试程序嵌入的设备是否为预设测试设备,来确定是否开启所述待调试程序对应的线程的调试信息存储机制,若确定所述待调试程序对应的线程的接口参数包括调试参数且所述调试参数为预设值,同时,确定所述待调试程序嵌入的设备为预设测试设备,则确定开启所述待调试程序对应的线程的调试信息存储机制,若确定所述待调试程序对应的线程的接口参数不包括调试参数或者所述调试参数不为预设值,同时,确定所述待调试程序嵌入的设备不为预设测试设备,则确定未开启所述待调试程序对应的线程的调试信息存储机制。这样,不仅可以通过接口参数控制所述待调试程序对应的线程的调试信息存储机制的开启和关闭,同时,还可以保证仅内部测试人员和开发人员才可以开启调试信息存储机制,在不影响线上请求的情况下实现对待调试程序的调试。
在步骤202中,在确定开启所述待调试程序对应的线程的调试信息存储机制的情况下,执行在待调试程序的所有接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象的步骤。其中,该步骤与实施例一的步骤101类似,其解释可以参照实施例一的步骤101,这里将不再赘述。
上述步骤203与实施例一的步骤102类似,上述步骤204与实施例一的步骤103类似,因此,其解释可以分别参照实施例一的步骤102和步骤103,这里将不再赘述。
本实施例通过确定是否开启所述待调试程序对应的线程的调试信息存储机制,在确定开启所述待调试程序对应的线程的调试信息存储机制的情况下,才通过在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;并在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;将所述目标对象中存储的调试信息添加到返回结果。这样,不仅可以通过接口参数控制所述待调试程序对应的线程的调试信息存储机制的开启和关闭,同时,还可以保证仅内部测试人员和开发人员才可以开启调试信息存储机制,在不影响线上请求的情况下实现对待调试程序的调试。
另外,在结果进行返回时,可以将所述待调试程序的接口返回数据直接返回给调用者查看,使调用者可以快速查看待调试程序内部依赖接口的调用情况,帮助其更快定位问题,从而可以提高程序开发和测试效率。并且,通过该方式查看待调试程序内部依赖接口的调用情况,对原有代码入侵较少,仅在需要记录数据的位置写入相应数据的逻辑即可,同时,可以及时返回当前接口内部依赖接口的调用情况,简便高效。
进一步的,所述待调试程序可能对应多个线程,比如,所述待调试程序对应的线程中第二种类型的接口可能异步调用多个第三方接口,举个例子来说,接口A异步调用第三方接口B和第三方接口D,此时,接口A调用第三方接口B去获取第三方***C的数据为一线程,接口A调用第三方接口D去获取第三方***E为另一线程。又比如,为了试错和纠错,接口A在调用第三方接口B的过程中,会启动另一线程去获取第三方***C的数据,从而在调用出现问题的情况下,还可以实现报错功能。
基于实施例一,所述待调试程序对应第一线程和第二线程,所述第一线程为所述待调试程序对应的父线程,所述第二线程为所述待调试程序对应的子线程,所述目标对象包括第一目标对象和第二目标对象,所述第一目标对象用于存储所述第一线程中的调试信息,所述第二目标对象用于存储所述第二线程中的调试信息。
其中,所述第二线程为所述待调试程序对应的子线程,也就是说,若所述待调试程序对应的子线程包括多个的情况下,所述待调试程序对应的第二线程也包括多个,比如,所述待调试程序包括接口A、接口B、接口D和接口F,接口A调用接口B对应的线程为父线程,接口B调用接口D对应的线程为子线程,接口B调用接口F对应的线程为子线程,此时,接口B调用接口D对应的线程为第二线程,接口B调用接口F对应的线程也为第二线程。
参见图3,图中示出了本发明实施例中程序调试方法的步骤102的细化流程示意图。如图3所示,步骤102具体可以包括如下步骤:
步骤1021,在所述待调试程序的接口返回数据的情况下,将所述第一线程中的调试信息存储至所述第一目标对象中;其中,所述第一线程中的调试信息包括所述第一线程中的接口返回数据;
步骤1022,在发生所述第一线程切换至所述第二线程的情况下,将所述第一目标对象的存储地址信息传递给所述第二线程;
步骤1023,将所述第二线程获得的存储地址信息存储至所述第二目标对象中;
步骤1024,将所述第二线程中的调试信息存储至所述第二目标对象存储的存储地址信息指示的地址中;其中,所述第二线程中的调试信息包括所述第二线程中的接口返回数据。
在步骤1021中,所述待调试程序对应的线程可以包括多个接口,有些接口属于第一线程的接口,有的接口属于第二线程的接口,比如,所述待调试程序对应的线程包括接口A、接口B、接口D和接口F,接口A和接口B为第一线程的接口,接口D和接口F为第二线程的接口。
在所述待调试程序对应的第一线程的接口返回数据的情况下,将所述第一线程中的调试信息存储至所述第一目标对象中。
在步骤1022中,在待调试程序对应的线程运行过程中,会发生线程的切换,将第一线程切换至第二线程,比如,在所述第一线程运行到与所述第二线程基于接***汇处,会发生线程的切换,将第一线程切换至第二线程。由于线程独立性,可能会导致第二线程中无法获取到第一线程中的第一目标对象,从而会出现无法记录第二线程中的接口返回数据的情况。在这种情况下,可以在发生所述第一线程切换至所述第二线程的情况下,将所述第一目标对象的存储地址信息传递给所述第二线程。
比如,所述待调试程序对应的第一线程为ThreadLocal<HashMap>对象F,所述待调试程序对应的第二线程为ThreadLocal<HashMap>对象F1,在发生所述第一线程切换至所述第二线程的情况下,将ThreadLocal<HashMap>对象F的存储地址信息可以通过接口参数传递给ThreadLocal<HashMap>对象F1。
另外,可以举个简单例子来说明发生所述第一线程切换至所述第二线程的情况,所述待调试程序对应的线程包括接口A、接口B、接口D和接口F,接口A调用接口B去获取***C的数据,接口B又调用接口D去获取***E的数据,同时,接口B也调用接口F去获取***G的数据。可知,在第一线程运行到与第二线程的接***汇处接口B调用接口D去获取***E的数据的过程中,即是将第一线程切换至第二线程的过程,同时,在第一线程运行到与第二线程的接***汇处接口B调用接口F去获取***G的数据的过程中,也是将第一线程切换至第二线程的过程。
在步骤1023中,可以将所述第二线程获得的存储地址信息存储至所述第二目标对象中,使第二线程可以将其调试信息存储至第二目标对象中存储的存储地址信息指示的地址中,这样,可以间接将第二线程中的调试信息存储至第一线程的第一目标对象中。
在步骤1024中,在所述待调试程序对应的第二线程的接口返回数据的情况下,将所述第二线程中的调试信息存储至所述第二目标对象存储的存储地址信息指示的地址中,也就是说,间接将所述第二线程中的调试信息存储至第一目标对象的存储地址信息指示的地址中。这样,可以实现对所述待调试程序对应的整个线程中任意内容的记录和存储。
本实施例中,在所述待调试程序对应多个线程时,通过为各个线程设置相应的目标对象,同时,在进行线程切换时,通过将第一目标对象的存储地址信息传递给第二线程对应的第二目标对象,从而可以实现对所述待调试程序对应的整个线程中任意内容的记录和存储。
另外,在结果进行返回时,可以将所述待调试程序的接口返回数据直接返回给调用者查看,使调用者可以快速查看待调试程序内部依赖接口的调用情况,帮助其更快定位问题,从而可以提高程序开发和测试效率。并且,通过该方式查看待调试程序内部依赖接口的调用情况,对原有代码入侵较少,仅在需要记录数据的位置写入相应数据的逻辑即可,同时,可以及时返回当前接口内部依赖接口的调用情况,简便高效。
下面举个例子对本发明实施例提供的程序调试方法进行详细说明。
应用场景:参见图4,图中示出了本发明实施例中程序调试方法的应用***示意图。
如图4所示,所述待调试程序对应一个接口线程,首先,确定是否开启调试信息存储机制,具体的,可以通过确定所述待调试程序对应的线程的接口参数是否包括调试参数且调试参数是否为预设值和/或通过确定所述待调试程序嵌入的设备是否为预设测试设备,来确定是否开启调试信息存储机制;
然后,在确定开启调试信息存储机制的情况下,设置线程本地变量的对象如ThreadLocal<HashMap>对象F,具体的,可以通过确定所述待调试程序对应的线程的接口参数包括调试参数且调试参数为预设值和/或通过确定所述待调试程序嵌入的设备为预设测试设备,来确定开启调试信息存储机制;
接着,在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至ThreadLocal<HashMap>对象F中;
接着,在所述待调试程序的所有接口返回数据的情况下,将ThreadLocal<HashMap>对象F中存储的调试信息添加到返回结果;
最后,将返回结果返回给调用者查看,以使调用者可以快速查看待调试程序内部依赖接口的调用情况,帮助其更快定位问题。
下面对本发明实施例提供的程序调试装置进行说明。
参见图5,图中示出了本发明实施例中程序调试装置的结构示意图之一。如图5所示,程序调试装置500包括:
设置模块501,用于在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;其中,所述目标对象用于存储所述待调试程序对应的线程中的调试信息;
存储模块502,用于在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;其中,所述调试信息包括所述待调试程序的接口返回数据;
添加模块503,用于将所述目标对象中存储的调试信息添加到返回结果。
可选的,参见图6,图中示出了本发明实施例中程序调试装置的结构示意图之二。如图6所示,所述程序调试装置500还包括:
确定模块504,用于确定是否开启所述待调试程序对应的线程的调试信息存储机制;
在确定开启所述待调试程序对应的线程的调试信息存储机制的情况下,触发所述设置模块501。
可选的,所述确定模块,具体用于:
确定所述待调试程序对应的线程的接口参数包括调试参数且所述调试参数为预设值;和/或,
确定所述待调试程序嵌入的设备为预设测试设备。
可选的,所述待调试程序对应第一线程和第二线程,所述第一线程为所述待调试程序对应的父线程,所述第二线程为所述待调试程序对应的子线程,所述目标对象包括第一目标对象和第二目标对象,所述第一目标对象用于存储所述第一线程中的调试信息,所述第二目标对象用于存储所述第二线程中的调试信息;
参见图7,图中示出了本发明实施例中程序调试装置的存储模块的细化结构示意图,如图7所示,所述存储模块502包括:
第一存储单元5021,用于在所述待调试程序的接口返回数据的情况下,将所述第一线程中的调试信息存储至所述第一目标对象中;其中,所述第一线程中的调试信息包括所述第一线程中的接口返回数据;
传递单元5022,用于在发生所述第一线程切换至所述第二线程的情况下,将所述第一目标对象的存储地址信息传递给所述第二线程;
第二存储单元5023,用于将所述第二线程获得的存储地址信息存储至所述第二目标对象中;
第三存储单元5024,用于将所述第二线程中的调试信息存储至所述第二目标对象存储的存储地址信息指示的地址中;其中,所述第二线程中的调试信息包括所述第二线程中的接口返回数据。
可选的,如图6所示,所述程序调试装置500还包括:
删除模块505,用于删除所述目标对象。
可选的,所述目标对象为线程本地变量的对象,所述线程本地变量的对象用于存储所述待调试程序对应的线程中的本地变量信息,所述本地变量信息包括所述调试信息。
本发明实施例提供的装置能够实现上述方法实施例中实现的各个过程,为避免重复,这里不再赘述。
本发明实施例提供的程序调试装置,通过在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;并在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;将所述目标对象中存储的调试信息添加到返回结果。这样,在结果进行返回时,可以将所述待调试程序的接口返回数据直接返回给调用者查看,使调用者可以快速查看待调试程序内部依赖接口的调用情况,帮助其更快定位问题,从而可以提高程序开发和测试效率。
下面对本发明实施例提供的电子设备进行说明。
本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现如下步骤:
在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;其中,所述目标对象用于存储所述待调试程序对应的线程中的调试信息;
在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;其中,所述调试信息包括所述待调试程序的接口返回数据;
将所述目标对象中存储的调试信息添加到返回结果。
可选的,处理器801,还用于:
确定是否开启所述待调试程序对应的线程的调试信息存储机制;
在确定开启所述待调试程序对应的线程的调试信息存储机制的情况下,执行所述在待调试程序的所有接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象的步骤。
可选的,处理器801,具体用于:
确定所述待调试程序对应的线程的接口参数包括调试参数且所述调试参数为预设值;和/或,
确定所述待调试程序嵌入的设备为预设测试设备。
可选的,所述待调试程序对应第一线程和第二线程,所述第一线程为所述待调试程序对应的父线程,所述第二线程为所述待调试程序对应的子线程,所述目标对象包括第一目标对象和第二目标对象,所述第一目标对象用于存储所述第一线程中的调试信息,所述第二目标对象用于存储所述第二线程中的调试信息;
处理器801,具体用于:
在所述待调试程序的接口返回数据的情况下,将所述第一线程中的调试信息存储至所述第一目标对象中;其中,所述第一线程中的调试信息包括所述第一线程中的接口返回数据;
在发生所述第一线程切换至所述第二线程的情况下,将所述第一目标对象的存储地址信息传递给所述第二线程;
将所述第二线程获得的存储地址信息存储至所述第二目标对象中;
将所述第二线程中的调试信息存储至所述第二目标对象存储的存储地址信息指示的地址中;其中,所述第二线程中的调试信息包括所述第二线程中的接口返回数据。
可选的,处理器801,还用于:
删除所述目标对象。
可选的,所述目标对象为线程本地变量的对象,所述线程本地变量的对象用于存储所述待调试程序对应的线程中的本地变量信息,所述本地变量信息包括所述调试信息。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的程序调试方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的程序调试方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种程序调试方法,其特征在于,所述方法包括:
在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;其中,所述目标对象用于存储所述待调试程序对应的线程中的调试信息;
在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;其中,所述调试信息包括所述待调试程序的接口返回数据;
将所述目标对象中存储的调试信息添加到返回结果。
2.根据权利要求1所述的方法,其特征在于,所述在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象之前,所述方法还包括:
确定是否开启所述待调试程序对应的线程的调试信息存储机制;
在确定开启所述待调试程序对应的线程的调试信息存储机制的情况下,执行所述在待调试程序的所有接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象的步骤。
3.根据权利要求2所述的方法,其特征在于,确定开启所述待调试程序对应的线程的调试信息存储机制包括:
确定所述待调试程序对应的线程的接口参数包括调试参数且所述调试参数为预设值;和/或,
确定所述待调试程序嵌入的设备为预设测试设备。
4.根据权利要求1所述的方法,其特征在于,所述待调试程序对应第一线程和第二线程,所述第一线程为所述待调试程序对应的父线程,所述第二线程为所述待调试程序对应的子线程,所述目标对象包括第一目标对象和第二目标对象,所述第一目标对象用于存储所述第一线程中的调试信息,所述第二目标对象用于存储所述第二线程中的调试信息;
所述在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中的步骤包括:
在所述待调试程序的接口返回数据的情况下,将所述第一线程中的调试信息存储至所述第一目标对象中;其中,所述第一线程中的调试信息包括所述第一线程中的接口返回数据;
在发生所述第一线程切换至所述第二线程的情况下,将所述第一目标对象的存储地址信息传递给所述第二线程;
将所述第二线程获得的存储地址信息存储至所述第二目标对象中;
将所述第二线程中的调试信息存储至所述第二目标对象存储的存储地址信息指示的地址中;其中,所述第二线程中的调试信息包括所述第二线程中的接口返回数据。
5.根据权利要求1所述的方法,其特征在于,所述在所述待调试程序的所有接口返回数据的情况下,将所述目标对象中存储的调试信息添加到返回结果中进行返回之后,所述方法还包括:
删除所述目标对象。
6.一种用户扩展装置,其特征在于,所述装置包括:
设置模块,用于在待调试程序的接口未开始处理请求的情况下,在所述待调试程序对应的线程中设置目标对象;其中,所述目标对象用于存储所述待调试程序对应的线程中的调试信息;
存储模块,用于在所述待调试程序的接口返回数据的情况下,将所述待调试程序对应的线程中的调试信息存储至所述目标对象中;其中,所述调试信息包括所述待调试程序的接口返回数据;
添加模块,用于将所述目标对象中存储的调试信息添加到返回结果。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
确定模块,用于确定是否开启所述待调试程序对应的线程的调试信息存储机制;
在确定开启所述待调试程序对应的线程的调试信息存储机制的情况下,触发所述设置模块。
8.根据权利要求6所述的装置,其特征在于,所述待调试程序对应第一线程和第二线程,所述第一线程为所述待调试程序对应的父线程,所述第二线程为所述待调试程序对应的子线程,所述目标对象包括第一目标对象和第二目标对象,所述第一目标对象用于存储所述第一线程中的调试信息,所述第二目标对象用于存储所述第二线程中的调试信息;
所述存储模块包括:
第一存储单元,用于在所述待调试程序的接口返回数据的情况下,将所述第一线程中的调试信息存储至所述第一目标对象中;其中,所述第一线程中的调试信息包括所述第一线程中的接口返回数据;
传递单元,用于在发生所述第一线程切换至所述第二线程的情况下,将所述第一目标对象的存储地址信息传递给所述第二线程;
第二存储单元,用于将所述第二线程获得的存储地址信息存储至所述第二目标对象中;
第三存储单元,用于将所述第二线程中的调试信息存储至所述第二目标对象存储的存储地址信息指示的地址中;其中,所述第二线程中的调试信息包括所述第二线程中的接口返回数据。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201911076438.7A 2019-11-06 2019-11-06 程序调试方法、装置、电子设备及计算机可读存储介质 Active CN110879781B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911076438.7A CN110879781B (zh) 2019-11-06 2019-11-06 程序调试方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911076438.7A CN110879781B (zh) 2019-11-06 2019-11-06 程序调试方法、装置、电子设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN110879781A true CN110879781A (zh) 2020-03-13
CN110879781B CN110879781B (zh) 2023-10-03

Family

ID=69729249

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911076438.7A Active CN110879781B (zh) 2019-11-06 2019-11-06 程序调试方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110879781B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782530A (zh) * 2020-06-30 2020-10-16 北京奇艺世纪科技有限公司 一种远程调试方法、装置、***、电子设备及存储介质
CN111966577A (zh) * 2020-07-06 2020-11-20 北京奇艺世纪科技有限公司 一种程序稳定性检测方法及装置
CN113760627A (zh) * 2021-07-27 2021-12-07 飞腾信息技术有限公司 一种采用应答机制的总线中接口调试控制方法及装置
CN114553753A (zh) * 2022-01-07 2022-05-27 中信科移动通信技术股份有限公司 调测带串行通信接口的通信模块的方法、装置及***
WO2022194090A1 (zh) * 2021-03-19 2022-09-22 华为技术有限公司 一种多语言混合调试方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307663A1 (en) * 2008-06-10 2009-12-10 Microsoft Corporation Debugging support for tasks in multithreaded environments
CN108563539A (zh) * 2018-03-21 2018-09-21 广州视源电子科技股份有限公司 接口测试方法、服务器、可读存储介质及***
CN108762955A (zh) * 2018-05-30 2018-11-06 平安普惠企业管理有限公司 接口调用方法、装置、计算机设备及存储介质
CN109614310A (zh) * 2018-10-22 2019-04-12 中国平安财产保险股份有限公司 测试接口的管理方法、装置、计算机设备以及存储介质
CN109857667A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 接口自动化测试方法、测试装置、测试设备及存储介质
CN110058996A (zh) * 2019-03-12 2019-07-26 天津五八到家科技有限公司 程序调试方法、装置、设备和存储介质
CN110297761A (zh) * 2019-05-23 2019-10-01 深圳壹账通智能科技有限公司 返回数据的获取方法、装置、计算机设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307663A1 (en) * 2008-06-10 2009-12-10 Microsoft Corporation Debugging support for tasks in multithreaded environments
CN108563539A (zh) * 2018-03-21 2018-09-21 广州视源电子科技股份有限公司 接口测试方法、服务器、可读存储介质及***
CN108762955A (zh) * 2018-05-30 2018-11-06 平安普惠企业管理有限公司 接口调用方法、装置、计算机设备及存储介质
CN109614310A (zh) * 2018-10-22 2019-04-12 中国平安财产保险股份有限公司 测试接口的管理方法、装置、计算机设备以及存储介质
CN109857667A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 接口自动化测试方法、测试装置、测试设备及存储介质
CN110058996A (zh) * 2019-03-12 2019-07-26 天津五八到家科技有限公司 程序调试方法、装置、设备和存储介质
CN110297761A (zh) * 2019-05-23 2019-10-01 深圳壹账通智能科技有限公司 返回数据的获取方法、装置、计算机设备及存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782530A (zh) * 2020-06-30 2020-10-16 北京奇艺世纪科技有限公司 一种远程调试方法、装置、***、电子设备及存储介质
CN111782530B (zh) * 2020-06-30 2023-10-10 北京奇艺世纪科技有限公司 一种远程调试方法、装置、***、电子设备及存储介质
CN111966577A (zh) * 2020-07-06 2020-11-20 北京奇艺世纪科技有限公司 一种程序稳定性检测方法及装置
CN111966577B (zh) * 2020-07-06 2023-09-08 北京奇艺世纪科技有限公司 一种程序稳定性检测方法及装置
WO2022194090A1 (zh) * 2021-03-19 2022-09-22 华为技术有限公司 一种多语言混合调试方法及装置
CN113760627A (zh) * 2021-07-27 2021-12-07 飞腾信息技术有限公司 一种采用应答机制的总线中接口调试控制方法及装置
CN113760627B (zh) * 2021-07-27 2023-03-21 飞腾信息技术有限公司 一种采用应答机制的总线中接口调试控制方法及装置
CN114553753A (zh) * 2022-01-07 2022-05-27 中信科移动通信技术股份有限公司 调测带串行通信接口的通信模块的方法、装置及***
CN114553753B (zh) * 2022-01-07 2024-03-15 中信科移动通信技术股份有限公司 调测带串行通信接口的通信模块的方法、装置及***

Also Published As

Publication number Publication date
CN110879781B (zh) 2023-10-03

Similar Documents

Publication Publication Date Title
CN109062809B (zh) 一种线上测试用例生成方法、装置及电子设备
CN110879781A (zh) 程序调试方法、装置、电子设备及计算机可读存储介质
CN108459962B (zh) 代码规范性检测方法、装置、终端设备及存储介质
CN110704297B (zh) 代码评审方法、装置、计算机设备及存储介质
US20130111267A1 (en) Optimizing regression testing based on code coverage analysis
CN112199300B (zh) 一种接口测试方法、装置、电子设备及存储介质
US8752027B2 (en) Injecting faults into program for testing software
CN110928777B (zh) 测试用例的处理方法、装置、设备及存储介质
US20190079854A1 (en) Systems and methods for executing tests
CN109324968B (zh) 一种***测试方法及装置
CN111522749B (zh) 页面测试方法、装置、可读存储介质及电子设备
US11055416B2 (en) Detecting vulnerabilities in applications during execution
Adamsen et al. Practical initialization race detection for JavaScript web applications
CN111382077B (zh) 应用程序崩溃原因定位方法、装置、电子设备及存储介质
Han et al. Reproducing performance bug reports in server applications: The researchers’ experiences
CN111104319A (zh) 一种代码覆盖率测试方法、装置、电子设备及存储介质
CN110442370B (zh) 一种测试用例查询方法及装置
CN109165127B (zh) 问题接口的定位方法、装置及电子设备
CN113220586A (zh) 一种自动化的接口压力测试执行方法、装置和***
US20160275002A1 (en) Image capture in application lifecycle management for documentation and support
CN112052054A (zh) 函数调用方法、装置、电子设备及存储介质
US20220197945A1 (en) Computer-implemented method for analyzing a transaction log
CN111381836A (zh) 应用程序部署环境的切换方法及装置
CN112783759B (zh) 白盒测试任务执行方法、装置、存储介质和计算机设备
Kulesovs Automated Testing of iOS Apps: tTap Extension for Apple UIAutomation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant