CN114691483A - 一种软件调试方法、电子设备及调试*** - Google Patents

一种软件调试方法、电子设备及调试*** Download PDF

Info

Publication number
CN114691483A
CN114691483A CN202011631714.4A CN202011631714A CN114691483A CN 114691483 A CN114691483 A CN 114691483A CN 202011631714 A CN202011631714 A CN 202011631714A CN 114691483 A CN114691483 A CN 114691483A
Authority
CN
China
Prior art keywords
debugging
command
debug
data
identifier
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.)
Pending
Application number
CN202011631714.4A
Other languages
English (en)
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.)
Huawei Device Co Ltd
Original Assignee
Huawei Device 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 Huawei Device Co Ltd filed Critical Huawei Device Co Ltd
Priority to CN202011631714.4A priority Critical patent/CN114691483A/zh
Priority to PCT/CN2021/137196 priority patent/WO2022143108A1/zh
Publication of CN114691483A publication Critical patent/CN114691483A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by 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

一种软件调试方法、电子设备及调试***
技术领域
本申请实施例涉及软件开发技术领域,尤其涉及一种软件调试方法、电子设备及调试***。
背景技术
随着通信技术的发展以及电子设备的多样化发展,越来越多形态的电子设备(如智能手机、电视机、无线耳机、智音箱、智能家居设备等)可以基于通信技术,为用户提供智能化的生活或工作体验。例如,用户可以基于多设备构成的如图1所示的分布式设备集群架构,进行设备之间的协同工作,例如通过智能手机控制智能家居设备等。
通常,电子设备功能的实现需要基于软件开发人员开发的用于实现相关功能的软件***。而软件***的开发需要经过软件开发人员的不断调试,才能实现稳定的功能性能。在多个设备之间协同工作的场景中,往往还需要进行对多个设备的协同调试。
但是,常规的软件***调试技术中,仅能支持一个调试器针对单设备应用进程的监控和调试。
发明内容
本申请实施例提供一种软件调试方法、电子设备及调试***,能够实现对设备的协同调试。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种软件调试方法,该方法包括:第一设备从第二设备接收对应于第三设备中的第一进程的第一调试命令,该第一调试命令中携带有第三设备的标识和第一进程的标识;第一设备向第三设备发送第一调试命令;第一设备从第三设备接收第一调试数据,第一调试数据是第三设备对第一进程执行第一调试命令后获取的调试数据,第一调试数据中携带有第三设备的标识和第一进程的标识;第一设备将第一调试数据给第二设备。
上述第一方面提供的技术方案,由多个调试设备(如第一设备和第二设备)组成的调试集群中的客户端设备(如第二设备)可以通过与分布式设备集群中的主设备(如第三设备)连接的服务器设备(如第一设备)将用户触发的调试命令转发至被调试设备,以实现调试***中,多个调试设备对被调试进程的协同调试。
在一种可能的实现方式中,上述方法还包括:响应于用户触发的调试事件,第一设备获取对应于第四设备中的第二进程的第二调试命令,第二调试命令中携带有第四设备的标识和第二进程的标识;第一设备向第三设备发送第二调试命令;第一设备从第三设备接收第二调试数据,第二调试数据是第四设备对第二进程执行第二调试命令后获取的调试数据;第二调试数据是第四设备对第二进程执行第二调试命令后向第三设备发送的,第二调试数据中携带有第四设备的标识和第二进程的标识。在本申请一些实施例中,调试集群中的服务器设备(如第一设备)和客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第二进程)进行协同调试。
在一种可能的实现方式中,上述方法还包括:第一设备从第二设备接收第三调试命令,第三调试命令对应于第四设备中的第三进程,第三调试命令中携带有第四设备的标识和第三进程的标识;第一设备向第三设备发送第三调试命令;第一设备从第三设备接收第三调试数据,第三调试数据是第四设备对第三进程执行第三调试命令后获取的调试数据,第三调试数据是第四设备对第三进程执行第三调试命令后向第三设备发送的,第三调试数据中携带有第四设备的标识和第三进程的标识;第一设备将第三调试数据发送给第二设备。在本申请一些实施例中,调试集群中的客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第三进程)进行协同调试。
在一种可能的实现方式中,上述方法还包括:第一设备接收来自第二设备的查看请求;响应于该查看请求,第一设备向第二设备发送第二调试数据。在本申请一些实施例中,服务器设备(如第一设备)还可以接收客户端设备(如第二设备)的查看请求,将第二调试命令对应的第二调试数据发送给客户端设备(如第二设备),以便于客户端设备(如第二设备)在UI界面上显示。
在一种可能的实现方式中,在第一设备从第三设备接收第二调试数据之后,上述方法还包括:第一设备通过用户界面(user interface,UI)显示第二调试数据。在本申请一些实施例中,服务器设备(如第一设备)可以直接将第二调试命令对应的第二调试数据显示在服务器设备(如第一设备)的UI界面上。
在一种可能的实现方式中,上述方法还包括:第一设备通过UI界面显示第一调试数据。在本申请一些实施例中,服务器设备(如第一设备)还可以将第一调试命令对应的第一调试数据显示在服务器设备(如第一设备)的UI界面上。
在一种可能的实现方式中,第一设备与第二设备通信连接;第一设备与第三设备通信连接,第三设备与第四设备通信连接。本申请提供的多个调试设备对分布式设备集群中一个被调试设备的协同调试,一个调试设备对多个被调试设备的跨设备协同调试,多个调试设备对多个被调试设备的跨设备协同调试等可以基于建立的包括有调试服务器和调试客户端的调试集群实现。
在一种可能的实现方式中,上述第一设备将第一调试数据发送给第二设备,包括:第一设备根据第一调试数据中携带的第三设备的标识和第一进程的标识,将第一调试数据发送给第二设备。本申请提供的方案中,服务器设备(如第一设备)可以进行调试命令的统一管理和分发。
在一种可能的实现方式中,在上述第一设备从第二设备接收第一调试命令之前,上述方法还包括:第一设备向第三设备发送发现可调试进程的命令,用于发现可调试进程;第一设备从第三设备接收可调试进程信息,可调试进程信息中包括第三设备和第四设备发现的可调试进程的信息。本申请提供的方案中,第一设备可以用于进行分布式设备集群中所有可调试进程的统一上报,以便于用户确定被调试设备和被调试进程。
在一种可能的实现方式中,上述可调试进程包括第一进程的信息、第二进程的信息和第三进程的信息。
在一种可能的实现方式中,上述第一调试命令包括断点命令和/或时光调试命令。上述第二调试命令包括断点命令和/或时光调试命令。示例性的,本申请提供的方案中,调试设备可以通过断点命令和/或时光调试命令实现对一个或多个被调试进程的协同调试。
在一种可能的实现方式中,上述断点命令包括以下中的一种或多种:数据断点命令、同步断点命令或条件断点命令。示例性的,本申请提供的方案中,调试设备可以通过数据断点命令、同步断点命令或条件断点命令等断点命令实现对一个或多个被调试进程的协同调试。
第二方面,提供一种软件调试方法,该方法包括:第三设备从第一设备接收对应于第三设备中的第一进程的第一调试命令,该第一调试命令中携带有第三设备的标识和第一进程的标识;第三设备根据第一调试命令中携带的第三设备的标识和第一进程的标识,对第一进程执行第一调试命令,获取第一调试数据,第一调试数据中携带有第三设备的标识和第一进程的标识;第三设备向第一设备发送第一调试数据。
上述第二方面提供的技术方案,由多个调试设备(如第一设备和第二设备)组成的调试集群中的客户端设备(如第二设备)可以通过与分布式设备集群中的主设备(如第三设备)连接的服务器设备(如第一设备)将用户触发的调试命令转发至被调试设备,以便被调试设备(如第三设备)根据调试命令对被调试进程(如第一进程)执行调试操作,并返回调试数据(如第一调试数据),通过这样的方式,现调试***中,多个调试设备对被调试进程的协同调试。
在一种可能的实现方式中,上述方法还包括:第三设备从第一设备接收对应于对第四设备中的第二进程的第二调试命令,第二进程与第一进程相关联,第二调试命令中携带有第四设备的标识和第二进程的标识;第三设备根据第二调试命令中携带的第四设备的标识,将第二调试命令发送至第四设备;第三设备从第四设备接收第二调试数据,第二调试数据是第四设备对第二进程执行第二调试命令后获取的调试数据,第二调试数据中携带有第四设备的标识和第二进程的标识;第三设备向第一设备发送第二调试数据。在本申请一些实施例中,调试集群中的服务器设备(如第一设备)和客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第二进程)进行协同调试。
在一种可能的实现方式中,上述方法还包括:第三设备从第一设备接收第三调试命令,第三调试命令对应于第四设备中的第三进程,第三调试命令中携带有第四设备的标识和第三进程的标识;第三设备根据第三调试命令中携带的第四设备的标识,将第三调试命令发送至第四设备;第三设备从第四设备接收第三调试数据,第三调试数据是第四设备对第三进程执行第三调试命令后获取的调试数据,第三调试数据中携带有第四设备的标识和第三进程的标识;第三设备向第一设备发送第三调试数据。在本申请一些实施例中,调试集群中的客户端设备(如第二设备)可以对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第三进程)进行协同调试。
在一种可能的实现方式中,在上述第三设备从第一设备接收第一调试命令之前,上述方法还包括:第三设备进行设备发现,以及在发现第四设备之后,与第四设备建立通信连接;第三设备与第一设备通信连接。本申请提供的多个调试设备对分布式设备集群中一个被调试设备的协同调试,一个调试设备对多个被调试设备的跨设备协同调试,多个调试设备对多个被调试设备的跨设备协同调试等可以基于建立的包括有主设备(如第三设备)和从设备(如第四设备)的分布式设备集群实现。
在一种可能的实现方式中,建立分布式设备集群之后,上述方法还包括:第三设备从第一设备接收发现可调试进程的命令;第三设备向第四设备发送发现可调试进程的命令;第三设备发现第一可调试进程,第一可调试进程包括第一进程;第三设备从第四设备的接收第四设备发现的第二可调试进程的信息,该第二可调试进程包括第二进程和第三进程;第三设备向第一设备发送可调试进程的信息;该可调试进程的信息包括第一可调试进程的信息和第二可调试进程的信息。本申请提供的方案中,第一设备可以用于进行分布式设备集群中所有可调试进程的统一上报,以便于用户确定被调试设备和被调试进程。
在一种可能的实现方式中,上述第一调试命令包括断点命令和/或时光调试命令。示例性的,本申请提供的方案中,调试设备可以通过断点命令和/或时光调试命令实现对一个或多个被调试进程的协同调试。
在一种可能的实现方式中,上述断点命令包括以下中的一种或多种:数据断点命令、同步断点命令或条件断点命令。
第三方面,提供一种软件调试方法,该方法包括:第一设备从第二设备接收对应于第三设备中的第一进程的第一调试命令,该第一调试命令中携带有第三设备的标识和第一进程的标识;第一设备向第三设备发送第一调试命令;第三设备根据第一调试命令中携带的第三设备的标识和第一进程的标识,对第一进程执行第一调试命令,获取第一调试数据,第一调试数据中携带有第三设备的标识和第一进程的标识;第三设备向第一设备发送第一调试数据;第一设备将第一调试数据给第二设备;第二设备通过UI界面显示第一调试数据。
上述第三方面提供的技术方案,由多个调试设备(如第一设备和第二设备)组成的调试集群中的客户端设备(如第二设备)可以通过与分布式设备集群中的主设备(如第三设备)连接的服务器设备(如第一设备)将用户触发的调试命令转发至被调试设备,以实现调试***中,多个调试设备对被调试进程的协同调试。
在一种可能的实现方式中,上述方法还包括:响应于用户触发的调试事件,第一设备获取对应于第四设备中的第二进程的第二调试命令,第二调试命令中携带有第四设备的标识和第二进程的标识;第一设备向第三设备发送第二调试命令;第三设备根据第二调试命令中携带的第四设备的标识,将第二调试命令发送至第四设备;第四设备根据第二调试命令中携带的第二进程的标识,对第二进程执行调试操作,获取第二调试数据,第二调试数据中携带有第四设备的标识和第二进程的标识;第四设备向第三设备发送第二调试数据;第三设备向第一设备发送第二调试数据;第一设备通过UI界面显示第二调试数据。在本申请一些实施例中,调试集群中的服务器设备(如第一设备)和客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第二进程)进行协同调试。
在一种可能的实现方式中,上述方法还包括:第一设备从第二设备接收第三调试命令,第三调试命令对应于第四设备中的第三进程,第三调试命令中携带有第四设备的标识和第三进程的标识;第一设备向第三设备发送第三调试命令;第三设备根据第三调试命令中携带的第四设备的标识,将第三调试命令发送至第四设备;第四设备根据第三调试命令中携带的第三进程的标识,对第三进程执行调试操作,获取第三调试数据,第三调试数据中携带有第四设备的标识和第三进程的标识;第四设备向第三设备发送第三调试数据;第一设备将第三调试数据发送给第二设备;第二设备通过UI界面显示第三调试数据。在本申请一些实施例中,调试集群中的客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第三进程)进行协同调试。
第四方面,提供一种第一设备,该第一设备包括:第二调试模块,用于从第二设备接收对应于第三设备中的第一进程的第一调试命令,向第三设备发送第一调试命令;从第三设备接收第一调试数据;以及,将第一调试数据发送给第二设备;其中,第一调试命令中携带有第三设备的标识和第一进程的标识;第一调试数据是第三设备对第一进程执行第一调试命令后获取的调试数据,第一调试数据中携带有第三设备的标识和第一进程的标识。
上述第四方面提供的技术方案,由多个调试设备(如第一设备和第二设备)组成的调试集群中的客户端设备(如第二设备)可以通过与分布式设备集群中的主设备(如第三设备)连接的服务器设备(如第一设备)将用户触发的调试命令转发至被调试设备,以实现调试***中,多个调试设备对被调试进程的协同调试。
在一种可能的实现方式中,上述第一设备还包括:框架层,用于响应于用户触发的调试事件,获取第二调试命令;以及向第二调试模块发送针对第四设备中的第二进程的第二调试命令;第二进程与第一进程相关联,第二调试命令中携带有第四设备的标识和第二进程的标识;第二调试模块还用于,向第三设备发送第二调试命令;以及,从第三设备接收第二调试数据,第二调试数据是第四设备对所述第二进程执行第二调试命令后获取的调试数据;第二调试数据是第四设备对第二进程执行第二调试命令后向第三设备发送的,第二调试数据中携带有第四设备的标识和第二进程的标识。在本申请一些实施例中,调试集群中的服务器设备(如第一设备)和客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第二进程)进行协同调试。
在一种可能的实现方式中,上述第二调试模块还用于,从第二设备接收第三调试命令,向第三设备发送第三调试命令;从第三设备接收第三调试数据,以及将第三调试数据发送给第二设备;其中,第三调试命令对应于第四设备中的第三进程,第三调试命令中携带有第四设备的标识和第三进程的标识;第三调试数据是第四设备对第三进程执行第三调试命令后获取的调试数据,第三调试数据是第四设备对第三进程执行第三调试命令后向第三设备发送的,第三调试数据中携带有第四设备的标识和第三进程的标识。在本申请一些实施例中,调试集群中的客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第三进程)进行协同调试。
在一种可能的实现方式中,上述第二调试模块还用于,接收来自第二设备的查看请求;响应于该查看请求,向第二设备发送第二调试数据。在本申请一些实施例中,服务器设备(如第一设备)还可以接收客户端设备(如第二设备)的查看请求,将第二调试命令对应的第二调试数据发送给客户端设备(如第二设备),以便于客户端设备(如第二设备)在UI界面上显示。
在一种可能的实现方式中,上述第二调试模块还用于,向框架层发送第二调试数据,以便于框架层通过UI界面显示第二调试数据。在本申请一些实施例中,服务器设备(如第一设备)可以直接将第二调试命令对应的第二调试数据显示在服务器设备(如第一设备)的UI界面上。
在一种可能的实现方式中,上述第二调试模块还用于,向框架层发送第一调试数据,以便于框架层通过UI界面显示第一调试数据。在本申请一些实施例中,服务器设备(如第一设备)还可以将第一调试命令对应的第一调试数据显示在服务器设备(如第一设备)的UI界面上。
在一种可能的实现方式中,上述第二调试模块还用于,与第二设备建立通信连接,第一设备与第三设备通信连接。本申请提供的多个调试设备对分布式设备集群中一个被调试设备的协同调试,一个调试设备对多个被调试设备的跨设备协同调试,多个调试设备对多个被调试设备的跨设备协同调试等可以基于建立的包括有调试服务器和调试客户端的调试集群实现。
在一种可能的实现方式中,上述第二调试模块具体用于,根据第一调试数据中携带的第三设备的标识和第一进程的标识,将第一调试数据发送给第二设备。本申请提供的方案中,服务器设备(如第一设备)可以进行调试命令的统一管理和分发。
在一种可能的实现方式中,上述第二调试模块还用于,向第三设备发送发现可调试进程的命令,用于发现可调试进程;以及,从第三设备接收可调试进程信息,可调试进程信息中包括第三设备和第四设备发现的可调试进程的信息。本申请提供的方案中,第一设备可以用于进行分布式设备集群中所有可调试进程的统一上报,以便于用户确定被调试设备和被调试进程。
第五方面,提供一种第三设备,该第三设备包括:分布式调试助手,用于从第一设备接收第一调试命令;根据第一调试命令中携带的第三设备的标识和第一进程的标识,调用第三设备中的调试工具,对第一进程执行第一调试命令,获取第一调试数据;以及,向第一设备发送第一调试数据;其中,第一调试命令对应于第三设备中的第一进程,第一调试命令中携带有第三设备的标识和第一进程的标识;第一调试数据中携带有第三设备的标识和第一进程的标识。
上述第五方面提供的技术方案,由多个调试设备(如第一设备和第二设备)组成的调试集群中的客户端设备(如第二设备)可以通过与分布式设备集群中的主设备(如第三设备)连接的服务器设备(如第一设备)将用户触发的调试命令转发至被调试设备,以便被调试设备(如第三设备)根据调试命令对被调试进程(如第一进程)执行调试操作,并返回调试数据(如第一调试数据),通过这样的方式,现调试***中,多个调试设备对被调试进程的协同调试。
在一种可能的实现方式中,上述分布式调试助手还用于,从第一设备接收第二调试命令;根据第二调试命令中携带的第四设备的标识,将第二调试命令发送至第四设备;从第四设备接收第二调试数据;以及向第一设备发送第二调试数据;其中,第二调试命令对应于第四设备中的第二进程,第二进程与第一进程相关联,第二调试命令中携带有第四设备的标识和第二进程的标识;第二调试数据中携带有第四设备的标识和第二进程的标识。在本申请一些实施例中,调试集群中的服务器设备(如第一设备)和客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第二进程)进行协同调试。
在一种可能的实现方式中,上述分布式调试助手还用于,从第一设备接收第三调试命令,根据第三调试命令中携带的第四设备的标识,将第三调试命令发送至第四设备;从第四设备接收第三调试数据,以及,向第一设备发送第三调试数据;其中,第三调试命令对应于第四设备中的第三进程,第三调试命令中携带有第四设备的标识和第三进程的标识;第三调试数据是第四设备对第三进程执行第三调试命令后获取的调试数据,第三调试数据中携带有第四设备的标识和第三进程的标识。在本申请一些实施例中,调试集群中的客户端设备(如第二设备)可以对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第三进程)进行协同调试。
在一种可能的实现方式中,上述分布式调试助手还用于,进行设备发现,以及在发现第四设备之后,与第四设备建立通信连接;第三设备与第一设备通信连接。本申请提供的多个调试设备对分布式设备集群中一个被调试设备的协同调试,一个调试设备对多个被调试设备的跨设备协同调试,多个调试设备对多个被调试设备的跨设备协同调试等可以基于建立的包括有主设备(如第三设备)和从设备(如第四设备)的分布式设备集群实现。
在一种可能的实现方式中,上述分布式调试助手还用于,从第一设备接收发现可调试进程的命令;向第四设备发送发现可调试进程的命令;发现第一可调试进程;从第四设备的接收第四设备发现的第二可调试进程的信息;以及向第一设备发送可调试进程的信息;其中,第一可调试进程包括第一进程;第二可调试进程包括第二进程和第三进程;可调试进程的信息包括第一可调试进程的信息和第二可调试进程的信息。本申请提供的方案中,第一设备可以用于进行分布式设备集群中所有可调试进程的统一上报,以便于用户确定被调试设备和被调试进程。
第六方面,提供一种第一设备,该第一设备包括:存储器,用于存储计算机程序;收发器,用于进行无线电信号的发送和接收;处理器,用于执行所述计算机程序,使得第一设备通过收发器从第二设备接收对应于第三设备中的第一进程的第一调试命令,向第三设备发送第一调试命令;从第三设备接收第一调试数据;以及,将第一调试数据发送给第二设备;其中,第一调试命令中携带有第三设备的标识和第一进程的标识;第一调试数据是第三设备对第一进程执行第一调试命令后获取的调试数据,第一调试数据中携带有第三设备的标识和第一进程的标识。
上述第六方面提供的技术方案,由多个调试设备(如第一设备和第二设备)组成的调试集群中的客户端设备(如第二设备)可以通过与分布式设备集群中的主设备(如第三设备)连接的服务器设备(如第一设备)将用户触发的调试命令转发至被调试设备,以实现调试***中,多个调试设备对被调试进程的协同调试。
在一种可能的实现方式中,上述处理器还用于,执行所述计算机程序,使得第一设备响应于用户触发的调试事件,获取第二调试命令;以及通过收发器向第二调试模块发送针对第四设备中的第二进程的第二调试命令;向第三设备发送第二调试命令;以及,从第三设备接收第二调试数据,第二调试数据是第四设备对所述第二进程执行第二调试命令后获取的调试数据;第二调试数据是第四设备对第二进程执行第二调试命令后向第三设备发送的,第二调试数据中携带有第四设备的标识和第二进程的标识,第二进程与第一进程相关联,第二调试命令中携带有第四设备的标识和第二进程的标识。在本申请一些实施例中,调试集群中的服务器设备(如第一设备)和客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第二进程)进行协同调试。
在一种可能的实现方式中,上述收发器还用于,从第二设备接收第三调试命令,向第三设备发送第三调试命令;从第三设备接收第三调试数据,以及将第三调试数据发送给第二设备;其中,第三调试命令对应于第四设备中的第三进程,第三调试命令中携带有第四设备的标识和第三进程的标识;第三调试数据是第四设备对第三进程执行第三调试命令后获取的调试数据,第三调试数据是第四设备对第三进程执行第三调试命令后向第三设备发送的,第三调试数据中携带有第四设备的标识和第三进程的标识。在本申请一些实施例中,调试集群中的客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第三进程)进行协同调试。
在一种可能的实现方式中,上述收发器还用于,接收来自第二设备的查看请求;响应于该查看请求,向第二设备发送第二调试数据。在本申请一些实施例中,服务器设备(如第一设备)还可以接收客户端设备(如第二设备)的查看请求,将第二调试命令对应的第二调试数据发送给客户端设备(如第二设备),以便于客户端设备(如第二设备)在UI界面上显示。
在一种可能的实现方式中,上述收发器还用于,向框架层发送第二调试数据,以便于框架层通过UI界面显示第二调试数据。在本申请一些实施例中,服务器设备(如第一设备)可以直接将第二调试命令对应的第二调试数据显示在服务器设备(如第一设备)的UI界面上。
在一种可能的实现方式中,上述处理器还用于,向框架层发送第一调试数据,以便于框架层通过UI界面显示第一调试数据。在本申请一些实施例中,服务器设备(如第一设备)还可以将第一调试命令对应的第一调试数据显示在服务器设备(如第一设备)的UI界面上。
在一种可能的实现方式中,上述处理器还用于,通过与第二设备建立通信连接;第一设备与第三设备通信连接。本申请提供的多个调试设备对分布式设备集群中一个被调试设备的协同调试,一个调试设备对多个被调试设备的跨设备协同调试,多个调试设备对多个被调试设备的跨设备协同调试等可以基于建立的包括有调试服务器和调试客户端的调试集群实现。
在一种可能的实现方式中,上述处理器用于,根据第一调试数据中携带的第三设备的标识和第一进程的标识,通过收发器将第一调试数据发送给第二设备。本申请提供的方案中,服务器设备(如第一设备)可以进行调试命令的统一管理和分发。
在一种可能的实现方式中,上述收发器还用于,向第三设备发送发现可调试进程的命令,用于发现可调试进程;以及,从第三设备接收可调试进程信息,可调试进程信息中包括第三设备和第四设备发现的可调试进程的信息。本申请提供的方案中,第一设备可以用于进行分布式设备集群中所有可调试进程的统一上报,以便于用户确定被调试设备和被调试进程。
第七方面,提供一种第三设备,该第三设备包括:存储器,用于存储计算机程序;收发器,用于进行无线电信号的发送和接收;处理器,用于执行所述计算机程序,使得第三设备执行通过收发器从第一设备接收第一调试命令;根据第一调试命令中携带的第三设备的标识和第一进程的标识,调用第三设备中的调试工具,对第一进程执行第一调试命令,获取第一调试数据;以及,通过收发器向第一设备发送第一调试数据;其中,第一调试命令对应于对第三设备中的第一进程,第一调试命令中携带有第三设备的标识和第一进程的标识;第一调试数据中携带有第三设备的标识和第一进程的标识。
上述第七方面提供的技术方案,由多个调试设备(如第一设备和第二设备)组成的调试集群中的客户端设备(如第二设备)可以通过与分布式设备集群中的主设备(如第三设备)连接的服务器设备(如第一设备)将用户触发的调试命令转发至被调试设备,以便被调试设备(如第三设备)根据调试命令对被调试进程(如第一进程)执行调试操作,并返回调试数据(如第一调试数据),通过这样的方式,现调试***中,多个调试设备对被调试进程的协同调试。
在一种可能的实现方式中,上述收发器还用于,从第一设备接收第二调试命令;根据第二调试命令中携带的第四设备的标识,将第二调试命令发送至第四设备;从第四设备接收第二调试数据;以及向第一设备发送第二调试数据;其中,第二调试命令对应于第四设备中的第二进程,第二进程与第一进程相关联,第二调试命令中携带有第四设备的标识和第二进程的标识;第二调试数据中携带有第四设备的标识和第二进程的标识。在本申请一些实施例中,调试集群中的服务器设备(如第一设备)和客户端设备(如第二设备)可以协同对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第二进程)进行协同调试。
在一种可能的实现方式中,上述收发器还用于,从第一设备接收第三调试命令,根据第三调试命令中携带的第四设备的标识,将第三调试命令发送至第四设备;从第四设备接收第三调试数据,以及,向第一设备发送第三调试数据;其中,第三调试命令对应于第四设备中的第三进程,第三调试命令中携带有第四设备的标识和第三进程的标识;第三调试数据是第四设备对第三进程执行第三调试命令后获取的调试数据,第三调试数据中携带有第四设备的标识和第三进程的标识。在本申请一些实施例中,调试集群中的客户端设备(如第二设备)可以对分布式设备集群中的多个设备(如第三设备和第四设备)中有关联关系的多个进程(如第一进程和第三进程)进行协同调试。
在一种可能的实现方式中,上述处理器还用于,进行设备发现,以及在发现第四设备之后,与第四设备建立通信连接;第三设备与第一设备通信连接。本申请提供的多个调试设备对分布式设备集群中一个被调试设备的协同调试,一个调试设备对多个被调试设备的跨设备协同调试,多个调试设备对多个被调试设备的跨设备协同调试等可以基于建立的包括有主设备(如第三设备)和从设备(如第四设备)的分布式设备集群实现。
在一种可能的实现方式中,上述收发器还用于,从第一设备接收发现可调试进程的命令;向第四设备发送发现可调试进程的命令;从第四设备的接收第四设备发现的第二可调试进程的信息;以及向第一设备发送可调试进程的信息;上述处理器还用于,发现第一可调试进程其中;第一可调试进程包括第一进程;第二可调试进程包括第二进程和第三进程;可调试进程的信息包括第一可调试进程的信息和第二可调试进程的信息。本申请提供的方案中,第一设备可以用于进行分布式设备集群中所有可调试进程的统一上报,以便于用户确定被调试设备和被调试进程。
第八方面,提供一种调试***,该调试***包括:如第四方面或第六方面任一种可能的实现方式中的第一设备,以及如第五方面或第七方面任一种可能的实现方式中的第三设备。该调试***用于实现如第三方面任一种可能的实现方式中的方法。
第九方面,提供计算机可读存储介质,该计算机可读存储介质上存储有计算机程序代码,该计算机程序代码被处理器执行时实现如第一方面或第二方面任一种可能的实现方式中的方法。
第十方面,提供一种芯片***,该芯片***包括处理器、存储器,存储器中存储有计算机程序代码;所述计算机程序代码被所述处理器执行时,实现如第一方面或第二方面任一种可能的实现方式中的方法。该芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
第十一方面,提供一种计算机程序产品,当其在计算机上运行时,使得实现如第一方面或第二方面任一种可能的实现方式中的方法。
附图说明
图1为一种分布式设备集群架构示例图;
图2为本申请实施例提供的一种电子设备的硬件结构示意图;
图3A为本申请实施例提供的一种调试***框架示例图;
图3B为本申请实施例提供的另一种调试***框架示例图;
图4为本申请实施例提供的一种调试***框架示例图;
图5为本申请实施例提供的一种调试***结构示例图;
图6A为本申请实施例提供的一种调试设备的结构图;
图6B为本申请实施例提供的一种第二调试模块的工作流程示意图;
图7为本申请实施例提供的另一种调试设备的结构图;
图8为本申请实施例提供的一种连接建立阶段和可调试进程确定阶段过程示例图;
图9为本申请实施例提供的一种网络拓扑结构UI界面示例图;
图10A为本申请实施例提供的一种可调试进程UI界面示例图;
图10B为本申请实施例提供的一种被调试设备的硬件状态界面示例图;
图11为本申请实施例提供的一种多设备调试多设备的方法流程图;
图12为本申请实施例提供的另一种多设备调试多设备的方法流程图;
图13为本申请实施例提供的一种单设备调试多设备的方法流程图;
图14为本申请实施例提供的一种多设备调试单设备的方法流程图;
图15为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请实施例提供一种软件调试方法,该方法用于开发人员使用一个或多个调试设备对一个或多个被调试设备中运行的应用进程的调试过程中,例如,用于开发人员使用一个或多个调试设备对分布式设备集群中的一个或多个设备中运行的应用进程的调试过程中。
例如,分布式设备集群中可以包括图1所示的智能手机、电视机、无线耳机、智能手表、音箱、个人电脑(personal computer,PC)、平板电脑、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、物联网(internet ofthings,IOT)设备(如智能家居设备)。其中,IOT是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。IOT技术可以实现海量连接,深度覆盖以及终端省电等。
又如,分布式设备集群中可以包括“1+8+N”终端产品。其中,“1+8+N”终端产品用于打造未来第五代移动通信技术(fifth-generation,5G)全场景智慧生活。示例性的,“1”是指智能手机,即未来智慧生活的入口;“8”是指平板、PC、可穿戴设备、高清(high-definition,HD)设备、人工智能(artificial intelligence,AI)音箱、耳机、AR/VR设备、车机设备;“N”泛指IOT设备,例如智能家居设备。
其中,进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是***进行资源分配和调度的基本单位,是操作***结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
其中,在本申请实施例中,示例性的,被调试设备可以是桌面型设备、膝上型设备、手持型设备、可穿戴设备、智能家居设备、计算设备或车载型设备等。例如,被调试设备可以是图1所示的智能手机、电视机、无线耳机、智能手表、音箱、PC、平板电脑、AR/VR设备、IOT设备,又如上网本、超级移动个人计算机(ultra-mobile personal computer,UMPC)、智能相机、个人数字助理(personal digital assistant,PDA)、便携式多媒体播放器(portablemultimedia player,PMP)、飞行器上的机载设备、机器人上的机载设备、工业控制中的控制设备、远程医疗中的无线设备、智能电网中的智能设备、智慧城市(smart city)中的智能设备、智慧家庭(smart home)中的智能设备等。
此外,被调试设备还可以是接入终端、用户单元、用户站、移动站、移动台、中继站、远方站、远程终端、移动设备、用户终端(user terminal,UE)、终端(terminal)、无线通信设备、用户代理或用户装置。终端设备还可以是蜂窝电话、无绳电话、会话启动协议(sessioninitiationprotocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备,未来5G网络中的终端设备或者未来演进的PLMN中的终端设备或者未来车联网中的终端设备等。
此外,被调试设备还可以是IOT***中的终端设备等,本申请对被调试设备的具体类型和结构等不作限定。
在本申请实施例中,调试设备通常具有显示屏,用于向开发人员展示调试UI界面。例如,调试设备可以是PC、UMPC、平板电脑、上网本等,本申请实施例不限定。
请参考图2,图2示出了本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可以是可调试设备,也可以是调试设备。如图2所示,该电子设备具体可以包括:处理器210,存储器220,USB接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块250,无线通信模块260,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,按键280,马达291,指示器292,摄像头293,显示屏294等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元。例如:处理器210可以包括应用处理器(applicationprocessor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),飞行控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-networkprocessing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了***的效率。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industryprocessor interface,MIPI),通用输入输出(general-purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或USB接口等。在本申请实施例中,调试设备的USB接口可以用于进行客户端/服务器(Client/Server,C/S)组网。在一些实施例中,调试设备的USB接口还可以用于与分布式设备集群中的设备建立通信连接。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频段。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块250可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块250可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块250可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块250还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块250的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块250的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器270A、受话器270B等)输出声音信号,或通过显示屏294显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器210,与移动通信模块250或其他功能模块设置在同一个器件中。
无线通信模块360可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如Wi-Fi网络),蓝牙BT,全球导航卫星***(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块260可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块260经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块260还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。在本申请实施例中,在本申请实施例中,调试设备的无线通信模块260可以用于进行客户端/服务器(C/S)组网。在一些实施例中,调试设备的无线通信模块260还可以用于与分布式设备集群中的设备建立通信连接。
在一些实施例中,电子设备的天线1和移动通信模块250耦合,天线2和无线通信模块360耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯***(global system formobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位***(global positioning system,GPS),全球导航卫星***(globalnavigation satellite system,GLONASS),北斗卫星导航***(beidounavigationsatellite system,BDS),准天顶卫星***(quasi-zenith satellite system,QZSS)和/或星基增强***(satellite based augmentation systems,SBAS)。
电子设备通过GPU,显示屏294,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。例如,在本申请实施例中,处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。在本申请实施例中,调试设备可以通过GPU,显示屏294,以及应用处理器等实现UI界面的显示。被调试设备可以通过GPU,显示屏294,以及应用处理器等实现进程对应的应用界面的显示。
显示屏294用于显示图像,视频等。显示屏294包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏294,N为大于1的正整数。在本申请实施例中,调试设备可以通过1个或N个显示屏294显示UI界面。被调试设备可以通过1个或N个显示屏294显示进程对应的应用界面。
存储器220可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。存储器220可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器210通过运行存储在存储器220的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备的各种功能应用以及数据处理。
需要说明的是,图2所示电子设备包括的硬件模块只是示例性地描述,并不对电子设备的具体结构做出限定。例如,电子设备还可以包括其他与图中示意的硬件模块具有交互关系的其他硬件模块,这里不作具体限定。
在本申请实施例中,一个或多个设备中运行的应用进程可以基于编程语言实现,例如基于C/C++、Java、JavaScript(JS)、Python、超文本标记语言(hypertext markuplanguage,HTML)或服务器端编程语言(professional hypertext preprocessor,PHP)等实现,本申请实施例不限定。
通常,开发人员可以基于调试器对应用进程进行调试,例如集成开发环境(integrated develop environment,IDE)。示例性的,IDE可以是DevEco Studio开发平台、
Figure BDA0002876803500000131
公司基于Intellij开源框架开发的Intellij IDEA、
Figure BDA0002876803500000132
公司的基于Intellij开源框架开发的Android Studio、
Figure BDA0002876803500000141
公司的Visual Studio或者
Figure BDA0002876803500000142
公司开发的Eclipse、
Figure BDA0002876803500000143
公司开发的NetBeans等。
其中,DevEco Studio开发平台,旨在帮助开发人员快捷、方便、高效地使用操作***的开放能力。例如用于帮助开发人员支持“1+8+N”全场景泛终端的应用开发,实现跨终端生态共享。示例性的,DevEco Studio开发平台可以具体用于远程真机、云测试能力,以及帮助开发人员全面提升应用质量和体验。通常,IDE也可以被称为编译器、调试器或编程软件。
示例性的,请参考图3A,图3A以Intellij开源框架为例,示出了一种调试***框架示例图。如图3A所示,该调试***包括调试设备和被调试设备。其中,调试设备中集成有框架(Framework)层和第一调试模块。例如第一调试模块可以包括调试插件(debugplugin)。被调试设备中集成有调试工具(debug tool)并运行有一个或多个可调试进程(process)(其中图3A仅以被调试设备中运行有一个可调试进程(process)为例)。
在图3A所示的调试设备上,框架(Framework)层可以根据检测到的开发人员触发的(例如开发人员在用户界面(user interface,UI)(以下简称UI界面)上触发的)对被调试进程的调试事件生成调试命令,并将该调试命令发送至第一调试模块。第一调试模块可以将来自框架(Framework)层的调试命令转化为具体的调试工具(debug tool)协议对应的调试命令。以及,第一调试模块可以通过与被调试设备之间的通信连接(如有线连接或无线连接)将转化后的调试命令发送给被调试设备的调试工具(debug tool)。示例性的,调试命令可以包括但不限定于断点命令、跳转命令、读写命令等。其中,断点命令是指暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后在执行后再返回原先的任务继续执行的调试命令。
示例性的,有线连接可以是通过通用串行总线(universal serial bus,USB)的连接或网线连接等;无线连接可以是无线局域网(wireless fidelity,Wi-Fi)连接等。本申请不限定调试设备与被调试设备之间具体的网络连接方式。
示例性的,调试工具(debug tool)可以是针对Java语言的调试工具JDB、针对C++语言的调试工具GDB或LLDB,或者针对JS调试的调试工具V8等,本申请实施例不限定。
被调试设备的调试工具(debug tool)通过对接收到的来自调试设备的调试命令进行解析,以获取调试命令对应的指令和数据。以及,调试工具(debug tool)根据解析获得的指令和数据对可调试进程(process)进行调试中断,以及获取中断后指定的调试信息(如变量值和/或堆栈信息等)并反馈给调试插件(debugplugin)。调试插件(debugplugin)通过解析来自调试工具(debug tool)的调试信息,以及按照框架(Framework)层需要的数据模型调用框架接口在UI界面上展示给开发人员。其中,数据模型可以包括但不限于断点的文件路径行或断点所在行等。
需要说明的是,基于类似图3A所示的调试***框架,可以实现调试设备对被调试设备上可调试进程(process)的调试。但是,基于类似图3A所示的调试***框架,调试设备不能进行跨进程地调试。其中,跨进程地调试是指协同调试具有相互关联的多个应用进程。
另外,基于类似图3A所示的调试***框架,也不能实现对分布式场景中的跨设备/跨进程的协同调试。例如,假设在智能手表控制大屏设备(如电视机)的场景中,需要协同调试智能手表和大屏设备之间的通信、连接和控制等同步问题。而基于类似图3A所示的调试***框架,则不能实现对智能手表和大屏设备的跨设备的协同调试。
为解决上述问题,本申请实施例提供一种软件调试方法,该方法可以实现对分布式场景中的一个或多个设备的协同调试。例如,该方法可以实现调试***中,多个调试设备对分布式设备集群中一个被调试设备的协同调试,一个调试设备对多个被调试设备的跨设备协同调试,多个调试设备对多个被调试设备的跨设备协同调试等。
本申请实施例提供的软件调试方法可以基于图3B所示的调试***框架实现,如图3B所示,本申请实施例提供的一种调试***可以包括调试设备和被调试设备。其中,调试设备中集成有框架(Framework)层和第二调试模块。例如第二调试模块可以包括调试工具分配(distribute debugger)层。被调试设备中集成有分布式调试助手和调试工具(debugtool),并且,被调试设备中运行有一个或多个可调试进程(process)(其中图3B仅以被调试设备中运行有一个可调试进程(process)为例)。被调试设备中集成有分布式调试助手和调试工具(debug tool),且被调试设备中运行有一个或多个可调试进程(process)(其中图3B仅以被调试设备中运行有一一个可调试进程(process)为例)。
在图3B所示的调试设备上,框架(Framework)层可以根据检测到的开发人员触发的(例如开发人员在UI界面上触发的)对被调试进程的调试事件生成调试命令,并将该调试命令发送至第二调试模块。
其中,第二调试模块可以用于进行多调试设备之间的组网。通过多调试设备之间的组网,开发人员可以实现多调试设备对一个或多个被调试设备的协同调试。
第二调试模块还可以用于屏蔽不同语言调试设备之间的调试协议差异。例如,使用统一的协议,如规定的协议(如DAP协议)或者自定义协议等对接框架层不同语言的数据模型(如java对象、C++对象等)。
在一些实施例中,第二调试模块可以将来自图3B所示框架(Framework)层的调试命令转化为具体的调试工具(debug tool)协议对应的调试命令。进一步的,第二调试模块还可以将转化后的调试命令发送给其他调试设备的第二调试模块(其中图3B未示出其他调试设备),以便其他调试设备的第二调试模块将该调试命令转发至对应的被调试设备。其中,第二调试模块接收到的调试命令中携带有被调试设备的标识和被调试进程的标识。
在另一些实施例中,第二调试模块还可以接收来自其他调试设备的第二调试模块(其中图3B未示出其他调试设备)的调试命令。以及,将来自其他调试设备的第二调试模块的调试命令转发至对应的被调试设备。
第二调试模块还用于与被调试设备建立直接连接关系,或者通过其他电子设备与被调试设备建立间接连接关系。其中,第二调试模块通过其他电子设备与被调试设备建立间接连接关系是指:第二调试模块通过其他电子设备建立直接连接关系,以通过该设备与和该设备连接的被调试设备建立间接连接关系。关于这部分内容,将在下文中具体介绍。
被调试设备中的分布式调试助手用于接收来自第二调试模块的调试命令。
在一些实施例中,在图3B所示被调试设备与图3B所示第二调试模块建立直接连接关系时,图3B所示分布式调试助手可以用于根据来自第二调试模块的调试命令中携带有被调试设备的标识将调试命令进行调试命令分发或者执行调试命令。
例如,在调试命令针对图3B所示被调试设备中的进程时,图3B所示分布式调试助手可以将该调试命令转换为对应线程语言的调试命令,以及调用被调试设备中安装的具体的调试工具(例如LLDB-MI或JDB等调试工具)向被调试进程发送调试命令,并接收调试工具返回的被调试设备中的被调试进程的调试信息。
又如,在调试命令针对其他被调试设备(其中图3B未示出其他调试设备)时,图3B所示分布式调试助手可以根据来自第二调试模块的调试命令中携带有被调试设备的标识将调试命令分发至对应被调试设备的分布式调试助手。以及,接收来自其他被调试设备返回的被调试进程的调试信息。
进一步的,在图3B所示被调试设备与图3B所示第二调试模块建立直接连接关系时,图3B所示分布式调试助手还可以用于将获取的调试信息反馈至调试设备的第二调试模块,以便第二调试模块将调试信息转换为对应语言的数据格式和数据模型。以及,调用框架层的接口,以触发在调试设备的UI界面上显示调试操作的结果,以便通过UI界面将调试操作的结果反馈给开发人员。
在另一些实施例中,在图3B所示被调试设备通过其他电子设备(其中图3B未示出其他调试设备)与图3B所示被调试设备建立间接连接关系时,图3B所示分布式调试助手可以用于接收来自上述其他电子设备的分布式调试助手转发的调试命令。将该调试命令转换为对应线程语言的调试命令,以及调用被调试设备中安装的具体的调试工具(例如LLDB-MI或JDB等调试工具)向被调试进程发送调试命令,并获取调试工具返回的被调试设备中的被调试进程的调试信息。以及,将获取的调试信息通过上述其他电子设备的分布式调试助手转发至调试设备的第二调试模块,以便第二调试模块将调试信息转换为对应语言的数据格式和数据模型。以及,调用框架层的接口,以触发在调试设备的UI界面上显示调试操作的结果,以便通过UI界面将调试操作的结果反馈给开发人员。
基于图3B所示的集成有第二调试模块的调试设备,以及集成有分布式调试助手的被调试设备,开发人员可以根据实际需要,多个被调试设备中的相互关联的多个应用进程进行协同调试。
请参考图4,图4示出了本申请实施例提供的一种调试***框架示例图。本申请实施例提供的软件调试方法可以基于类似图4所示的调试***框架实现。
如图4所示,本申请实施例提供的调试***可以包括调试服务器41和分布式设备集群42。分布式设备集群42包括一个或多个电子设备,例如图4是以分布式设备集群42包括图1所示结构的,用于实现相同或不同功能的多个电子设备为例。
在一些实施例中,调试***还可以包括一个或多个调试客户端。其中,图4以调试***包括两个调试客户端(调试客户端A43和调试客户端B 44)为例。在调试***包括多个调试设备时,例如包括调试服务器和一个或多个调试客户端时,该调试服务器和一个或多个调试客户端可以组成一个调试集群(也称IDE集群)。例如,图4所示的调试服务器41、调试客户端A43和调试客户端B 44可以组成一个调试集群。
其中,在图4所示的调试***框架中,调试服务器41主要用于与分布式设备集群42的主机建立通信连接(例如通过USB或Wi-Fi等建立通信连接)、进行分布式设备集群组网、实现多调试器断点分权管理、进行跨进程调试命令组合、调试命令下发管理、调试信息分发管理和进行调试***注册能力监控等。
其中,分布式设备集群42的主机主要用于进行分布式设备集群中的可调试设备发现、可调试进程发现、与调试服务器41通信连接、在分布式设备集群42中进行调试命令转发和进行分布式设备集群42中调试信息的转发等。示例性的,在图4所示的调试***框架中,智能手机为分布式设备集群42的主机(以下简称主设备)。与主设备对应的是从设备,如图4所示的电视机、无线耳机、智能手表、音箱、PC、平板电脑、AR/VR设备和IOT设备均为从设备。
可以理解,主设备是分布式设备集群中与调试集群中的调试设备建立了直接通信连接的设备。从设备是分布式设备集群中,通过与主设备之间的通信连接,与调试集群中的调试设备建立了间接通信连接的设备。
另外,调试服务器41、调试客户端A43和调试客户端B 44可以是相同结构的电子设备(如PC),电子设备作为调试集群中的服务器还是客户端,可以由开发人员定义和设置。例如,若电子设备1(如图4所示调试服务器41)与分布式设备集群中的主设备(如图4所示智能手机)直接连接,则电子设备1可以理解为调试集群中的服务器。又如,若电子设备2(如图4所示调试客户端A43和调试客户端B 44)通过与电子设备1(如图4所示调试服务器41)之间的通信连接,以与分布式设备集群中的主设备(如图4所示智能手机)建立间接连接关系,则电子设备2可以理解为调试集群中的客户端。
如图4所示,调试客户端A43和调试客户端B 44与调试服务器41进行C/S组网后,调试客户端A43和调试客户端B 44可以通过调试服务器41与分布式设备集群42中的设备通信。具体的,如图4所示,调试客户端A43和调试客户端B 44可以通过调试服务器41与分布式设备集群42中的智能手机(即主设备)或其他从设备(如图4所示的电视机、无线耳机、智能手表、音箱、PC、平板电脑、AR/VR设备和IOT设备均为从设备)通信。
在本申请实施例中,调试客户端A43、调试客户端B 44和调试服务器41可以实现以下功能:分布式数据库查看管理,分布式设备集群中设备注册能力的查看及管理,命令越权检测和断点分权管理等。其中,分布式数据库用于提供例如调试***中调试设备、调试命令、被调试设备、被调试进程和调试数据等的存储。分布式数据库可以通过将数据分散存储到多个通过通信连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。
进一步的,调试客户端A43和调试客户端B 44还可以实现调试命令到服务器端(即调试服务器41)的汇聚。调试服务器41还可以实现调试命令协同。
在一些实施例中,调试客户端A43、调试客户端B 44和调试服务器41可以依托具有调试特性的模块或单元实现上述一个或多个功能。在本申请实施例中,分布式设备集群中的设备之间可以进行通信。但是,需要说明的是,本申请实施例并不限定实现上述功能所依托的模块或单元。
在本申请实施例中,分布式设备集群42中的主设备和从设备可以实现以下功能:设备发现,主从模式(Master/Slave)下的分布式设备集群选主,分布式设备集群组网和分布式数据库查看等。其中,设备发现用于发现电子设备,例如发现连接在同一局域网的电子设备等。分布式设备集群选主用于在一个调试***中确定一个主设备(Master)和一个或多个从设备(Slave)。分布式设备集群组网用于建立分布式设备集群中的设备间的通信连接。分布式数据库查看用于通过查看分布式数据库,获取例如调试***中调试设备、调试命令、被调试设备、被调试进程等数据。
在一些实施例中,主设备和从设备可以依托具有分布式特性的模块或单元实现上述一个或多个功能。但是,需要说明的是,本申请实施例并不限定实现上述功能所依托的具体模块或单元。进一步的,分布式设备集群42中的主设备还可以与调试服务器41及分布式设备集群42中的从设备建立通信连接(如通过USB或Wi-Fi等建立通信连接)。在一些实施例中,若被调试设备为分布式设备集群中的从设备,则分布式设备集群中的主设备还可以下发调试命令到一个或多个从设备,以及接收一个或多个从设备反馈的调试数据(也称调试信息),并将该调试信息转发至调试服务器。
需要说明的是,本申请并不限定调试***的具体组网方式。例如,本申请实施例提供的方法还可以适用于微服务调试***等。
基于图4所示的调试***框架,开发人员可以实现以下任一种场景下的调试:
1、多设备调试多设备。
例如,开发人员使用调试客户端A43和/或调试客户端B 44,通过调试服务器41对分布式设备集群42中的主设备和一个或多个从设备,或者一个或多个从设备中的被调试进程进行协同调试。又如,开发人员使用调试服务器41,以及调试客户端A43和/或调试客户端B 44对分布式设备集群42中的主设备和一个或多个从设备,或者一个或多个从设备中的被调试进程进行协同调试。
2、单设备调试多设备。
例如,开发人员使用调试服务器41对分布式设备集群42中的主设备和一个或多个设备中的被调试进程进行协同调试。或者,开发人员使用调试服务器41对分布式设备集群42中的一个或多个从设备中的可调试进程进行协同调试。
3、多设备调试单设备。
例如,开发人员使用调试客户端A43和/或调试客户端B 44,通过调试服务器41对分布式设备集群42中的主设备中的被调试进程进行协同调试。又如,开发人员使用调试服务器41,以及调试客户端A43和/或调试客户端B 44对分布式设备集群42中的主设备中的被调试进程进行协同调试。
4、单设备调试单设备。
例如,开发人员使用调试服务器41对分布式设备集群42中的主设备中的被调试进程进行调试。
需要说明的是,虽然常规的调试技术也可以实现单设备对单设备的调试,但是常规的调试技术中,调试设备是通过调试工具(如JDB、GDB等)直接连接被调试设备的被调试进程。而在本申请实施例提供的方案中,单设备对单设备的调试可以依托类似图4所示的调试***框架实现。具体的,在本申请实施例提供的单设备调试单设备中,调试设备(如调试服务器41)自己作为自己的服务端,被调试设备(如智能手机)自己作为自己的主设备,实现调试设备对被调试设备中被调试进程的调试。两者的实现细节是有本质差别的,基于本申请实施例提供的软件调试方法,可以灵活实现多场景(如多设备调试多设备场景、单设备调试多设备场景、多设备调试单设备场景或单设备调试单设备)下的软件调试。
需要说明的是,本申请并不限定调试***的具体组网方式。例如,本申请实施例提供的方法可以适用于例如鸿蒙分布式调试***或者微服务分布式调试***等调试***。其中,不管是什么组网方式的调试***,该调试***均具备获取以下信息的能力:注册的接口的类的路径、注册的函数的函数名和函数的代码行等。示例性的,对于鸿蒙分布式调试***,可以从调试服务器获取上述信息;对于微服务分布式调试***,可以从代码的配置项获取上述信息。
请参考图5,图5以调试集群包括调试服务器41、调试客户端A43和调试客户端B44,分布式设备集群包括智能手机、音箱和电视机,且智能手机为主设备,电视机和音箱为从设备为例,示出了本申请实施例提供的一种调试***结构示例图。
如图5所示,调试服务器41、调试客户端A43和调试客户端B 44包括框架(Framework)层和第二调试模块。其中,电子设备(如PC)在作为调试服务器与作为调试客户端时,第二调试模块的具体功能有所不同。为方便理解,图5以第二调试模块(Server)表示调试服务器41的第二调试模块,以第二调试模块(Client)表示调试客户端A43和调试客户端B 44的第二调试模块。智能手机、音箱和电视机包括分布式调试助手、调试工具和被调试进程(如图5所示第一进程、第二进程和第三进程)。为方便理解,图5以分布式调试助手(Master)表示主设备(即智能手机)的分布式调试助手,以分布式调试助手(Slave)表示从设备的分布式调试助手。
其中,第二调试模块(包括第二调试模块(Server)和第二调试模块(Client))用于进行多IDE之间的组网。
进一步的,在本申请实施例中,第二调试模块(包括第二调试模块(Server)和第二调试模块(Client))还可以用于屏蔽不同语言调试设备之间的调试协议的差异,使用统一的调试协议对接框架层不同语言的数据模型。例如,使用规定的协议(如DAP协议)或者自定义协议等对接框架层不同语言的数据模型(如java对象、C++对象等)。
第二调试模块(Server)还可以用于与分布式设备集群中的主设备(如图5所示的智能手机)建立通信连接(如通过USB或Wi-Fi等建立通信连接),以及将调试命令下发给分布式设备集群中的被调试设备,包括将调试客户端A43或调试客户端B 44通过第二调试模块(Client)发送给第二调试模块(Server)的调试命令,或者将来自调试服务器41的框架层的调试命令下发给分布式设备集群中的被调试设备。
其中,在第二调试模块(Server)进行调试命令下发时,第二调试模块(Server)首先将调试命令发送给分布式设备集群中的主设备(如图5所示智能手机)的分布式调试助手(Master),由分布式调试助手(Master)进一步完成后续的调试命令分发工作。另外,第二调试模块(Server)还可以用于在将调试命令发送给主设备(如图5所示智能手机)的分布式调试助手(Master)之后,接收来自被调试设备的返回的针对调试命令的返回结果(即调试信息),将返回结果(即调试信息)转换为对应语言的数据格式和数据模型。以及,调用框架层的接口,以触发在调试设备的UI界面上显示调试操作的结果,将调试操作的结果反馈给开发人员。
被调试设备的分布式调试助手(包括分布式调试助手(Master)和分布式调试助手(Slave))可以用于接收针对被调试设备中被调试进程的调试命令,实现设备发现,以及在发现设备之后进行分布式设备集群选主和分布式设备集群组网等。
进一步的,分布式调试助手还用于进行可调试进程发现以及可调试进程的信息的上报。
进一步的,主设备(Master)的分布式调试助手还用于与调试服务器及分布式设备集群中的从设备(Slave)建立通信连接(如通过USB或Wi-Fi等建立通信连接),以及接收调试服务器或调试客户端下发的调试命令,进行调试命令在分布式设备集群中的分发等。
进一步的,被调试设备的分布式调试助手还用于在接收到调试命令后,将该调试命令转换为对应线程语言的调试命令,以及调用被调试设备中安装的具体的调试工具(例如LLDB-MI或JDB等调试工具)向被调试进程发送调试命令,并接收调试工具返回的被调试设备中的被调试进程的调试信息。例如,调试工具可以包括以下中的任一种:LLDB-MI、JDB、GDB、LLDB、V8或PDB。
其中,在本申请实施例中,被调试设备可以是分布式设备集群中的主设备(如图5所示的智能手机),也可以是分布式设备集群中的一个或多个从设备(如图5所示的电视机、无线耳机、智能手表、音箱、PC、平板电脑、AR/VR设备和IOT设备中的一个或多个),也可以既包括分布式设备集群中的主设备又包括分布式设备集群中的一个或多个从设备,本申请不限定。
在被调试设备是分布式设备集群中的主设备(如图5所示的智能手机)时,主设备(如图5所示的智能手机)的分布式调试助手(Master)可以直接将针对调试命令的调试信息发送给第二调试模块(Server),以便第二调试模块(Server)进行后续的调试信息分发。在被调试设备是分布式设备集群中的从设备(如图5所示的电视机或音箱)时,主设备(如图5所示的智能手机)的分布式调试助手(Master)可以接收来自从设备(如图5所示的电视机或音箱)的分布式调试助手(Slave)的针对调试命令的调试信息,以及将接收到的调试信息发送给第二调试模块(Server),以便第二调试模块(Server)进行后续的调试信息分发。
需要说明的是,图5仅以分布式设备集群中的主设备和从设备仅运行有一个可调试进程(如图5所示第一进程、第二进程和第三进程)为例,本申请不限定被调试设备中运行的被调试进程的数量。另外,本申请实施例也不限定被调试进程与调试工具之间的对应关系。例如,图5所示第一进程、第二进程和第三进程可以通过例如LLDB-MI、JDB、GDB、LLDB、V8或PDB等调试工具中的任一种完成调试。
更为具体的,请参考图6A,图6A示出了第二调试模块一种可能的结构。如图6A所示,第二调试模块(包括第二调试模块(Server)和第二调试模块(Client))可以包括连接管理器(connectormanager),设备管理器(devices manager),断点管理器(breakpointsmanager),命令管理器(command manager),调试信息管理器(debug info manager)和分布式能力管理器(distributedability manager)。
其中,在本申请实施例中,连接管理器具体可以用于提供调试客户端与调试服务器之间的组网能力(例如C/S组网能力)。
需要说明的是,在本申请实施例中的单设备调试单设备或单设备调试多设备的场景中,则不需要上述连接管理器(ConnectorManager)的参与。
设备管理器具体可以用于连接分布式设备集群中的主设备,从而使得调试服务器可以通过主设备获取分布式设备集群内每个设备的设备信息。设备管理器还可以用于查看被调试设备的能力以及数据等。
断点管理器具体可以用于提供调试客户端与调试服务器之间的断点分权管理。其中,调试客户端与调试服务器之间的断点信息都互相可见。例如,调试客户端A新增的断点信息对调试客户端B可见;调试客户端B新增的断点信息对调试客户端A可见。在同一进程内,调试客户端或调试服务器均可新增断点。但是,调试客户端或调试服务器只能修改或者删除自己新增的断点;在不同进程之间,调试客户端或调试服务器只能修改、删除或者新增自己进程内的断点。
命令管理器具体可以用于进行跨进程调试命令组合、调试命令下发管理,提供调试命令队列管理,不同IDE之间组合调试命令管理,以及分布式注册能力的调试命令管理。其中,不同IDE之间组合调试命令的管理主要用于实现跨进程调试能力;分布式注册能力的调试命令管理主要用于支持跨进程条件断点能力。
调试信息管理器具体可以用于调试信息接收,调试信息分发管理,提供调试信息在IDE集群中的分发,公共数据在IDE集群中的分发,以及线程信息在IDE集群中的分发。需要说明的是,在本申请实施例单设备调试场景中,例如在单设备调试单设备或者单设备调试多设备的场景中,则不会涉及上述调试信息、公共数据和线程信息在IDE集群中的分发,调试信息、公共数据和线程信息均会返回给该一个调试设备。
分布式能力管理器具体可以用于调试***注册能力监控,提供对分布式设备集群中每一个设备注册的能力的跟踪。例如,在依托分布式软总线的鸿蒙分布式调试***中,分布式能力管理器可以用于查询分布式软总线;通过分布式软总线查询分布式设备集群中设备的注册能力,以及查询鸿蒙分布式调试***特性等。又如,在微服务分布式调试***中,分布式能力管理器可以用于查询各个微服务注册的接口等。
需要说明的是,在本申请实施例中,第二调试模块还可以不包括上述分布式能力管理器。上述查询分布式设备集群中设备的注册能力或者查询分布式调试***特性等对分布式设备集群中每一个设备注册的能力的跟踪的功能可以依托其他模块或单元来说实现,本申请并不限定。
请参考图6B,图6B以调试服务器为例,示出了本申请实施例提供的一种第二调试模块的工作流程示意图。如图6B所示,第二调试模块的连接管理器主要用于进行调试客户端与调试服务器组网,以得到调试集群。
在连接管理器完成组网,建立调试集群之后。第二调试模块的设备管理器(更为具体的,调试服务器的第二调试模块中的设备管理器)可以连接分布式设备集群中的主设备。例如,调试服务器的第二调试模块中的设备管理器可以响应于开发人员建立调试服务器与分布式设备集群中的主设备之间通信连接的操作,与主设备建立通信连接。由于分布式设备集群中的主设备与从设备已经建立连接,因此,至此,调试***建立完成。
例如,开发人员建立调试服务器41与主设备之间通信连接的操作可以是开发人员通过USB、网线等有线连接方式连接调试服务器41与主设备的操作,或者开发人员在调试服务器41上输入主设备IP地址以建立通信连接的操作,开发人员在主设备上输入调试服务器41IP地址以建立通信连接的操作等,本申请实施例不限定。
进一步的,第二调试模块的分布式能力管理器(更为具体的,调试服务器的第二调试模块中的分布式能力管理器)可以不断对调试***的注册能力和分布式设备中集群中设备的注册能力进行跟踪,以保证调试***支持协同调试的能力正常。
进一步的,第二调试模块的命令管理器可以对来自调试服务器和/或调试客户端的调试命令进行跨进程调试命令组合,调试命令管理以及调试命令队列管理等。以及,命令管理器可以进行调试命令下发管理,将来自调试服务器和/或调试客户端的调试命令下发至主设备,以便主设备进行后续的调试命令分发。
示例性的,若调试命令为断点命令,则第二调试模块的断点管理器可以提供调试客户端与调试服务器之间的断点分权管理。例如,同一时间仅允许与被调试进程绑定的调试设备对该被调试进程进行调试。
进一步的,在被调试设备根据调试命令完成调试操作之后,第二调试模块的调试信息管理器可以接收来自被调试设备的调试信息,进行调试信息分发管理,调试信息分发,公共数据分发和线程信息分发等,以便将调试信息及时反馈给开发人员。
需要说明的是,上述图5和图6A中调试客户端和调试服务器的结构仅作为示例。在一些实施例中,如图7所示,调试客户端和调试服务器还可以包括调试协议适配(debugadapter protocol,DAP)层。调试协议适配层可以用于实现上述图5或图6A所示第二调试模块的部分功能。
例如,调试协议适配层可以用于屏蔽调试协议适配层主要用于屏蔽不同语言调试设备之间的调试协议的差异,使用统一的调试协议对接框架层不同语言的数据模型。例如,使用规定的协议(如DAP协议)或者自定义协议等对接框架层不同语言的数据模型(如java对象、C++对象等)。
另外,第二调试模块还可以用于将开发人员操作触发的IDE调试事件转化为调试命令。进一步的,在本申请实施例中,第二调试模块还可以用于将被调试设备返回的调试命令的返回结果(即调试信息)转换为对应语言的数据格式和数据模型。以及,调用框架层的接口,以触发在UI界面上显示调试操作的结果,以便通过UI界面将调试操作的结果反馈给开发人员。
如上文所述,本申请实施例中,可以实现分布式架构中,以下任一种场景下的软件调试:多设备调试多设备,单设备调试多设备,多设备调试单设备和单设备调试单设备。
其中,多设备调试多设备可以包括:一个或多个调试客户端和调试服务器协同调试主设备和一个或多个从设备中的进程,一个或多个调试客户端和调试服务器协同调试与主设备连接的多个从设备中的进程,一个调试客户端通过调试服务器调试与主设备连接的一个或多个从设备中的进程,多个调试客户端通过调试服务器调试与主设备连接的一个或多个从设备中的进程。例如,在图4所示的调试***框架中,调试客户端A43或调试客户端B44通过调试服务器41调试与智能手机连接的一个从设备即为多设备调试多设备场景。又如,调试客户端A43、调试客户端B 44和调试服务器41中的多个协同调试与智能手机连接的一个从设备的场景即为多设备调试多设备场景。
单设备调试多设备可以包括:调试服务器调试主设备和一个或多个从设备中的进程,调试服务器调试与主设备连接的一个或多个从设备中的进程。例如,在图4所示的调试***框架中,调试服务器41调试与智能手机连接的一个从设备的场景即为单设备调试多设备场景。
多设备调试单设备可以包括:一个调试客户端通过调试服务器调试主设备中的进程,多个调试客户端通过调试服务器调试主设备中的进程,一个或多个调试客户端和调试服务器协同调试主设备中的进程。例如,在图4所示的调试***框架中,调试客户端A43和/或调试客户端B 44通过调试服务器41调试智能手机中的进程的场景即为多设备调试单设备场景。
单设备调试单设备可以包括:调试服务器调试主设备中的进程。
其中,本申请实施例提供的软件调试方法可以包括以下几个阶段:调试命令生成阶段(即第一阶段),调试命令下发阶段(即第二阶段),调试阶段(即第三阶段),调试信息返回阶段(即第四阶段)和调试信息展示阶段(即第五阶段)。
通常,在第一阶段之前,还包括连接建立阶段和可调试进程确定阶段。其中,连接建立阶段用于进行分布式设备集群和调试集群的组建。可调试进程确定阶段用于开发人员获取可调试进程的信息。
示例性的,在一些实施例中,如图8所示,上述连接建立阶段可以包括以下步骤S801-S803:
S801、多个电子设备(如第一设备、第二设备、第三设备和第四设备)进行分布式设备集群组网以得到分布式设备集群42。
其中,图8是以第一设备为智能手机、第二设备为电视机、第三设备为音箱、第四设备分别为图4所示无线耳机、智能手表、音箱、PC、平板电脑、AR/VR设备和IOT设备为例进行举例介绍的。
示例性的,在本申请一些实施例中,多个电子设备(如第一设备、第二设备、第三设备和第四设备)可以通过设备发现,在发现设备之后进行分布式设备集群选主,以及进行分布式设备集群组网以得到分布式设备集群42。
例如,在依托分布式软总线的鸿蒙分布式调试***中,多个电子设备可以通过分布式软总线进行互相发现和组网。其中,多个电子设备进行分布式设备集群组网可以通过在设备之间建立USB连接或Wi-Fi连接等方式完成。
在本申请一些实施例中,多个电子设备可以提醒开发人员设置主设备和从设备。例如,电子设备可以通过弹出设置框、语音提醒等方式,提醒开发人员通过建立多个电子设备之间的连接关系,以设置主设备和副设备,得到分布式设备集群42,本申请实施例不限定。示例性的,电子设备可以提醒开发人员通过USB或网线等有线连接方式建立多个电子设备之间的连接关系,或者通过输入IP地址或者建立Wi-Fi连接等无线连接方式建立多个电子设备之间的连接关系。
在本申请另一些实施例中,多个电子设备还可以根据设备的性能、设备的连接情况等进行选主,本申请不限定。例如,多个电子设备还可以优先选择最先配置好的设备作为主设备,其他设备作为从设备。示例性的,最先配置好的设备可以包括最发现的设备自动建立无线连接的电子设备等。
又如,最先配置好的设备可以包括最先发现设备的电子设备。对于这种情况,最先发现设备的电子设备可以提醒开发人员该设备发现的设备的标识,以及提醒开发人员通过建立多个电子设备之间的连接关系,以得到分布式设备集群42。
关于开发人员通过建立多个电子设备之间的连接关系得到分布式设备集群的具体方法和操作过程,可以参考常规技术中的介绍,本申请实施例不做赘述。
在本申请一些实施例中,更为具体的,多个电子设备可以通过分布式调试助手进行设备发现,以及在发现设备之后进行分布式设备集群选主,以及分布式设备集群组网。其中,分布式设备集群选主用于确定一个主设备(如图4所示智能手机)和一个或多个从设备(如图4所示电视机、无线耳机、智能手表、音箱、PC、平板电脑、AR/VR设备和IOT设备)。分布式设备集群组网用于建立分布式设备集群。
S802、调试服务器41、调试客户端A43和调试客户端B 44进行组网,以得到调试集群。
可以理解,调试服务器41、调试客户端A43和调试客户端B 44可以是相同结构的调试设备(如PC),调试设备作为调试集群中的服务器还是客户端,可以由开发人员定义和设置。
例如,开发人员可以在设置界面上,通过设置多个调试设备之间的连接关系,以设置服务器和客户端,得到调试集群,本申请实施例不限定。进一步的,开发人员通过USB或网线等有线连接方式建立多个调试设备之间的连接关系,或者通过输入IP地址或者建立Wi-Fi连接等无线连接方式建立多个调试设备之间的连接关系。
其中,若调试设备1和调试设备2均与调试设备3建立直接通信连接,则电子设备2可以理解为调试集群中的服务器,调试设备1和调试设备2可以理解为调试集群中的客户端。
需要说明的是,在本申请实施例中,不限定上述步骤S801和S802的具体执行顺利。例如可以先执行S801再执行S802,也可以先执行S802再执行S801,还可以同时执行S801和S802,本申请不限定。
S803、调试服务器41与主设备建立通信连接。
例如,调试服务器41可以响应于开发人员建立调试服务器41与主设备之间通信连接的操作,与主设备建立通信连接。例如,开发人员建立调试服务器41与主设备之间通信连接的操作可以是开发人员通过USB、网线等有线连接方式连接调试服务器41与主设备的操作,或者开发人员在调试服务器41上输入主设备IP地址以建立通信连接的操作,开发人员在主设备上输入调试服务器41IP地址以建立通信连接的操作等,本申请实施例不限定。
示例性的,主设备的分布式调试助手可以将其端口标识(port ID,PID)映射到调试服务器41指定的端口上,调试服务器41可以通过该端口与主设备的分布式调试助手建立通信连接。
其中,在调试服务器41与主设备建立通信连接之后,示例性的,调试服务器41可以通过设备管理器直接从主设备获取主设备的设备信息,也可以通过主设备获取分布式设备集群42中一个或多个从设备的设备信息。
进一步的,在调试服务器41与主设备建立通信连接之后,调试服务器41可以对主设备中的可调试进程进行调试,也可以通过主设备对分布式设备集群42中的一个或多个从设备进行调试。
进一步的,如图8所示,上述可调试进程确定阶段可以包括以下步骤S804-S807:
S804、调试服务器41向智能手机发送发现可调试进程的命令。
例如,调试服务器41的设备管理器可以通过调试服务器41与分布式设备集群中的主设备(如图4所示智能手机)之间的通信连接,向主设备(如图4所示智能手机)的分布式调试助手发送上述发现可调试进程的命令。
在主设备(如图4所示智能手机)的分布式调试助手接收到上述发现可调试进程的命令之后,主设备(如图4所示智能手机)的分布式调试助手可以向分布式设备集群中的每一个从设备转发上述发现可调试进程的命令。之后,分布式设备集群中的主设备(即第一设备,智能手机)和从设备(即第二设备、第三设备和第四设备)执行以下步骤S805:
S805、第一设备、第二设备、第三设备和第四设备发现当前设备上运行的可调试进程。
例如,第一设备、第二设备、第三设备和第四设备可以通过各自的分布式调试助手发现当前设备上运行的可调试进程。示例性的,分布式调试助手可以发现当前正在运行的,且可调试的进程,即可调试进程。
S806、第一设备、第二设备、第三设备和第四设备向调试服务器41发送发现的可调试进程的信息。
例如,第一设备、第二设备、第三设备和第四设备的分布式调试助手将发现的可调试进程的信息上报至调试服务器41的设备管理器。
其中,主设备的分布式调试助手可以直接将主设备的可调试进程的信息上报至调试服务器41的设备管理器,从设备则可以通过主设备将从设备的可调试进程的信息上报至调试服务器41的设备管理器。
可以理解,由于可调试进程的信息由集群设备(如第一设备、第二设备、第三设备和第四设备)向调试服务器41的发送的目的在于为开发人员提供被调试设备和被调试进程的了解和进一步地选择,因此,在本申请实施例中,上述可调试进程的信息中可以包括可调试进程对应的可调试设备的设备信息,例如设备ID等。S807、调试服务器41、调试客户端A43和调试客户端B 44进行可调试进程的信息的展示。
例如,调试服务器41的设备管理器将获取的可调试进程的信息通过UI界面展示给开发人员,以便调试服务器41所属的开发人员可以进行某一可调试设备中的某一可调试进程的选择。以及,调试服务器41可以将可调试进程的信息发送给调试客户端A43和调试客户端B 44,以便调试客户端A43和调试客户端B 44的设备管理器将获取的可调试进程的信息通过UI界面展示给开发人员,以便对应的开发人员可以进行具体的可调试设备中可调试进程的选择。
请参考图9,图9示出了本申请实施例提供的一种网络拓扑结构UI界面示例图。如图9所示,网络拓扑结构UI界面上可以显示有分布式设备集群中的主设备(如图9所示的智能手机)和从设备(如图9所示的电视机、音箱、智能手表、无线耳机、PC、平板电脑、IOT设备和AR/VR设备),以及主设备和从设备之间的连接关系。调试服务器41、调试客户端A43或调试客户端B 44可以响应于接收到开发人员对某一个设备的选择操作,显示图10A所示的可调试进程UI界面。例如,响应于开发人员在调试服务器41的网络拓扑结构UI界面上选择智能手机的操作,调试服务器41可以显示图10A所示的可调试进程UI界面,供用开发人员进一步选择被调试进程。
假设本申请实施例中的调试***框架如图4所示,调试客户端A43、调试客户端B44的结构、调试服务器41、分布式设备集群42中的主设备(即图4所示智能手机)和从设备(即图4所示电视机、无线耳机、智能手表、音箱、PC、平板电脑、AR/VR设备和IOT设备)的结构如图5所示,其中调试客户端A43、调试客户端B 44和调试服务器41中的第二调试模块结构如图6A所示,以下将结合具体实施例以及附图,对本申请实施例提供的一种软件调试方法进行具体阐述。
实施例1:多设备调试多设备。
在本申请实施例1多设备调试多设备的场景中,开发人员可以通过调试设备对分布式设备集群42中的一个或多个从设备中的进程进行协同调试。其中,调试设备可以包括调试服务器41、调试客户端A43或调试客户端B 44中的至少两个,或者调试设备可以包括调试客户端A43或调试客户端B 44。被调试设备可以包括主设备和一个或多个从设备,或者被调试设备可以包括多个从设备,或者被调试设备可以包括一个从设备。
其中,若调试设备包括调试客户端A43和调试客户端B 44中的至少一个,则调试客户端A43或调试客户端B 44具体需要通过连接调试服务器41,实现上述对多个设备中多个进程的协同调试。
以下分别以示例1和示例2对本申请实施例1的多设备调试多设备的具体过程作介绍。
示例1、开发人员通过图5所示调试服务器41、调试客户端A43和调试客户端B 44对分布式设备集群42中的智能手机中的第一进程(如控制进程)、电视机中的第二进程(如视频播放进程)和音箱中的第三进程(如音频播放进程)进行协同调试。
例如,示例1的场景可以是智能手机的投屏场景,具体的,智能手机通过电视机播放视频,通过音箱播放音频。其中,如图11所示,本申请示例1的第一阶段(即调试命令生成阶段)可以包括以下步骤S1.1.1-S1.2.1:
S1.1.1、响应于接收到开发人员对可调试进程的选择操作,调试服务器41、调试客户端A43和调试客户端B 44确定对应被调试进程。
例如,假设响应于接收到开发人员A在调试服务器41的UI界面上对智能手机中的第一进程(如控制进程)的选择操作,响应于接收到开发人员B在调试客户端A43的UI界面上对电视机中的第二进程(如视频播放进程)的选择操作,以及响应于接收到开发人员C在调试客户端B 44的UI界面上对音箱中的第三进程(如音频播放进程)的选择操作,调试服务器41、调试客户端A43和调试客户端B 44分别确定第一进程、第二进程和第三进程为被调试进程。
示例性的,调试设备(如调试服务器41、调试客户端A43和调试客户端B 44)可以响应与开发人员在类似图10A所示的可调试进程UI界面上对某一可调试进程的选择操作,确定被调试进程。
进一步的,在调试设备(如调试服务器41、调试客户端A43和调试客户端B 44)响应与开发人员在类似图10A所示的可调试进程UI界面上对被调试进程的选择操作之后,调试设备还可以显示被调试设备中硬件设备状态,包括硬件设备的列表和详情等。在本申请实施例中,被调试设备中的硬件设备均可以被调试进程调用。如图10B所示,假设智能手机为被调试设备,智能手机中可以包括GPS、传感器、振动器、NFC、FM、安全芯片等中的一个或多个硬件设备。调试设备(如调试服务器41、调试客户端A43或调试客户端B 44)可以响应于接收到开发人员在如图10B所示的UI界面上的左侧选择框10-1中对硬件设备的选择操作,查看该硬件设备的详情。在开发人员选择被调试进程之后,如图10B所示,UI界面上的硬件详情框10-2可以显示具体的硬件设备详情。其中,图10B是以被调试进程调用GPS作为示例。
S1.2.1、调试服务器41、调试客户端A43和调试客户端B 44分别根据检测到的开发人员触发的调试事件生成调试命令。
例如,假设响应于接收到开发人员A在调试服务器41的UI界面上触发(如输入代码或者点击调试按钮)对智能手机中的第一进程(如控制进程)的第一调试事件,响应于接收到开发人员B在调试客户端A43的UI界面上触发(如输入)对电视机中的第二进程(如视频播放进程)的第二调试事件,以及响应于接收到开发人员C在调试客户端B 44的UI界面上触发(如输入)对音箱中的第三进程(如音频播放进程)的第三调试事件,调试服务器41、调试客户端A43和调试客户端B 44分别生成第一调试命令、第二调试命令和第三调试命令。
其中,在本申请实施例中,调试命令主要用于通过指示被调试进程根据该调试命令在对应程序指令处步入、步出、步过或运行等,以获取被调试进程在运行详情等信息。例如,调试设备(如调试服务器41、调试客户端A43或调试客户端B 44)可以根据开发人员在被调试进程(如第一进程、第二进程或第三进程)中设置的断点,生成调试命令(如第一调试命令、第二调试命令和第三调试命令)。
需要说明的是,对于步入、步出、步过等调试命令,在本申请实施例中,同一时间仅允许与被调试进程绑定的调试设备对该被调试进程进行调试。其中,被调试进程与调试设备的绑定关系可以根据被调试进程的标识(如ID)与调试设备的标识(如ID)的对应关系确定。
例如,若某一进程(如第二进程)被某调试设备(如调试客户端A43)占用,即第二进程与调试客户端A43绑定,则调试服务器41会将调试客户端A43与第二进程的绑定信息(如调试客户端A43的ID与第二进程的ID的绑定关系)记录到命令管理器中。当命令管理器在某一时刻接收到某一调试设备(如调试设备A)对第二进程新的调试命令时,命令管理器可以通过查看记录的绑定信息,判断发起新命令的调试设备A的ID是否与当前第二进程所绑定的调试客户端A43的ID一致。若一致,则调试服务器41允许该新命令向第二进程的下发;若不一致,则调试服务器41不允许该新命令向第二进程的下发。
通过上述调试服务器对步入、步出、步过等调试命令的管控,可以避免同一时刻多个开发人员通过多个调试设备对同一进程的不同调试,造成的互相干扰,影响调试过程的顺利进展以及调试数据的准确性。
需要说明的是,本申请实施例中调试命令(如第一调试命令、第二调试命令或第三调试命令)可以是断点命令。在本申请实施例中,断点可以包括但不限于以下中的任一种:数据断点、同步断点或条件断点。
其中,数据断点可以包括以下两种类型:
类型1:跨进程的公共数据断点。
对于公共数据,例如上述示例1中的控制指令数据、音频播放进度数据和视频播放进度数据,调试服务器41可以向主设备发送查询命令,以获取来自多个被调试设备的多个进程的公共数据。示例性的,若第一调试命令是数据断点命令,则主设备可以通过定时调用软总线接口,获取多个被调试设备(如智能手机和电视机)的公共数据,并上报至调试服务器41。调试服务器41可以记录公共数据随时间的变化,并且将该公共数据的时间流记录分发至调试客户端A43和调试客户端B 44,以便调试客户端A43和调试客户端B 44在UI界面上进行展示,便于开发人员对多个进程(如第一进程和第二进程)的公共数据的变化的监控和对比。
类型2:跨进程的私有数据断点。
对于进程私有数据,如上述示例1中电视机适配播放器获取视频流解析关键帧的过程中的局部变量,音箱适配播放器获取音频流解析关键帧的过程中的局部变量等,调试服务器41可以将多个调试设备(如调试服务器41、调试客户端A43和调试客户端B 44)设置的数据断点发送至对应被调试设备。例如,在上述示例1中,调试设备可以向电视机下发监听数据包ID的数据断点命令,电视机可以将该命令分发到视频播放对应的调试工具。若调试工具获取到相关进程私有数据,则通过主设备(如智能手机)返回给调试服务器41。调试服务器41通过将该私有数据同步到调试集群中的每一个调试设备(即调试服务器41、调试客户端A43和调试客户端B 44)上,以便每一个调试客户端可以在UI界面上对调试客户端的数据断点进行展示。例如,可以基于不同的调试客户端分页展示对应的数据断点。
同步断点是指多个进程约定在某一***时间同步断点。例如,在某一调试设备(如调试客户端A43)下发多个进程(如第一进程和第二进程)的同步断点命令之后,调试服务器41的命令管理器可以将该调试命令下发到主设备(如图5所示智能手机)中。主设备(如图5所示智能手机)根据该调试命令对应的进程号将其转发至对应的被调试设备(如电视机),以约定与电视机在某一***时间同步暂停对应的进程,以及在暂停对应的进程之后,将调试数据(包括线程信息、堆栈信息、变量数据等)通过主设备(如图5所示智能手机)上报至调试服务器41的断点管理器。调试服务器41的断点管理器将调试数据广播至每一个调试客户端(如调试客户端A43和调试客户端B 44),以便每一个调试客户端进行UI界面展示,便于开发人员对多个进程(如第一进程和第二进程)的调试数据进行时间点切片监控。例如,每一个调试客户端可以将调试数据以不同进程对比的形式展现,便于开发人员进行进一步跨进程的协同调试。
条件断点是指通过设置条件,以控制分布式设备集群中设备的一个或多个进程的断点。例如,若分布式设备集群中某一设备的某一变量(如设备状态)满足一定条件时,则该设备中的某一进程暂停,同时,分布式设备集群中的另一个设备可以获取该暂停进程的调试数据(例如包括堆栈信息)。
示例性的,在本申请实施例中,调试服务器41可以根据命令管理器获取的开发人员触发的跨进程条件断点的调试命令,将该调试命令解析为新增条件断点,并监听分布式设备集群中的对应设备是否满足相应条件。若分布式设备集群中的对应设备满足相应条件,则命令管理模块向该设备下发中断命令,以中断对应的进程。
例如,在示例1所示的智能手机的投屏场景中,为了解决音视频不同步的情况,可以设置在智能手机播放控制进程中播放进度到达2分30秒时,中断电视机的视频播放进程,查看视频解码器中的已经获取的数据包信息是否健康,同时获取电视机的适配视频播放进程的调试数据(例如可以包括播放进程等数据以及堆栈信息等)。具体的,该条件断点命令可以通过调试服务器41的命令管理器发送给智能手机的播放控制进程的调试器。智能手机播放控制进程中播放进度到达2分30秒(即条件断点触发)时,调试器会暂停该播放进度并向调试服务器41的命令管理器返回中断消息。调试服务器41的命令管理器在接收到来自智能手机的中断消息后,通过智能手机向电视机发送播放进程中断命令,以控制电视机中断视频播放进程。在电视机中断视频播放进程之后,调试服务器41的命令管理器从智能手机获取智能手机的当前堆栈信息,以及电视机通过智能手机转发的电视机的当前堆栈信息。之后,调试服务器41将获取的堆栈信息分发给对应调试设备。例如,调试服务器41将电视机的当前堆栈信息分发给调试该设备的调试客户端A43。
进一步的,在一些实施例中,当智能手机播放控制进程中播放进度到达2分30秒时,条件断点命令会被拆解为暂停电视机的视频播放进程的命令。那么,在调试服务器接收到智能手机转发的,电视机执行暂停视频播放进程的命令之后获取的调试数据时,仅将该调试数据分发给发起该条件断点的调试设备(如示例1中的调试客户端A43)。
在一些实施例中,发起该条件断点的调试设备(如示例1中的调试客户端A43)在接收到条件断点对应的调试数据时,可以不在UI界面上展示,而是作为下一个调试命令的触发条件。
进一步的,如图11所示,本申请示例1的第二阶段(即调试命令下发阶段)可以包括以下步骤S2.1.1-S2.2.1:
S2.1.1、调试服务器41、调试客户端A43和调试客户端B 44向智能手机发送调试命令。
在一些实施例中,若调试命令(如上述第二调试命令和第三调试命令)由调试客户端A43或调试客户端B 44根据检测到的开发人员触发的调试事件生成,则调试客户端A43或调试客户端B 44具体可以通过调试服务器41向智能手机(即主设备)发送调试命令。
在另一些实施例中,若调试命令(如上述第一调试命令)由调试服务器41根据检测到的开发人员触发的调试事件生成,则调试服务器41直接向智能手机(即主设备)发送调试命令。
其中,调试服务器41具体可以通过调试服务器41与智能手机之间的通信连接向智能手机(即主设备)发送调试命令。
可以理解,来自调试设备的调试命令通常对应于某一被调试设备中的某一被调试进程,因此,在本申请实施例中,第一调试命令、第二调试命令和第三调试命令中携带有调试命令对应的目标地址或者调试命令对应的设备标识(如设备ID)和进程标识(如进程号),以便调试服务器41和主设备在进行后续调试命令分发时,根据调试命令中携带的目标地址/设备标识将调试命令准确无误地转发至被调试设备。以及,便于后续被调试设备接收到调试命令时,可以准确无误地确定被调试进程。
S2.2.1、智能手机向被调试设备分发接收到的调试命令。
示例性的,智能手机在接收到来自调试服务器41的第一调试命令、第二调试命令和第三调试命令后,可以根据其携带的调试命令对应的目标地址/设备标识,将调试命令转发至对应的设备。例如,在图11所示示例1中,由于第一调试命令对应于智能手机中的进程,则第一调试命令中通常携带有智能手机的设备地址或者设备ID,在这种情况下,智能手机知道第一调试命令是对应于自己的,对第一调试命令不作转发。由于第二调试命令是对应于电视机中的进程,则第二调试命令中通常携带有电视机的设备地址或者设备ID,在这种情况下,智能手机会将第二调试命令转发至电视机。由于第三调试命令是对应于音箱中的进程,则第三调试命令中通常携带有音箱的设备地址或者设备ID,在这种情况下,智能手机会将第三调试命令转发至音箱。
需要说明的是,若上述第一调试命令、第二调试命令或第三调试命令为条件断点命令,例如第二调试命令和第三调试命令的条件为第一调试命令执行成功,则上述S2.1.1具体包括:调试服务器41向智能手机发送第一调试命令,在调试服务器41接收到来自智能手机的第一调试命令执行成功的信息之后,向智能手机发送第二试命令和第三调试命令。相应的,上述S2.2.1具体包括:智能手机向电视机分发接收到的第二调试命令,以及向音箱分发接收到的第三调试命令。
例如,若第一调试命令用于指示智能手机在某一***时间暂停第一进程,第二调试命令和第三调试命令的条件为第一调试命令执行成功,则智能手机在到达该***时间时暂停第一进程,同时向调试服务器41发送第一调试命令执行成功的信息。调试服务器41在接收到第一调试命令执行成功的信息之后,触发指示电视机和音箱分别执行第二调试命令和第三调试命令。
进一步的,如图11所示,本申请示例1的第三阶段(即调试阶段)可以包括以下步骤S3.1.1-S3.3.1:
S3.1.1、智能手机根据接收到的第一调试命令,对第一进程执行调试操作,获取第一调试数据。
例如,智能手机的分布式调试助手可以根据接收到的第一调试命令中携带的进程标识(如进程号),调用对应的调试工具对进程标识指示的第一进程(如控制进程)执行调试操作,获取第一调试数据。示例性的,在本申请实施例中,调试操作可以包括以下中的一种或多种:步入、步出、步过或运行等。
S3.2.1、电视机根据接收到的第二调试命令,对第二进程执行调试操作,获取第二调试数据。
例如,电视机的分布式调试助手可以根据接收到的第二调试命令中携带的进程标识(如进程号),调用对应的调试工具对进程标识指示的第二进程(如视频播放进程)执行调试操作,获取第二调试数据。
S3.3.1、音箱根据接收到的第三调试命令,对第三进程执行调试操作,获取第三调试数据。
例如,音箱的分布式调试助手可以根据接收到的第三调试命令中携带的进程标识(如进程号),调用对应的调试工具对进程标识指示的第三进程(如音频播放进程)执行调试操作,获取第三调试数据。
示例性的,若上述第一调试命令、第二调试命令和第三调试命令为同步断点命令,则智能手机、电视机和音箱按照调试命令在规定***时间同步暂停对应的进程,并且获取各自的调试数据(包括线程信息、堆栈信息、变量数据等)。
又如,若上述第一调试命令、第二调试命令或第三调试命令为条件断点命令,例如条件为第一调试命令执行成功,则电视机和音箱分别在智能手机执行第一调试命令成功时,执行第二调试命令和第三调试命令,并且获取各自的调试数据(例如可以包括播放进程等数据以及堆栈信息等)。
又如,若上述第一调试命令、第二调试命令和第三调试命令为数据断点命令,如跨进程的公共数据断点或进程私有数据,则手机、电视机和音箱获取对应进程的公共或者私有数据。
进一步的,如图11所示,本申请示例1的第四阶段(即调试信息返回阶段)可以包括以下步骤S4.1.1-S4.2.1:
S4.1.1、电视机向智能手机发送第二调试数据;音箱向智能手机发送第三调试数据。
例如,电视机和音箱可以分别通过各自的分布式调试助手将第二调试数据和第三调试数据发送给智能手机。
S4.2.1、智能手机将第一调试数据、第二调试数据和第三调试数据发送给调试服务器41。
例如,智能手机可以通过分布式调试助手将第一调试数据、第二调试数据和第三调试数据发送给调试服务器41的调试信息管理器。其中,第一调试数据、第二调试数据和第三调试数据中携带有被调试设备的设备标识(如设备ID)和被调试进程的进程标识(如进程号)。
示例性的,上述第一调试数据、第二调试数据和第三调试数据可以是被调试进程基于同步断点命令、条件断点命令或数据断点命令等的调试数据。例如,该调试数据可以包括进程暂停之后的线程信息、堆栈信息、帧、变量数据、播放进程数据、跨进程的公共数据或私有数据等。在一些实施例中,上述调试数据还可以包括调用信息。示例性的,调用信息可以包括进程调用过程记录(如远程过程调用(remote procedure call,RPC)模式的函数调用、web模式的网络调用、鸿蒙分布式调试***中分布式软总线注册能力的调用等)、函数调用时间、函数调用顺序、被调试设备名称或被调试设备类型等数据。被调试设备可以通过分布式调试助手将该调试数据发送给调试服务器的调试信息管理器。进一步的,如图11所示,本申请示例1的第五阶段(即调试信息展示阶段)可以包括以下步骤S5.1.1和S5.2.1:
S5.1.1、调试服务器41分发第一调试数据、第二调试数据和第三调试数据。
在本申请实施例中,调试服务器41在接收到智能手机发送的第一调试数据、第二调试数据和第三调试数据之后,可以根据其中携带的设备标识和进程标识确定调试数据对应的调试设备。
在一些实施例中,若调试服务器41根据调试数据中携带的设备标识和进程标识确定某一调试数据是对应于调试服务器41的调试命令,则步骤S5.1.1可以包括:调试服务器41将该调试数据通过UI界面展示给开发人员。例如,在图11所示的示例1中,调试服务器41根据第一调试数据中携带的智能手机的设备标识和第一进程的进程标识,确定第一调试数据对应于调试服务器41的第一调试命令。
在另一些实施例中,若调试服务器41根据调试数据中携带的设备标识和进程标识确定某一调试数据是对应于调试客户端的调试命令,则调试服务器41进行调试数据向调试客户端的分发,由调试客户端进行相应调试信息在UI界面上的展示。
例如,在图11所示的示例1中,调试服务器41根据第二调试数据中携带的电视机的设备标识和第二进程的进程标识,确定第二调试数据对应于调试客户端A43的第二调试命令,以及根据第三调试数据中携带的音箱的设备标识和第三进程的进程标识,确定第三调试数据对应于调试客户端B 44的第三调试命令,则调试服务器41将第二调试数据分发至调试客户端A43,以及将第三调试数据分发至调试客户端B 44。
S5.2.1、调试客户端A43和调试客户端B 44进行调试信息展示。
例如,在图11所示的示例1中,调试服务器41将第一调试数据通过UI界面展示给开发人员。调试客户端A43将第二调试数据通过UI界面展示给开发人员。调试客户端B 44将第三调试数据通过UI界面展示给开发人员。
在一些实施例中,在被调试设备(如智能手机、电视机和音箱)将调试数据(如第一调试数据、第二调试数据和第三调试数据)反馈给调试服务器41的调试信息管理器之后,调试服务器41的调试信息管理器可以将调试数据中的断点数据、中断进程的堆栈信息等保存在本地。
进一步的,在一些实施例中,调试服务器41还可以将保存在本地的调试数据中的断点数据、中断进程的堆栈信息等数据发送给参与协同调试的每一个调试设备。
例如,调试服务器41的调试信息管理器可以将保存在本地的调试数据中的断点数据、中断进程的堆栈信息等数据同时发送给调试集群中参与协同调试的每一个调试设备,以便每一个协同调试设备可以在有查看需求时,随时通过在UI界面上新增tab页,向开发人员展示相关调试结果。
又如,调试服务器41的调试信息管理器可以在协同调试的调试客户端(如调试客户端A43)有查看诉求时,接收协同调试的调试设备的请求,将保存在本地的调试数据中的断点数据、中断进程的堆栈信息等数据发送给该调试客户端。例如,将上述来自智能手机的第一调试数据和来自电视机的第二调试数据中的断点数据、中断进程的堆栈信息等发送给调试客户端A44,以便调试客户端A44可以通过在UI界面上新增tab页,向开发人员展示相关调试结果。
另外,调试服务器41的调试信息管理器可以将调试数据中的步入、步出、步过、运行、暂停等调试操作对应的数据分发给发出对应调试命令的调试设备。对于其他调试设备,上述步入、步出、步过、运行、暂停等调试操作对应的数据则不被允许获取。
需要说明的是,上述协同调试的调试客户端可以在被调试进程不运行时,通过向调试服务器发送查看请求获取上述调试数据,实现不需要复现程序执行场景就能定位问题的能力。以上调试手段通常被称为时光调试。时光调试的原理是通过对调试过程中的调用信息进行记录,以实现在不需要复现程序执行场景的情况下,定位进程执行中的问题(例如很难复现的问题)。
其中,在开启时光调试之后,被调试设备可以通过分布式调试助手针对函数(例如鸿蒙分布式调试***中的分布式软总线注册的能力对应的函数)下发非阻塞性函数断点,以及向调试设备发送非阻塞性行断点。例如在示例1的智能手机的投屏场景中,在智能手机播放控制界面暂停按钮被触发时,智能手机的播放控制进程会根据非阻塞性函数断点调用电视机的播放暂停分布式接口,调用信息(例如被调试设备中被调用的能力信息,函数调用顺序,调用的参数,调用发起时间点以及调用结束时间点等)可以通过智能手机反馈至调试服务器。例如,在示例1的场景中,上述调用信息有助于在不需要复现程序执行场景的情况下,定位智能手机暂停,电视机播放响应慢或者不响应,音箱播放响应慢或者不响应,或者音箱与电视机播放不同步等问题。示例性的,根据电视机暂停接口被调用到的时间点和智能手机发起调用的时间点的时间差长短,便可以确定分布式软总线是否存在问题。具体的,若上述时间差太长,即视频流由智能手机传输到电视机花费太多时间,则可以着重看分布式软总线是否存在问题。若上述时间差较短,则可以通过反复调用电视机的暂停接口,以定位电视机的具体问题。
其中,在本申请实施例中,调试服务器41可以执行对调试设备的断点分权管理。其中,对调试设备的断点分权管理是指根据权限对调试设备对断点的修改或删除等操作进行管控。
例如,调试服务器41可以在有新增断点时,将断点所在的代码行、新增断点的标识信息(包括新增断点的调试设备的标识信息)等记录到断点管理器中。当调试服务器41收到某一调试设备(如调试客户端A43)对某一断点(如第一进程的断点A)的修改或删除事件时,调试服务器41的断点管理器可以通过查看记录的新增该断点A的调试设备的标识信息,以检测发起修改或删除事件的调试设备A的ID是否与新增该断点A的调试客户端A43的ID一致。若一致,则调试服务器41允许调试设备A对断点A进行修改或删除;若不一致,则不允许调试设备A对断点A进行修改或删除。
需要说明的是,在本申请实施例中,任何调试设备(如示例1中的调试服务器41、调试客户端A43和调试客户端B 44)均可以对智能手机中的第一进程(即控制进程)代码、电视机中的第二进程(即视频播放进程)代码、音箱中的第三进程(即音频播放)代码新增断点。其中,新增的断点操作的相关信息都会记录在调试服务器41的断点管理器中。例如,新增断点的调试设备标识、断点类型、断点所在代码文件、断点所在代码行等。
进一步的,每一个被调试进程的断点对于调试集群中的调试设备均可见。当某一个断点被捕获(即进程执行到指定断点暂停)时,调试集群中的调试设备都能看到暂停的进程的堆栈信息。
示例2:开发人员通过调试服务器41和调试客户端A43对分布式设备集群42中电视机中的第四进程(如视频播放进程)和音箱中的第五进程(如音频播放进程)进行协同调试。
例如,示例2的场景可以是音箱与电视机协同播放的场景,其中音箱用于播放音频,电视机用于播放视频。例如示例2可以用于解决电视机与音箱的音画不同步的问题。其中,与图11所示示例1类似,如图12所示,本申请示例2的第一阶段(即调试命令生成阶段)主要包括调试设备确定被调试进程,以及调试设备根据开发人员触发的调试事件生成调试命令。以调试设备是调试服务器41和调试客户端A43,调试服务器41根据开发人员触发的调试事件对分布式设备集群42中电视机中的第四进程(如视频播放进程),调试客户端A43根据开发人员触发的调试事件对分布式设备集群42中音箱中的第五进程(如音频播放进程)进行协同调试为例,如图12所示,第一阶段(即调试命令生成阶段)可以包括以下步骤S1.1.2-S1.2.2:
S1.1.2、响应于接收到开发人员对可调试进程的选择操作,调试服务器41和调试客户端A43确定对应被调试进程。
S1.2.2、调试服务器41和调试客户端A43分别根据检测到的开发人员触发的调试事件生成调试命令。
进一步的,本申请示例2的第二阶段(即调试命令下发阶段)主要包括调试设备向主设备的调试命令发送,以及主设备向从设备的调试命令分发。如图12所示,本申请示例2的第二阶段(即调试命令下发阶段)可以包括以下步骤S2.1.2-S2.2.2:
S2.1.2、调试服务器41和调试客户端A43向智能手机发送调试命令。
S2.2.2、智能手机向被调试设备分发接收到的调试命令。
例如,在图12所示示例2中,由于第四调试命令是对应于电视机中的进程,则第四调试命令中通常携带有电视机的设备地址或者设备ID,在这种情况下,智能手机会将第四调试命令转发至电视机。由于第五调试命令是对应于音箱中的进程,则第五调试命令中通常携带有音箱的设备地址或者设备ID,在这种情况下,智能手机会将第五调试命令转发至音箱。
进一步的,本申请示例2的第三阶段(即调试阶段)主要包括被调试设备执行调试操作,以及调试数据的获取。如图12所示,本申请示例2的第三阶段(即调试阶段)可以包括以下步骤S3.1.2-S3.2.2:
S3.1.2、电视机根据接收到的第四调试命令,对第四进程执行调试操作,获取第四调试数据。
S3.2.2、音箱根据接收到的第五调试命令,对第五进程执行调试操作,获取第五调试数据。
进一步的,本申请示例2的第四阶段(即调试信息返回阶段)主要包括从设备向主设备的调试数据发送,以及主设备向调试服务器的调试数据转发。如图12所示,本申请示例2的第四阶段(即调试信息返回阶段)可以包括以下步骤S4.1.2-S4.2.2:
S4.1.2、电视机向智能手机发送第四调试数据;音箱向智能手机发送第五调试数据。
S4.2.2、智能手机将第四调试数据和第五调试数据发送给调试服务器41。
进一步的,本申请示例2的第五阶段(即调试信息展示阶段)主要包括调试数据的分发和调试信息的展示。如图12所示,本申请示例2的第五阶段(即调试信息展示阶段)可以包括以下步骤S5.1.2和S5.2.2:
S5.1.2、调试服务器41分发第四调试数据和第五调试数据。
S5.2.2、调试服务器41和调试客户端A43进行调试信息展示。
例如,在图12所示的示例2中,调试服务器41和调试客户端A43可以分别将第四调试数据和第五调试数据通过UI界面展示给开发人员。其中,关于图12所示示例2的具体步骤执行过程,可以参考上文中对图11所示示例1的具体步骤的介绍和说明,这里不做赘述。
在本申请实施例中,上述示例1和示例2均是以多个调试客户端和调试服务器协同调试连个设备中的进程作为示例。本申请实施例提供的一种软件调试方法对于跨多个进程的软件调试均适用。
需要说明的是,上述示例1是以多个调试客户端和调试服务器协同调试主设备和一个从设备中的进程作为示例,上述示例2是多个调试客户端和调试服务器协同调试与主设备连接的两个从设备中的进程作为示例。对于其他多设备调试多设备的场景,可以参考上述示例1或示例2所示的软件调试方法,本申请实施例中不做赘述。需要注意的是,在一个调试客户端通过调试服务器调试与主设备连接的一个从设备中的进程的场景中,或者多个调试客户端通过调试服务器调试与主设备连接的一个从设备中的进程的场景中,主设备仅作为一个命令分发与协调,以及调试数据转发装置。
另外,上述示例1和示例2是以多设备调试相互关联的多进程作为示例的。对于不同进程之间的无关联性的独立功能,则可以按照常规方法独立进行单步调试。例如,调试服务器的命令管理器可以将调试命令下发到主设备,主设备再根据调试命令中携带的调试命令对应的目标地址或者设备ID,将调试命令分发到对应的被调试设备。被调试设备再根据调试命令中携带的调试命令对应的进程号对相应进程进行调试操作,获取调试数据。最后,被调试设备将获取的调试数据通过主设备反馈给调试服务器的调试信息管理器,并由调试信息管理器将调试数据分发到对应的调试设备。
通过类似上述实施例1中示例1或示例2所示的软件调试方法,可以实现多调试设备对分布式设备集群中多个被调试设备的跨设备协同调试。例如,在类似图1所示的分布式场景中,可以对协同工作的多个设备进行跨进程协同调试。另外,还可以实现多个开发人员通过多个调试设备对类似图1所示的分布式场景中的协同工作的多个设备进行跨进程协同调试。通过这样的调试方法,大大提高了开发人员进行进程调试时的效率以及质量。
实施例2:单设备调试多设备。
在本申请实施例2单设备调试多设备的场景中,开发人员可以通过调试服务器41对分布式设备集群42中的一个或多个设备中的进程进行调试。其中,被调试设备可以包括主设备和一个或多个从设备,或者被调试设备可以包括多个从设备,或者被调试设备可以包括一个从设备。
以下以示例3对本申请实施例2的单设备调试多设备的具体过程作介绍。
示例3、开发人员通过调试服务器41对分布式设备集群42中智能手机)中的第六进程(如控制进程)和电视机中的第七进程(如视频播放进程)进行协同调试。
例如,示例1的场景可以是智能手机向电视机投屏的场景。例如示例2可以用于解决智能手机与电视机控制不同步的问题。其中,与图11所示示例1类似,如图13所示,本申请示例3的第一阶段(即调试命令生成阶段)主要包括调试设备确定被调试进程,以及调试设备根据开发人员触发的调试事件生成调试命令。以调试设备是调试服务器41,调试服务器41根据开发人员触发的调试事件对分布式设备集群42中的智能手机中的第六进程(如控制进程)和对电视机中的第七进程(如视频播放进程)进行协同调试为例,如图13所示,第一阶段(即调试命令生成阶段)可以包括以下步骤S1.1.3-S1.2.3:
S1.1.3、响应于接收到开发人员对可调试进程的选择操作,调试服务器41确定被调试进程。
S1.2.3、调试服务器41根据检测到的开发人员触发的调试事件生成调试命令。
进一步的,本申请示例3的第二阶段(即调试命令下发阶段)主要包括调试设备向主设备的调试命令发送,以及主设备向从设备的调试命令分发。如图13所示,本申请示例3的第二阶段(即调试命令下发阶段)可以包括以下步骤S2.1.3-S2.2.3:
S2.1.3、调试服务器41向智能手机发送调试命令。
S2.2.3、智能手机向被调试设备分发接收到的调试命令。
例如,在图13所示示例3中,由于第六调试命令对应于智能手机中的进程,则第六调试命令中通常携带有智能手机的设备地址或者设备ID,在这种情况下,智能手机不对第六调试命令作转发。由于第七调试命令对应于电视机中的进程,则第七调试命令中通常携带有电视机的设备地址或者设备ID,在这种情况下,智能手机会将第七调试命令转发至电视机。
进一步的,本申请示例3的第三阶段(即调试阶段)主要包括被调试设备执行调试操作,以及调试数据的获取。如图13所示,本申请示例3的第三阶段(即调试阶段)可以包括以下步骤S3.1.3-S3.2.3:
S3.1.3、智能手机根据接收到的第六调试命令,对第六进程执行调试操作,获取第六调试数据。
S3.2.3、电视机根据接收到的第七调试命令,对第七进程执行调试操作,获取七调试数据。
进一步的,本申请示例3的第四阶段(即调试信息返回阶段)主要包括从设备向主设备的调试数据发送,以及主设备向调试服务器的调试数据转发。如图13所示,本申请示例3的第四阶段(即调试信息返回阶段)可以包括以下步骤S4.1.3-S4.2.3:
S4.1.3、电视机向智能手机发送第七调试数据。
S4.2.3、智能手机将第六调试数据和第七调试数据发送给调试服务器41。
进一步的,本申请示例3的第五阶段(即调试信息展示阶段)主要包括调试信息的展示。如图13所示,本申请示例3的第五阶段(即调试信息展示阶段)可以包括以下步骤S5.1.3:
S5.1.3、调试服务器41进行调试信息展示。
例如,在图13所示的示例3中调试服务器41将第六调试数据和第七调试数据对应的调试信息通过UI界面展示给开发人员。
其中,关于图13所示示例3的具体步骤执行过程,可以参考上文中对图11所示示例1的具体步骤的介绍和说明,这里不做赘述。
需要说明的是,上述示例3是以调试服务器调试主设备和一个从设备中的进程作为示例。对于其他单设备调试多设备的场景,可以参考上述示例3所示的软件调试方法,本申请实施例中不做赘述。需要注意的是,在调试服务器调试与主设备连接的一个从设备中的进程的场景中,或者调试服务器调试与主设备连接的多个从设备中的进程的场景中,主设备仅作为一个命令分发与协调,以及调试数据转发装置。
另外,上述示例3是以单设备调试相互关联的多进程作为示例的。对于不同进程之间的无关联性的独立功能,则可以按照常规方法独立进行单步调试。例如,调试服务器的命令管理器可以将调试命令下发到主设备,主设备再根据调试命令中携带的调试命令对应的目标地址或者设备ID,将调试命令分发到对应的被调试设备。被调试设备再根据调试命令中携带的调试命令对应的进程号对相应进程进行调试操作,获取调试数据。最后,被调试设备将获取的调试数据通过主设备反馈给调试服务器的调试信息管理器,并由调试信息管理器将调试数据分发到对应的调试设备。
通过类似上述实施例2中示例3所示的软件调试方法,可以实现调试设备对分布式设备集群中多个被调试设备的跨设备协同调试。例如,在类似图1所示的分布式场景中,可以对协同工作的多个设备进行跨进程协同调试。通过这样的调试方法,大大提高了开发人员进行进程调试时的效率以及质量。
实施例3:多设备调试单设备。
在本申请实施例3多设备调试单设备的场景中,开发人员可以通过调试设备对分布式设备集群42中的一个设备中的进程进行协同调试。其中,调试设备可以包括调试服务器41、调试客户端A43或调试客户端B 44中的至少两个,或者调试设备可以包括调试客户端A43或调试客户端B 44。被调试设备包括主设备。
其中,若调试设备包括调试客户端A43和调试客户端B 44中的至少一个,则调试客户端A43或调试客户端B 44具体需要通过连接调试服务器41,实现上述对主设备中的进程的协同调试。
以下以示例4对本申请实施例3的多设备调试单设备的具体过程作介绍。
示例4、开发人员通过调试服务器41、调试客户端A43和调试客户端B 44对分布式设备集群42中的智能手机(即主设备)中的第八进程(如控制进程、视频播放进程、音频播放进程、导航进程、即时通信进程等)进行协同调试。
例如,示例4的场景可以是多个开发人员对智能手机中一个进程中的不同执行过程进行调试的场景。其中,与图11所示示例1类似,如图14所示,本申请示例4的第一阶段(即被调试进程确定阶段)主要包括调试设备确定被调试进程,以及调试设备根据开发人员触发的调试事件生成调试命令。以调试设备是调试服务器41、调试客户端A43和调试客户端B44,调试服务器41、调试客户端A43和调试客户端B 44分别根据开发人员触发的调试事件对分布式设备集群42中智能手机中的第八进程中的不同执行过程进行调试为例,如图14所示,第一阶段(即调试命令生成阶段)可以包括以下步骤S1.1.4-S1.2.4:
S1.1.4、响应于接收到开发人员对可调试进程的选择操作,调试服务器41、调试客户端A43和调试客户端B 44确定对应被调试进程。
S1.2.4、调试服务器41、调试客户端A43和调试客户端B 44分别根据检测到的开发人员触发的调试事件生成调试命令。
进一步的,本申请示例4的第二阶段(即调试命令下发阶段)主要包括调试设备向主设备的调试命令发送。如图14所示,本申请示例4的第二阶段(即调试命令下发阶段)可以包括以下步骤S2.1.4:
S2.1.4、调试服务器41、调试客户端A43和调试客户端B 44向智能手机发送调试命令。
进一步的,本申请示例4的第三阶段(即调试阶段)主要包括被调试设备执行调试操作,以及调试数据的获取。如图14所示,本申请示例4的第三阶段(即调试阶段)可以包括以下步骤S3.1.4:
S3.1.4、智能手机根据接收到的第八调试命令、第九调试命令和第十调试命令,对第八进程执行对应的调试操作,分别获取第八调试数据、第九调试数据和第十调试数据。
进一步的,本申请示例4的第四阶段(即调试信息返回阶段)主要包括主设备向调试服务器的调试数据转发。如图14所示,本申请示例4的第四阶段(即调试信息返回阶段)可以包括以下步骤S4.1.4:
S4.1.4、智能手机将第八调试数据、第九调试数据和第十调试数据发送给调试服务器41。
进一步的,本申请示例4的第五阶段(即调试信息展示阶段)主要包括调试数据的分发和调试信息的展示。如图14所示,本申请示例4的第五阶段(即调试信息展示阶段)可以包括以下步骤S5.1.4和S5.2.4:
S5.1.4、调试服务器41分发第八调试数据、第九调试数据和第十调试数据。
S5.2.4、调试服务器41、调试客户端A43和调试客户端B 44进行调试信息展示。
例如,在图14所示的示例4中,调试服务器41、调试客户端A43和调试客户端B 44分别将第八调试数据、第九调试数据和第十调试数据通过UI界面展示给开发人员。
其中,关于图14所示示例4的具体步骤执行过程,可以参考上文中对图11所示示例1的具体步骤的介绍和说明,这里不做赘述。
需要说明的是,上述示例4是以多个调试客户端和调试服务器协同调试主设备中的进程作为示例。对于其他多设备调试单设备的场景,可以参考上述示例4所示的软件调试方法,本申请实施例中不做赘述。
通过类似上述实施例3中示例4所示的软件调试方法,可以实现多个调试设备对分布式设备集群中某一设备中的进程的协同调试。通过这样的调试方法,大大提高了开发人员进行进程调试时的效率以及质量。
在一些实施例中,开发人员还可以基于本申请实施例提供的调试***框架实现其他场景中对软件的灵活调试,例如单设备对单设备的调试,即实现调试服务器对主设备中的进程的调试。示例性的,在单设备调试单设备的场景中,本申请实施例提供的一种软件调试方法可以包括以下几个步骤:
步骤1:响应于接收到开发人员对可调试进程的选择操作,调试服务器41确定被调试进程。
步骤2:调试服务器41根据开发人员触发的调试事件生成调试命令。
步骤3:调试服务器41根据检测到的开发人员的调试事件,向智能手机发送调试命令。
步骤4:智能手机根据接收到的调试命令,执行对应的调试操作,获取调试数据。
步骤5:智能手机将获取的调试数据发送给调试服务器41。
步骤6:调试服务器41进行调试信息展示。
关于上述步骤可以参考上述对示例1、示例2、示例3和示例4的描述,这里不做赘述。
应理解,本申请实施例的各个方案可以进行合理的组合使用,并且实施例中出现的各个术语的解释或说明可以在各个实施例中互相参考或解释,对此不作限定。
还应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
可以理解的是,电子设备(如第一设备、第二设备、第三设备或第四设备)为了实现上述任一个实施例的功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以对电子设备(如第一设备、第二设备、第三设备或第四设备)进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,以采用集成的方式划分各个功能模块的情况下,如图15所示,为本申请实施例提供的一种电子设备的结构框图。该电子设备可以是第一设备、第二设备、第三设备或第四设备。如图15所示,该电子设备可以包括处理单元1510和收发单元1520。
进一步的,在一种可能的结构中,如图15所示,电子设备还可以包括存储单元1530。
其中,在电子设备是第一设备时,收发单元1520用于从第二设备接收对应于第三设备中的第一进程的第一调试命令,向第三设备发送第一调试命令;从第三设备接收第一调试数据;以及,将第一调试数据发送给第二设备;和/或用于本文所描述的技术的其他过程。其中,第一调试命令中携带有第三设备的标识和第一进程的标识;第一调试数据是第三设备对第一进程执行第一调试命令,获取的调试数据;第一调试数据中携带有第三设备的标识和第一进程的标识。处理单元1510用于根据第一调试数据中携带的第三设备的标识和第一进程的标识,确定将第一调试数据通过收发单元1520发送给第二设备;和/或用于本文所描述的技术的其他过程。
进一步的,在一些实施例中,收发单元1520还用于向第二调试模块发送开发人员通过第一设备触发的,对应于第四设备中的第二进程的第二调试命令;向第三设备发送第二调试命令;以及,从第三设备接收第二调试数据;和/或用于本文所描述的技术的其他过程。其中,第二进程与第一进程相关联,第二调试命令中携带有第四设备的标识和第二进程的标识;第二调试数据是第四设备对所述第二进程执行第二调试命令,获取的调试数据;第二调试数据中携带有第四设备的标识和第二进程的标识。处理单元1510还用于,根据第二调试数据中携带的第四设备的标识和第二进程的标识确定由第一设备向开发人员展示第二调试数据。
在电子设备是第三设备时,收发单元1520用于从第一设备接收第一调试命令;向第一设备发送第一调试数据;和/或用于本文所描述的技术的其他过程。处理单元1510用于根据第一调试命令中携带的第三设备的标识和第一进程的标识,调用第三设备中的调试工具,对第一进程执行第一调试命令,获取第一调试数据;和/或用于本文所描述的技术的其他过程。
进一步的,在一些实施例中,收发单元1520还用于从第一设备接收第二调试命令;向第一设备发送第二调试数据;从第四设备接收第二调试数据;和/或用于本文所描述的技术的其他过程。处理单元1510用于根据第二调试命令中携带的第四设备的标识,将第二调试命令发送至第四设备;和/或用于本文所描述的技术的其他过程。
在电子设备是第二设备时,处理单元1510用于根据开发人员触发的调试操作生成调试命令,与第一设备进行调试集群组网,和/或用于本文所描述的技术的其他过程。收发单元1520用于向第一设备发送第一调试命令/第二调试命令,从第一设备接收第一调试数据/第二调试数据,和/或用于本文所描述的技术的其他过程。
在电子设备是第四设备时,收发单元1520用于从第三设备接收第一调试命令/第二调试命令,向第三设备发送第一调试数据/第二调试数据,向第三设备发送可调试进程的信息,和/或用于本文所描述的技术的其他过程。
需要说明的是,上述收发单元1520可以包括射频电路。具体的,电子设备可以通过射频电路进行无线信号的接收和发送。通常,射频电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频电路还可以通过无线通信和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***、通用分组无线服务、码分多址、宽带码分多址、长期演进、电子邮件、短消息服务等。
在一种可选的方式中,当使用软件实现数据传输时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地实现本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
结合本申请实施例所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于电子设备中。当然,处理器和存储介质也可以作为分立组件存在于电子设备中。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在一种可选的方式中,本申请提供一种调试***,该调试***包括第一设备、第二设备、第三设备和第四设备,该第一设备、第二设备、第三设备和第四设备用于实现本申请提供的任一种可能的实现方式中的方法。
在一种可选的方式中,本申请提供一种芯片***,该芯片***包括处理器、存储器,存储器中存储有指令;当指令被处理器执行时,实现本申请提供的任一种可能的实现方式中的方法。该芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
在本申请所提供的几个实施例中,应该理解到,所揭露的电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (38)

1.一种软件调试方法,其特征在于,所述方法包括:
第一设备从第二设备接收第一调试命令,所述第一调试命令对应于第三设备中的第一进程,所述第一调试命令中携带有所述第三设备的标识和所述第一进程的标识;
所述第一设备向所述第三设备发送所述第一调试命令;
所述第一设备从所述第三设备接收第一调试数据,所述第一调试数据是所述第三设备对所述第一进程执行所述第一调试命令后获取的调试数据,所述第一调试数据中携带有所述第三设备的标识和所述第一进程的标识;
所述第一设备将所述第一调试数据发送给所述第二设备。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于用户触发的调试事件,所述第一设备获取第二调试命令;所述第二调试命令对应于第四设备中的第二进程,所述第二进程与所述第一进程相关联,所述第二调试命令中携带有所述第四设备的标识和所述第二进程的标识;
所述第一设备向所述第三设备发送所述第二调试命令;
所述第一设备从所述第三设备接收第二调试数据,所述第二调试数据是所述第四设备对所述第二进程执行所述第二调试命令后获取的调试数据,所述第二调试数据是所述第四设备对所述第二进程执行所述第二调试命令后向所述第三设备发送的,所述第二调试数据中携带有所述第四设备的标识和所述第二进程的标识。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一设备从所述第二设备接收第三调试命令,所述第三调试命令对应于第四设备中的第三进程,所述第三调试命令中携带有所述第四设备的标识和所述第三进程的标识;
所述第一设备向所述第三设备发送所述第三调试命令;
所述第一设备从所述第三设备接收第三调试数据,所述第三调试数据是所述第四设备对所述第三进程执行所述第三调试命令后获取的调试数据,第三调试数据是所述第四设备对所述第三进程执行所述第三调试命令后向所述第三设备发送的,所述第三调试数据中携带有所述第四设备的标识和所述第三进程的标识;所述第一设备将所述第三调试数据发送给所述第二设备。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述第一设备接收来自所述第二设备的查看请求;
响应于所述查看请求,所述第一设备向所述第二设备发送所述第二调试数据。
5.根据权利要求2或4所述的方法,其特征在于,在所述第一设备从所述第三设备接收第二调试数据之后,所述方法还包括:
所述第一设备通过用户界面UI界面显示所述第二调试数据。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
所述第一设备通过用户界面UI界面显示所述第一调试数据。
7.根据权利要求2-6中任一项所述的方法,其特征在于,
所述第一设备与所述第二设备通信连接;所述第一设备与所述第三设备通信连接,所述第三设备与所述第四设备通信连接。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述第一设备将所述第一调试数据发送给所述第二设备,包括:
所述第一设备根据所述第一调试数据中携带的所述第三设备的标识和所述第一进程的标识,将所述第一调试数据发送给所述第二设备。
9.根据权利要求2-8中任一项所述的方法,其特征在于,在所述第一设备从所述第二设备接收所述第一调试命令之前,所述方法还包括:
所述第一设备向所述第三设备发送发现可调试进程的命令,所述发现可调试进程的命令用于发现可调试进程;
所述第一设备从所述第三设备接收可调试进程信息,所述可调试进程信息中包括所述第三设备和所述第四设备发现的可调试进程的信息。
10.根据权利要求9所述的方法,其特征在于,所述可调试进程的信息包括所述第一进程的信息、所述第二进程的信息和所述第三进程的信息。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述第一调试命令包括断点命令和/或时光调试命令。
12.根据权利要求11所述的方法,其特征在于,所述断点命令包括以下中的一种或多种:数据断点命令、同步断点命令或条件断点命令。
13.一种软件调试方法,其特征在于,所述方法包括:
第三设备从第一设备接收第一调试命令,所述第一调试命令对应于第三设备中的第一进程,所述第一调试命令中携带有所述第三设备的标识和所述第一进程的标识;
所述第三设备根据所述第一调试命令中携带的所述第三设备的标识和所述第一进程的标识,对所述第一进程执行所述第一调试命令,获取第一调试数据,所述第一调试数据中携带有所述第三设备的标识和所述第一进程的标识;
所述第三设备向所述第一设备发送所述第一调试数据。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述第三设备从所述第一设备接收第二调试命令,所述第二调试命令对应于第四设备中的第二进程,所述第二进程与所述第一进程相关联,所述第二调试命令中携带有所述第四设备的标识和所述第二进程的标识;
所述第三设备根据所述第二调试命令中携带的所述第四设备的标识,将所述第二调试命令发送至所述第四设备;
所述第三设备从所述第四设备接收第二调试数据,所述第二调试数据是所述第四设备对所述第二进程执行所述第二调试命令后获取的调试数据,所述第二调试数据中携带有所述第四设备的标识和所述第二进程的标识;
所述第三设备向所述第一设备发送所述第二调试数据。
15.根据权利要求13所述的方法,其特征在于,所述方法还包括:
第三设备从第一设备接收第三调试命令,所述第三调试命令对应于第四设备中的第三进程,所述第三调试命令中携带有所述第四设备的标识和所述第三进程的标识;
所述第三设备根据所述第三调试命令中携带的所述第四设备的标识,将所述第三调试命令发送至所述第四设备;
所述第三设备从所述第四设备接收第三调试数据,所述第三调试数据是所述第四设备对所述第三进程执行所述第三调试命令后获取的调试数据,所述第三调试数据中携带有所述第四设备的标识和所述第三进程的标识;
所述第三设备向所述第一设备发送所述第三调试数据。
16.根据权利要求14或15所述的方法,其特征在于,在所述第三设备从所述第一设备接收所述第一调试命令之前,所述方法还包括:
所述第三设备进行设备发现,以及在发现第四设备之后,与所述第四设备建立通信连接;所述第三设备与所述第一设备通信连接。
17.根据权利要求16所述的方法,其特征在于,在与所述第四设备建立通信连接之后,所述方法还包括:
所述第三设备从所述第一设备接收发现可调试进程的命令;
所述第三设备向所述第四设备发送所述发现可调试进程的命令;
所述第三设备发现第一可调试进程,所述第一可调试进程包括所述第一进程;
所述第三设备从所述第四设备的接收所述第四设备发现的第二可调试进程的信息,所述第二可调试进程包括所述第二进程和所述第三进程;
所述第三设备向所述第一设备发送可调试进程的信息;所述可调试进程的信息包括所述第一可调试进程的信息和所述第二可调试进程的信息。
18.根据权利要求13-17中任一项所述的方法,其特征在于,所述第一调试命令包括断点命令和/或时光调试命令。
19.根据权利要求18所述的方法,其特征在于,所述断点命令包括以下中的一种或多种:数据断点命令、同步断点命令或条件断点命令。
20.一种第一设备,其特征在于,所述第一设备包括:
第二调试模块,用于从第二设备接收第一调试命令;
向第三设备发送所述第一调试命令;
从所述第三设备接收第一调试数据;以及,
将所述第一调试数据发送给所述第二设备;
其中,所述第一调试命令对应于第三设备中的第一进程,所述第一调试命令中携带有所述第三设备的标识和所述第一进程的标识;所述第一调试数据是所述第三设备对所述第一进程执行所述第一调试命令后获取的调试数据,所述第一调试数据中携带有所述第三设备的标识和所述第一进程的标识。
21.根据权利要求20所述的第一设备,其特征在于,所述第一设备还包括:
框架层,用于响应于用户触发的调试事件,获取第二调试命令;以及向所述第二调试模块发送所述第二调试命令;所述第二调试命令对应于第四设备中的第二进程,所述第二进程与所述第一进程相关联,所述第二调试命令中携带有所述第四设备的标识和所述第二进程的标识;
第二调试模块还用于,向所述第三设备发送所述第二调试命令;以及,从所述第三设备接收第二调试数据,所述第二调试数据是所述第四设备对所述第二进程执行所述第二调试命令后获取的调试数据,所述第二调试数据中携带有所述第四设备的标识和所述第二进程的标识。
22.根据权利要求21所述的第一设备,其特征在于,
所述第二调试模块还用于,向所述框架层发送所述第一调试数据,以便于所述框架层通过用户界面UI界面显示所述第一调试数据。
23.根据权利要求21或22所述的第一设备,其特征在于,
所述第二调试模块还用于,接收来自所述第二设备的查看请求,向所述第二设备发送所述第二调试数据。
24.根据权利要求20所述的第一设备,其特征在于,
所述第二调试模块还用于,从所述第二设备接收第三调试命令;所述第三调试命令对应于第四设备中的第三进程,所述第三进程与所述第一进程相关联,所述第三调试命令中携带有所述第四设备的标识和所述第三进程的标识;以及,
向所述第三设备发送所述第三调试命令;以及,从所述第三设备接收第三调试数据;所述第三调试数据是所述第四设备对所述第三进程执行所述第三调试命令后获取的调试数据,所述第三调试数据中携带有所述第四设备的标识和所述第三进程的标识。
25.根据权利要求24所述的第一设备,其特征在于,
所述第二调试模块还用于,向所述框架层发送所述第三调试数据,以便于所述框架层通过用户界面UI界面显示所述第三调试数据。
26.根据权利要求21-25中任一项所述的第一设备,其特征在于,所述第二调试模块还用于,
与所述第二设备建立通信连接,过所述第一设备与所述第三设备通信连接。
27.根据权利要求20-26中任一项所述的第一设备,其特征在于,所述第二调试模块具体用于,
根据所述第一调试数据中携带的所述第三设备的标识和所述第一进程的标识,将所述第一调试数据发送给所述第二设备。
28.根据权利要求20-27中任一项所述的第一设备,其特征在于,所述第二调试模块还用于,
向所述第三设备发送发现可调试进程的命令,用于发现可调试进程;以及,
从所述第三设备接收可调试进程信息,所述可调试进程信息中包括所述第三设备和所述第四设备发现的可调试进程的信息。
29.一种第三设备,其特征在于,所述第三设备包括:
分布式调试助手,用于从第一设备接收第一调试命令;根据所述第一调试命令中携带的第三设备的标识和第一进程的标识,调用所述第三设备中的调试工具,对所述第一进程执行所述第一调试命令,获取第一调试数据;以及,向所述第一设备发送所述第一调试数据;
其中,所述第一调试命令对应于第三设备中的第一进程,所述第一调试数据中携带有所述第三设备的标识和所述第一进程的标识。
30.根据权利要求29所述的第三设备,其特征在于,
所述分布式调试助手还用于,从所述第一设备接收第二调试命令;根据所述第二调试命令中携带的第四设备的标识,将所述第二调试命令发送至所述第四设备;从所述第四设备接收第二调试数据;以及向所述第一设备发送所述第二调试数据;
其中,所述第二调试命令对应于对第四设备中的第二进程,所述第二进程与所述第一进程相关联,所述第二调试命令中携带有所述第二进程的标识;所述第二调试数据中携带有所述第四设备的标识和所述第二进程的标识。
31.根据权利要求29所述的第三设备,其特征在于,
所述分布式调试助手还用于,从所述第一设备接收第三调试命令;根据所述第三调试命令中携带的第四设备的标识,将所述第三调试命令发送至所述第四设备;从所述第四设备接收第三调试数据;以及向所述第一设备发送所述第三调试数据;
其中,所述第三调试命令对应于对第四设备中的第三进程,所述第三进程与所述第一进程相关联,所述第三调试命令中携带有所述第三进程的标识;所述第三调试数据中携带有所述第四设备的标识和所述第三进程的标识。
32.根据权利要求30或31所述的第三设备,其特征在于,
所述分布式调试助手还用于,进行设备发现,以及在发现所述第四设备之后,与所述一个或多个第四设备建立通信连接;所述第三设备与所述第一设备通信连接。
33.根据权利要求32所述的第三设备,其特征在于,
所述分布式调试助手还用于,从所述第一设备接收发现可调试进程的命令;向所述一个或多个第四设备发送所述发现可调试进程的命令;发现第一可调试进程;从所述第四设备接收所述第四设备发现的第二可调试进程的信息;以及向所述第一设备发送可调试进程的信息;
其中,所述第一可调试进程包括所述第一进程;所述第二可调试进程包括所述第二进程和所述第三进程;所述可调试进程的信息包括所述第一可调试进程的信息和所述第二可调试进程的信息。
34.一种调试***,其特征在于,所述调试***包括:
如权利要求20-28中任一项所述的第一设备;和
如权利要求29-33中任一项所述的第三设备。
35.电子设备,其特征在于,所述电子设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,使得所述电子设备实现如权利要求1-12或13-19中任一项所述的方法。
36.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序代码,所述计算机程序代码被处理电路执行时实现如权利要求1-12或13-19中任一项所述的方法。
37.一种芯片***,其特征在于,所述芯片***包括处理电路、存储介质,所述存储介质中存储有计算机程序代码;所述计算机程序代码被所述处理电路执行时实现如权利要求1-12或13-19中任一项所述的方法。
38.一种计算机程序产品,其特征在于,所述计算机程序产品用于在计算机上运行,以实现如权利要求1-12或13-19中任一项所述的方法。
CN202011631714.4A 2020-12-30 2020-12-30 一种软件调试方法、电子设备及调试*** Pending CN114691483A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011631714.4A CN114691483A (zh) 2020-12-30 2020-12-30 一种软件调试方法、电子设备及调试***
PCT/CN2021/137196 WO2022143108A1 (zh) 2020-12-30 2021-12-10 一种软件调试方法、电子设备及调试***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011631714.4A CN114691483A (zh) 2020-12-30 2020-12-30 一种软件调试方法、电子设备及调试***

Publications (1)

Publication Number Publication Date
CN114691483A true CN114691483A (zh) 2022-07-01

Family

ID=82134073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011631714.4A Pending CN114691483A (zh) 2020-12-30 2020-12-30 一种软件调试方法、电子设备及调试***

Country Status (2)

Country Link
CN (1) CN114691483A (zh)
WO (1) WO2022143108A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114996168A (zh) * 2022-08-03 2022-09-02 荣耀终端有限公司 一种多设备协同测试方法、测试设备及可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115664882A (zh) * 2022-12-12 2023-01-31 深圳开鸿数字产业发展有限公司 家居设备控制方法、遥控设备和存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100367235C (zh) * 2005-12-27 2008-02-06 华为技术有限公司 一种自动化测试实现方法、装置及其***
CN101360067B (zh) * 2007-07-30 2012-11-07 国际商业机器公司 基于消息收发***的组联合调试***、方法
CN108829591B (zh) * 2018-05-31 2021-05-04 北京理工大学 一种基于Web的协同调试***及方法
CN108845946B (zh) * 2018-06-29 2022-02-08 上海商米科技集团股份有限公司 一种终端、调试***以及终端调试方法
CN111459827A (zh) * 2020-04-07 2020-07-28 长沙景嘉微电子股份有限公司 一种跨平台调试shell的实现方法、装置和计算机

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114996168A (zh) * 2022-08-03 2022-09-02 荣耀终端有限公司 一种多设备协同测试方法、测试设备及可读存储介质
CN114996168B (zh) * 2022-08-03 2023-01-03 荣耀终端有限公司 一种多设备协同测试方法、测试设备及可读存储介质

Also Published As

Publication number Publication date
WO2022143108A1 (zh) 2022-07-07

Similar Documents

Publication Publication Date Title
WO2020244495A1 (zh) 一种投屏显示方法及电子设备
WO2020244492A1 (zh) 一种投屏显示方法及电子设备
WO2020244500A1 (zh) 一种投屏场景下的触控方法及电子设备
WO2021083280A1 (zh) 一种跨设备的内容投射方法及电子设备
CN110032512B (zh) 一种小程序的调试方法、相关设备及终端
WO2022143108A1 (zh) 一种软件调试方法、电子设备及调试***
CN114077373B (zh) 一种电子设备间的交互方法及电子设备
WO2021104114A1 (zh) 一种提供无线保真WiFi网络接入服务的方法及电子设备
WO2022116974A1 (zh) 接入方法、***及电子设备
CN114741008B (zh) 分布式跨设备协同方法、电子设备及通信***
CN106454389A (zh) 一种直播视频的播放方法与装置
WO2022135527A1 (zh) 一种视频录制方法及电子设备
WO2024037032A1 (zh) 账号登录的方法及电子设备
WO2022206770A1 (zh) 一种设备间应用协同工作的方法及设备
CN114996168A (zh) 一种多设备协同测试方法、测试设备及可读存储介质
US20230273872A1 (en) Application debuging method and electronic device
WO2023134509A1 (zh) 视频推流方法、装置、终端设备及存储介质
CN114860587B (zh) 一种分布式测试方法、电子设备、测试***及存储介质
WO2023283941A1 (zh) 一种投屏图像的处理方法和装置
WO2024109443A1 (zh) 一种设备连接方法、设备及***
US20230297324A1 (en) Audio Control Method, System, and Electronic Device
US20240126505A1 (en) Distributed Audio Playing Method and Electronic Device
WO2024078306A1 (zh) 横幅通知消息的显示方法与电子设备
AlDuaij Multi-Mobile Computing
CN117666854A (zh) 共享输入设备的方法和电子设备

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