CN110704324A - 应用调试方法、装置及存储介质 - Google Patents

应用调试方法、装置及存储介质 Download PDF

Info

Publication number
CN110704324A
CN110704324A CN201910945460.4A CN201910945460A CN110704324A CN 110704324 A CN110704324 A CN 110704324A CN 201910945460 A CN201910945460 A CN 201910945460A CN 110704324 A CN110704324 A CN 110704324A
Authority
CN
China
Prior art keywords
container
application
debugging
namespace
target application
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
CN201910945460.4A
Other languages
English (en)
Other versions
CN110704324B (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.)
Poly Polytron Technologies Inc
Original Assignee
Poly Polytron Technologies Inc
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 Poly Polytron Technologies Inc filed Critical Poly Polytron Technologies Inc
Priority to CN201910945460.4A priority Critical patent/CN110704324B/zh
Publication of CN110704324A publication Critical patent/CN110704324A/zh
Application granted granted Critical
Publication of CN110704324B publication Critical patent/CN110704324B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种应用调试方法、装置及存储介质,属于容器技术领域。在本申请中,在接收到客户端发送的针对目标应用的调试请求之后,创建包含有调试工具的第二容器,并将第一容器所对应的第一命名空间作为第二容器的命名空间,这样,可以使第一容器和第二容器处于同一个命名空间中。由于第一命名空间包含目标应用在第一容器内运行时的应用运行信息,因此,可以通过第二容器内的调试工具从第二容器的命名空间中获取目标应用的应用运行信息,实现对目标应用的调试,相较于根据应用的日志信息或者是获取登录权限登录宿主机进行问题排查,调试效率较高。

Description

应用调试方法、装置及存储介质
技术领域
本申请涉及容器技术领域,特别涉及一种应用调试方法、装置及存储介质。
背景技术
随着容器技术的发展,各种应用都进行了容器化,应用容器化有诸多好处,例如,消除应用线上开发和线下运行的环境差异、资源隔离等。当应用在应用容器内运行时,不可避免地会出现问题,在这种情况下,可以对应用进行调试,以此来排查问题并解决问题,保证应用的正常运行。
目前,在应用容器化过程中,可以构造该应用的镜像,该镜像通常只包含有应用的配置信息,而不包含调试工具。在运行该应用时,可以根据该应用的镜像创建应用容器,并在该应用容器中运行该应用。此时,该应用容器包含有应用运行时相关的进程信息、网络配置等应用运行信息。并且,由于应用的镜像中不包含有调试工具,因此,创建得到的应用容器中也不包含有调试工具。在这种情况下,当应用在运行过程中出现问题时,调试客户端可以通过获取应用的日志信息来进行问题排查,也可以登录该应用所在的宿主机并进入应用容器,通过宿主机上安装的调试工具来获取应用容器内的应用运行信息,以对该应用进行调试。
然而,由于应用的日志信息繁杂,因此根据日志信息进行问题排查的效率很低。另外,为了保证应用的安全运行,通常调试客户端并没有权限登录应用所在的宿主机,而获取登录宿主机的权限需要进行复杂的配置和操作,因此通过登录宿主机来进行应用调试的方法效率也很低。
发明内容
本申请实施例提供了一种应用调试方法、装置及存储介质。所述技术方案如下:
一方面,提供了一种应用调试方法,所述方法包括:
接收客户端发送的针对目标应用的调试请求,所述目标应用运行在第一容器内,所述第一容器具有第一命名空间,所述第一命名空间包含有所述目标应用在所述第一容器内运行时的应用运行信息;
创建第二容器,所述第二容器包含调试工具;
将所述第一命名空间作为所述第二容器的命名空间;
通过所述第二容器内的所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用运行信息,以对所述目标应用进行调试。
可选地,所述第一命名空间有多个;
所述将所述第一命名空间作为所述第二容器的命名空间,包括:
获取多个第一命名空间中每个第一命名空间的空间标识;
将每个第一命名空间的空间标识与所述第二容器的容器标识对应存储,以将所述多个第一命名空间作为所述第二容器的命名空间。
可选地,所述将所述第一命名空间作为所述第二容器的命名空间之前,还包括:
根据所述第一容器的容器标识,获取所述第一命名空间的空间标识。
可选地,所述创建第二容器,包括:
获取包含有所述调试工具的排障镜像;
根据所述排障镜像,创建所述第二容器。
可选地,所述通过所述第二容器内的所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用运行信息,包括:
将用于与所述客户端进行通信的通信接口和所述第二容器的输入输出接口进行关联,以通过所述第二容器接收所述客户端的调试命令,所述调试命令用于指示所述第二容器通过所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用信息,以对所述目标应用进行调试。
可选地,所述调试请求携带所述目标应用的标识;
所述创建第二容器之前,还包括:
根据所述目标应用的标识,获取所述第一容器的容器标识;
根据所述第一容器的容器标识,获取所述第一容器的运行状态信息;
当所述第一容器的运行状态信息指示所述第一容器运行正常时,执行所述创建第二容器的步骤。
可选地,所述方法还包括:
当检测到与所述客户端的通信连接断开时,删除所述第二容器。
另一方面,提供了一种应用调试装置,该装置包括:
接收模块,用于接收客户端发送的针对目标应用的调试请求,所述目标应用运行在第一容器内,所述第一容器具有第一命名空间,所述第一命名空间包含有所述目标应用在所述第一容器内运行时的应用运行信息;
创建模块,用于创建第二容器,所述第二容器包含调试工具;
设置模块,用于将所述第一命名空间作为所述第二容器的命名空间;
第一获取模块,用于通过所述第二容器内的所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用运行信息,以对所述目标应用进行调试。
可选地,所述第一命名空间有多个;
所述设置模块包括:
第一获取子模块,用于获取多个第一命名空间中每个第一命名空间的空间标识;
存储子模块,用于将每个第一命名空间的空间标识与所述第二容器的容器标识对应存储,以将所述多个第一命名空间作为所述第二容器的命名空间。
可选地,所述装置还包括:
第二获取模块,用于根据所述第一容器的容器标识,获取所述第一命名空间的空间标识。
可选地,所述创建模块包括:
第二获取子模块,用于获取包含有所述调试工具的排障镜像;
创建子模块,用于根据所述排障镜像,创建所述第二容器。
可选地,所述第一获取模块包括:
关联模块,用于将用于与所述客户端进行通信的通信接口和所述第二容器的输入输出接口进行关联,以通过所述第二容器接收所述客户端的调试命令,所述调试命令用于指示所述第二容器通过所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用信息,以对所述目标应用进行调试。
可选地,所述调试请求携带所述目标应用的标识;
所述装置还包括:
第三获取模块,用于根据所述目标应用的标识,获取所述第一容器的容器标识;
第四获取模块,用于根据所述第一容器的容器标识,获取所述第一容器的运行状态信息;
执行模块,用于当所述第一容器的运行状态信息指示所述第一容器运行正常时,执行所述创建第二容器的步骤。
可选地,所述装置还包括:
删除模块,用于当检测到与所述客户端的通信连接断开时,删除所述第二容器。
另一方面,提供了一种应用调试装置,所述装置包括处理器、通信接口、存储器和通信总线;
其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器用于存放计算机程序;
所述处理器用于执行所述存储器上所存放的程序,以实现前述提供应用调试方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现前述提供的应用调试方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,在接收到客户端发送的针对目标应用的调试请求之后,创建包含有调试工具的第二容器,并将第一容器所对应的第一命名空间作为第二容器的命名空间,这样,可以使第一容器和第二容器处于同一个命名空间中。由于第一命名空间包含目标应用在第一容器内运行时的应用运行信息,因此,可以通过第二容器内的调试工具从第二容器的命名空间中获取目标应用的应用运行信息,实现对目标应用的调试,相较于根据应用的日志信息或者是获取登录权限登录宿主机进行问题排查,调试效率较高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用调试方法的系统架构图;
图2是本申请实施例提供的一种应用调试方法的流程图;
图3是本申请实施例提供的一种应用调试装置的结构示意图;
图4是本申请实施例提供的一种宿主机的设备结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的应用场景予以介绍。
随着容器技术的发展,各种应用都进行了容器化,应用容器化有诸多好处,例如,消除应用线上开发和线下运行的环境差异、资源隔离等。当应用在应用容器内运行时,不可避免地会出现问题,例如,应用通过网络向服务器请求数据时,可能会出现网络连接超时或者网络连接错误等问题,或者请求到的数据出现错误等,又如,应用运行所在的应用容器虽处于正常运行状态,但应用内部的进程信息、消息队列等出现错误。在这些情况下,可以通过本申请实施例提供的应用调试方法对应用进行调试,以此来排查问题并解决问题,保证应用的正常运行。
接下来对本申请实施例提供的应用调试方法所涉及的系统架构进行介绍。
图1是本申请实施例提供的一种应用调试方法的系统架构图。如图1所示,该系统包括客户端101、应用服务器102和宿主机103。客户端101与应用服务器102之间可以通过无线或有线方式连接以进行通信,客户端101与宿主机103之间也可以通过无线或有线方式连接以进行通信。另外,应用服务器102和宿主机103之间也可以无线或有线方式连接以进行通信。
客户端101可以用于接收用户输入的调试请求,将调试请求发送至宿主机103上部署的调试代理模块,并且,客户端101可以与宿主机103上的第二容器进行通信,以实现对目标应用的调试。
应用服务器102存储有应用标识和应用运行所在宿主机的节点标识之间的映射关系,以及存储有容器标识与容器运行状态的映射关系,应用服务器102用于为客户端101和宿主机103提供服务,以实现对目标应用的调试。
宿主机103是目标应用运行所在的物理机,宿主机103可以在目标应用运行时创建第一容器,目标应用运行在第一容器内,第一容器内包含有目标应用在第一容器运行时的应用运行信息。宿主机103上还可以部署有调试代理模块,该调试代理模块可以采用本申请实施例提供的应用调试方法来创建包含调试工具的第二容器,且第一容器和第二容器处于相同的命名空间中,可以通过第二容器内的调试工具,获取目标应用的应用运行信息。此外,宿主机103内还包括docker服务模块,docker服务模块可以与调试代理模块进行通信,为调试代理模块提供服务,以使最终实现对目标应用的调试。
本申请实施例中的客户端101可以是手机、笔记本电脑、台式电脑、平板电脑等设备,应用服务器102可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心,宿主机103可以是手机、笔记本电脑、台式电脑、平板电脑等设备,本申请实施例对此不作限定。
接下来对本申请实施例提供的应用调试方法进行介绍。
图2是本申请实施例提供的一种应用调试方法的流程图,可以应用于图1所示的系统中宿主机的调试代理模块中。如图2所示,该方法包括以下步骤:
步骤201:接收客户端发送的针对目标应用的调试请求,目标应用运行在第一容器内,第一容器具有第一命名空间,第一命名空间包含有目标应用在第一容器内运行时的应用运行信息。
在本申请实施例中,目标应用运行在第一容器内,第一容器具有第一命名空间,目标应用运行过程中会产生应用运行信息,例如,进程信息、网络配置、消息队列信息、域名信息等,第一命名空间包含有这些应用运行信息,可以通过获取这些应用运行信息来对目标应用进行调试,以排查目标应用运行时出现的问题,并解决问题。
通常,应用运行时产生的应用运行信息有很多种,根据命名空间隔离原理,不同种类的应用运行信息可以包含在不同种类的命名空间内。也即,一个容器可以对应有多个命名空间。例如,命名空间可以包括ipc、pid、network、uts、user等命名空间。其中,ipc命名空间内包含有进程所需资源信息,pid命名空间内包含有进程信息,network命名空间内包含有网络配置信息,uts命名空间内包含有主机名信息,user命名空间内包含有用户信息。
由于每个容器对应的命名空间可以有多个,因此,第一容器对应的第一命名空间也可以有多个。基于此,在本申请实施例中,调试代理模块可以通过获取多个不同种类的第一命名空间内的应用运行信息,来实现对目标应用的调试。
在本申请实施例中,当用户想要对目标应用进行调试时,用户可以在客户端触发针对该目标应用的调试请求,客户端可以向部署在宿主机上的调试代理模块发送该调试请求,相应地,调试代理模块可以接收该客户端发送的调试请求。
可选地,调试请求可以携带目标应用的标识,客户端可以将该调试请求发送给应用服务器,应用服务器可以根据该调试请求携带的目标应用的标识,从存储的应用标识与应用运行所在宿主机的节点标识之间的映射关系中,查找该目标应用的应用标识所对应的宿主机的节点标识,也即,查找目标应用所在的宿主机的节点标识。当查找到目标应用所在的宿主机的节点标识时,应用服务器可以将该节点标识反馈给客户端,之后,客户端可以根据该节点标识向对应的宿主机上部署的调试代理模块发送调试请求,调试代理模块可以接收该调试请求。
需要说明的是,当应用服务器未查找到目标应用运行所在的宿主机的节点标识时,应用服务器可以向客户端反馈一个错误信息客户端可以将该错误信息展示给用户,以提示未能查找到该目标应用所在的宿主机的节点标识。
示例性地,在本申请实施例中,调试请求携带的目标应用的标识可以指一个应用实例的名称,例如,java-app-01,节点标识可以指应用实例运行所在的宿主机的节点标识,例如,node-01。
可选地,客户端向调试代理模块发送的调试请求可以为一个长连接通信请求,以保证后续过程中可以通过长连接的通信方式对目标应用进行调试。
步骤202:创建第二容器,第二容器包含调试工具。
在本申请实施例中,调试代理模块在接收到针对目标应用的调试请求后,可以获取第一容器的容器标识,之后,创建包含调试工具的第二容器。
调试代理模块在接收到针对目标应用的调试请求后,可以将该调试请求携带的目标应用的标识发送至宿主机的容器docker服务模块,宿主机的docker服务模块可以根据目标应用的标识,从宿主机的docker服务模块中存储的应用标识与容器标识之间的映射关系中,查找该目标应用对应的第一容器的容器标识,并将查询到的第一容器的容器标识发送给调试代理模块。
可选地,在本申请实施例中,在宿主机上部署调试代理模块时,可以将宿主机的docker unix套接字挂载在调试代理模块上,以使调试代理模块可以通过该套接字与宿主机的docker服务模块进行通信。调试代理模块与宿主机的docker服务模块之间具体的通信接口,可以是docker api,该通信接口可以预先约定调试代理模块与宿主机的docker服务模块之间的通信协议。
示例性地,调试代理模块在接收到针对目标应用的调试请求后,可以基于dockerapi,并通过前述调试代理模块上挂载的套接字与宿主机的docker服务模块进行通信,从而将调试请求携带的目标应用的标识发送至宿主机的docker服务模块,并接收docker服务模块返回的容器标识。
调试代理模块获取到第一容器的容器标识之后,可以创建第二容器。
可选地,调试代理模块可以获取包含有调试工具的排障镜像,根据该排障镜像,创建第二容器。
需要说明的是,随着容器技术的发展,在应用容器化过程中,可以根据构建的镜像来创建容器。其中,构建应用镜像时,可以根据镜像最小化策略来进行构建,该应用镜像中可以不包含调试工具,应用运行所在的第一容器是根据该应用镜像创建的,因此,第一容器中可以不包含调试工具。本申请实施例提供的应用调试方法可以是在镜像最小化策略的前提下来使用,也可以不在该前提下使用,本申请实施例对此不作限定。
由于本申请实施例中要通过第二容器来对目标应用进行调试,因此,第二容器中需要包含有调试工具。基于此,调试代理模块可以根据存储的包含有调试工具的排障镜像来创建第二容器,这样,创建得到的第二容器中也包含调试工具,后续可以使用第二容器中包含的调试工具对目标应用进行调试。其中,排障镜像是预先根据各种调试工具构造得到的,且该排障镜像中可以包括一种或多种调试工具。
可选地,由于应用运行中出现的问题的类型有很多,例如网络问题、应用内部问题等类型,针对不同类型的问题,可以使用相应类型的调试工具进行应用调试,因此,本申请实施例中针对不同类型的问题,使用相应类型的调试工具来构造针对相应类型问题的排障镜像,以使构造的各种类型的排障镜像可以满足各种调试需求。或者,本申请实施例中还可以是将各种类型的调试工具进行自由组合来构造排障镜像,本申请实施例对此不作限定。这样,将会存在多种类型的排障镜像。在这种情况下,调试代理模块在创建第二容器时,可以从多种类型的排障镜像中选择某个类型的排障镜像来创建第二容器。
示例性地,调试代理模块可以从多种类型的排障镜像中随机选择一个排障镜像来创建第二容器。或者,客户端发送至调试代理模块的调试请求中还可以携带所要使用的排障镜像的类型,调试代理模块可以根据调试请求中携带的排障镜像的类型,从多种类型的排障镜像中选择对应的排障镜像,并根据选择的排障镜像来创建第二容器。
另外,本申请实施例中预先构造的排障镜像还可以是包括各种类型的所有的调试工具,以使根据该排障镜像创建的第二容器中包含各种类型的调试工具,来对目标应用中进行调试,排查各种可能的问题。
可选地,当目标应用在第一容器中运行时,如果第一容器的运行状态存在问题,也就无法根据第一容器来进行应用调试。在此基础上,调试代理模块模块也就不必再创建第二容器。基于此,在本申请实施例中,在接收到调试请求之后,创建第二容器之前,调试代理模块还可以通过获取第一容器的运行状态信息,来判断是否创建第二容器。
示例性地,调试代理模块可以根据目标应用的标识,获取第一容器的容器标识,根据第一容器的容器标识,获取第一容器的运行状态信息。当第一容器的运行状态信息指示第一容器运行正常时,执行创建第二容器的步骤。
其中,调试代理模块根据目标应用的标识,获取第一容器的容器标识的过程可以参考前述实现方式,本申请实施例在此不再赘述。
在获取到第一容器的容器标识之后,调试代理模块可以将该容器标识发送至应用服务器,应用服务器可以根据该容器标识,以及自身存储的容器标识与容器运行状态之间的映射关系,查询第一容器的运行状态信息,并将该运行状态信息反馈至调试代理模块,当第一容器的运行状态信息指示第一容器运行正常时,调试代理模块可以根据前述介绍的方法创建第二容器。否则,调试代理模块可以反馈一个错误信息给客户端,客户端可以显示该错误信息,以提示用户运行目标应用的第一容器当前处于异常运行状态。
需要说明的是,第一容器的运行状态可以有多种,例如,正常运行状态、终止中、已终止状态等。其中,当第一容器的运行状态为正常运行状态时,此时可以确定第一容器运行正常,如果第一容器的运行状态为终止中或已终止状态,则可以确定第一容器运行异常。
步骤203:将第一命名空间作为第二容器的命名空间。
根据命名空间隔离的原理,处于相同命名空间的多个容器均可以获取该命名空间内的应用运行信息,基于此,在本申请实施例中,可以将第一命名空间作为第二容器的命名空间,以使第一容器和第二容器处于同一个命名空间内,这样,第二容器就可以获取第一容器的命名空间内的应用运行信息,进而通过后续步骤根据该应用运行信息对目标应用进行调试。
其中,调试代理模块在根据前述方法获取到第一容器的容器标识之后,可以根据该容器标识获取一个或多个第一命名空间的空间标识,将每个第一命名空间的空间标识与第二容器的容器标识对应存储,以将一个或多个第一命名空间作为第二容器的命名空间。
示例性地,调试代理模块可以将该容器标识发送给宿主机的docker服务模块,docker服务模块接收到该容器标识后,可以从存储的容器标识和命名空间标识之间的映射关系中,查找该容器标识对应的第一命名空间的空间标识,将查找到的第一命名空间的空间标识反馈给调试代理模块。调试代理模块接收到第一命名空间的空间标识之后,可以将第一命名空间的空间标识作为第二容器的命名空间的空间标识。
由前述介绍可知,第一命名空间可以为ipc、pid、network、uts、user等命名空间,以第一命名空间为pid命名空间为例,调试代理模块可以将第一容器对应的pid命名空间的空间标识,设置为第二容器对应的pid命名空间的空间标识,这样,第一容器和第二容器将处于相同的pid命名空间内,以使调试代理模块可以通过第二容器获取目标应用的进程信息。
步骤204:通过第二容器内的调试工具,从第二容器的命名空间中获取目标应用的应用运行信息,以对目标应用进行调试。
在本申请实施例中,根据前述方法创建的第二容器内包含调试工具,且第二容器所在的命名空间与第一容器的命名空间相同,因此,可以通过第二容器内的调试工具,从第二容器的命名空间中获取目标容器的应用运行信息,以对目标应用进行调试。
可选地,调试代理模块可以将用于与客户端进行通信的通信接口和第二容器的输入输出接口进行关联,以通过第二容器接收客户端的调试命令,调试命令用于指示第二容器通过调试工具,从第二容器的命名空间中获取目标应用的应用信息,以对目标应用进行调试。
在本申请实施例中,调试代理模块可以将用于与客户端进行通信的通信接口和第二容器的输入输出接口进行关联,以使客户端可以与第二容器进行通信。客户端可以接收用户输入的调试命令,该调试命令可以携带调试工具的相关信息,客户端可以将接收到的调试命令发送至第二容器,以使第二容器根据调试命令携带的调试工具的相关信息,通过第二容器中相应的调试工具,从第二容器的命名空间中获取目标应用的应用信息,以对目标应用进行调试。
示例性地,假设当前的第二容器中包含的调试工具为tcpdump工具,该tcpdump工具可以用于排查目标应用在通过网络向服务器请求数据时,发生的网络连接超时或者请求的数据出错等问题的原因,基于此,通过前述方法将第二容器与第一容器处于相同的network命名空间之后,调试代理模块可以通过第二容器内的tcpdump工具,从network命名空间内获取目标应用的网络配置信息,例如,目标应用使用的流量信息等,根据该流量信息可以排查目标应用通过网络向服务器获取数据时出现的问题原因。
在本申请实施例中,当调试结束或者用户想要结束调试时,用户可以向客户端输入结束调试命名,客户端在接收到结束调试命令时,断开客户端与调试代理模块的通信连接,调试代理模块可以检测与客户端的通信连接,以获知是否还在继续调试,并根据检测结果作出相应的处理。
可选地,当检测到与客户端的通信连接断开时,调试代理模块可以删除第二容器,即在不进行调试时,回收第二容器所占用的资源,保证第二容器不再占用资源。
在本申请实施例中,在调试结束之后,用户可以在客户端输入结束调试命令。客户端在接收到结束调试命令后,向调试代理模块发送断开通信连接的通知,并断开客户端与调试代理模块的通信连接。调试代理模块可以在接收到断开通信连接的通知后,确定与客户端的通信连接断开,之后,调试代理模块可以删除第二容器。
在本申请实施例中,在接收到客户端发送的针对目标应用的调试请求之后,创建包含有调试工具的第二容器,并将第一容器所对应的第一命名空间作为第二容器的命名空间,这样,可以使第一容器和第二容器处于同一个命名空间中。由于第一命名空间包含目标应用在第一容器内运行时的应用运行信息,因此,可以通过第二容器内的调试工具从第二容器的命名空间中获取目标应用的的应用运行信息,实现对目标应用的调试,相较于根据应用的日志信息或者是获取登录权限登录宿主机进行问题排查,调试效率较高。
参见图3,本申请实施例提供了一种应用调试装置300,该应用调试装置可以应用于宿主机上部署的调试代理模块中,该装置300包括:
接收模块301,用于接收客户端发送的针对目标应用的调试请求,目标应用运行在第一容器内,第一容器具有第一命名空间,第一命名空间包含有目标应用在第一容器内运行时的应用运行信息;
创建模块302,用于创建第二容器,第二容器包含调试工具;
设置模块303,用于将第一命名空间作为第二容器的命名空间;
第一获取模块304,用于通过第二容器内的调试工具,从第二容器的命名空间中获取目标应用的应用运行信息,以对目标应用进行调试。
可选地,第一命名空间有多个;
设置模块包括:
第一获取子模块,用于获取多个第一命名空间中每个第一命名空间的空间标识;
存储子模块,用于将每个第一命名空间的空间标识与第二容器的容器标识对应存储,以将多个第一命名空间作为第二容器的命名空间。
可选地,该装置还包括:
第二获取模块,用于根据第一容器的容器标识,获取第一命名空间的空间标识。
可选地,创建模块包括:
第二获取子模块,用于获取包含有调试工具的排障镜像;
创建子模块,用于根据排障镜像,创建第二容器。
可选地,第一获取模块包括:
关联模块,用于将用于与客户端进行通信的通信接口和第二容器的输入输出接口进行关联,以通过第二容器接收客户端的调试命令,调试命令用于指示第二容器通过调试工具,从第二容器的命名空间中获取目标应用的应用信息,以对目标应用进行调试。
可选地,调试请求携带目标应用的标识;
该装置还包括:
第三获取模块,用于根据目标应用的标识,获取第一容器的容器标识;
第四获取模块,用于根据第一容器的容器标识,获取第一容器的运行状态信息;
执行模块,用于当第一容器的运行状态信息指示第一容器运行正常时,执行创建第二容器的步骤。
可选地,该装置还包括:
删除模块,用于当检测到与客户端的通信连接断开时,删除第二容器。
综上所述,本申请实施例中,在接收到客户端发送的针对目标应用的调试请求之后,创建包含有调试工具的第二容器,并将第一容器所对应的第一命名空间作为第二容器的命名空间,这样,可以使第一容器和第二容器处于同一个命名空间中。由于第一命名空间包含目标应用在第一容器内运行时的应用运行信息,因此,可以通过第二容器内的调试工具从第二容器的命名空间中获取目标应用的的应用运行信息,实现对目标应用的调试,相较于根据应用的日志信息或者是获取登录权限登录宿主机进行问题排查,调试效率较高。
需要说明的是:上述实施例提供的应用调试装置在应用调试时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用调试装置与应用调试方法的实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本申请实施例提供的一种终端400的结构框图。该终端400可以是便携式移动终端,比如:智能手机、平板电脑、笔记本电脑或台式电脑。终端400还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端400包括有:处理器401和存储器402。
处理器401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器401可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器401可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器401还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器401所执行以实现本申请中方法实施例提供的应用调试方法。
在一些实施例中,终端400还可选包括有:外围设备接口403和至少一个外围设备。处理器401、存储器402和外围设备接口403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口403相连。具体地,外围设备包括:射频电路404、触摸显示屏405、摄像头406、音频电路407、定位组件408和电源409中的至少一种。
外围设备接口403可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器401和存储器402。在一些实施例中,处理器401、存储器402和外围设备接口403被集成在同一芯片或电路板上;在一些其他实施例中,处理器401、存储器402和外围设备接口403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路404用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路404包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路404可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路404还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏405用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏405是触摸显示屏时,显示屏405还具有采集在显示屏405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器401进行处理。此时,显示屏405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏405可以为一个设置于终端400的前面板;在另一些实施例中,显示屏405可以为至少两个,分别设置在终端400的不同表面或呈折叠设计;在其他一些实施例中,显示屏405可以是柔性显示屏,设置在终端400的弯曲表面上或折叠面上。甚至,显示屏405还可以设置成非矩形的不规则图形,也即异形屏。显示屏405可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件406用于采集图像或视频。可选地,摄像头组件406包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件406还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路407可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器401进行处理,或者输入至射频电路404以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端400的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器401或射频电路404的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路407还可以包括耳机插孔。
定位组件408用于定位终端400的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件408可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源409用于为终端400中的各个组件进行供电。电源409可以是交流电、直流电、一次性电池或可充电电池。当电源409包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端400还包括有一个或多个传感器410。该一个或多个传感器410包括但不限于:加速度传感器411、陀螺仪传感器412、压力传感器413、指纹传感器414、光学传感器415以及接近传感器416。
加速度传感器411可以检测以终端400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器411可以用于检测重力加速度在三个坐标轴上的分量。处理器401可以根据加速度传感器411采集的重力加速度信号,控制触摸显示屏405以横向视图或纵向视图进行用户界面的显示。加速度传感器411还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器412可以检测终端400的机体方向及转动角度,陀螺仪传感器412可以与加速度传感器411协同采集用户对终端400的3D动作。处理器401根据陀螺仪传感器412采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器413可以设置在终端400的侧边框和/或触摸显示屏405的下层。当压力传感器413设置在终端400的侧边框时,可以检测用户对终端400的握持信号,由处理器401根据压力传感器413采集的握持信号进行左右手识别或快捷操作。当压力传感器413设置在触摸显示屏405的下层时,由处理器401根据用户对触摸显示屏405的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器414用于采集用户的指纹,由处理器401根据指纹传感器414采集到的指纹识别用户的身份,或者,由指纹传感器414根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器401授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器414可以被设置终端400的正面、背面或侧面。当终端400上设置有物理按键或厂商Logo时,指纹传感器414可以与物理按键或厂商Logo集成在一起。
光学传感器415用于采集环境光强度。在一个实施例中,处理器401可以根据光学传感器415采集的环境光强度,控制触摸显示屏405的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏405的显示亮度;当环境光强度较低时,调低触摸显示屏405的显示亮度。在另一个实施例中,处理器401还可以根据光学传感器415采集的环境光强度,动态调整摄像头组件406的拍摄参数。
接近传感器416,也称距离传感器,通常设置在终端400的前面板。接近传感器416用于采集用户与终端400的正面之间的距离。在一个实施例中,当接近传感器416检测到用户与终端400的正面之间的距离逐渐变小时,由处理器401控制触摸显示屏405从亮屏状态切换为息屏状态;当接近传感器416检测到用户与终端400的正面之间的距离逐渐变大时,由处理器401控制触摸显示屏405从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图4中示出的结构并不构成对终端400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由宿主机的处理器执行时,使得宿主机能够执行上述图2所示实施例提供的应用调试方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图2所示实施例提供的应用调试方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种应用调试方法,其特征在于,所述方法包括:
接收客户端发送的针对目标应用的调试请求,所述目标应用运行在第一容器内,所述第一容器具有第一命名空间,所述第一命名空间包含有所述目标应用在所述第一容器内运行时的应用运行信息;
创建第二容器,所述第二容器包含调试工具;
将所述第一命名空间作为所述第二容器的命名空间;
通过所述第二容器内的所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用运行信息,以对所述目标应用进行调试。
2.根据权利要求1所述的方法,其特征在于,所述第一命名空间有多个;
所述将所述第一命名空间作为所述第二容器的命名空间,包括:
获取多个第一命名空间中每个第一命名空间的空间标识;
将每个第一命名空间的空间标识与所述第二容器的容器标识对应存储,以将所述多个第一命名空间作为所述第二容器的命名空间。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一命名空间作为所述第二容器的命名空间之前,还包括:
根据所述第一容器的容器标识,获取所述第一命名空间的空间标识。
4.根据权利要求1所述的方法,其特征在于,所述创建第二容器,包括:
获取包含有所述调试工具的排障镜像;
根据所述排障镜像,创建所述第二容器。
5.根据权利要求1-4任一所述的方法,其特征在于,所述通过所述第二容器内的所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用运行信息,包括:
将用于与所述客户端进行通信的通信接口和所述第二容器的输入输出接口进行关联,以通过所述第二容器接收所述客户端的调试命令,所述调试命令用于指示所述第二容器通过所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用信息,以对所述目标应用进行调试。
6.根据权利要求1-4任一所述的方法,其特征在于,所述调试请求携带所述目标应用的标识;
所述创建第二容器之前,还包括:
根据所述目标应用的标识,获取所述第一容器的容器标识;
根据所述第一容器的容器标识,获取所述第一容器的运行状态信息;
当所述第一容器的运行状态信息指示所述第一容器运行正常时,执行所述创建第二容器的步骤。
7.根据权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
当检测到与所述客户端的通信连接断开时,删除所述第二容器。
8.一种应用调试装置,其特征在于,所述装置包括:
接收模块,用于接收客户端发送的针对目标应用的调试请求,所述目标应用运行在第一容器内,所述第一容器具有第一命名空间,所述第一命名空间包含有所述目标应用在所述第一容器内运行时的应用运行信息;
创建模块,用于创建第二容器,所述第二容器包含调试工具;
设置模块,用于将所述第一命名空间作为所述第二容器的命名空间;
第一获取模块,用于通过所述第二容器内的所述调试工具,从所述第二容器的命名空间中获取所述目标应用的应用运行信息,以对所述目标应用进行调试。
9.根据权利要求8所述的装置,其特征在于,所述第一命名空间有多个;
所述设置模块包括:
第一获取子模块,用于获取多个第一命名空间中每个第一命名空间的空间标识;
存储子模块,用于将每个第一命名空间的空间标识与所述第二容器的容器标识对应存储,以将所述多个第一命名空间作为所述第二容器的命名空间。
10.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
CN201910945460.4A 2019-09-30 2019-09-30 应用调试方法、装置及存储介质 Active CN110704324B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910945460.4A CN110704324B (zh) 2019-09-30 2019-09-30 应用调试方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910945460.4A CN110704324B (zh) 2019-09-30 2019-09-30 应用调试方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN110704324A true CN110704324A (zh) 2020-01-17
CN110704324B CN110704324B (zh) 2023-11-10

Family

ID=69198236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910945460.4A Active CN110704324B (zh) 2019-09-30 2019-09-30 应用调试方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110704324B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382079A (zh) * 2020-03-16 2020-07-07 北京云宽志业网络技术有限公司 应用程序现场还原的方法、装置、设备及存储介质
CN112269738A (zh) * 2020-10-26 2021-01-26 杭州光通天下网络科技有限公司 Ctf靶场调试方法、装置、电子设备及介质
CN113010342A (zh) * 2021-03-12 2021-06-22 北京百度网讯科技有限公司 运维诊断的方法、装置、设备以及存储介质
CN113766329A (zh) * 2020-02-17 2021-12-07 聚好看科技股份有限公司 播放请求处理方法及显示设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108718253A (zh) * 2018-05-11 2018-10-30 新华三技术有限公司 一种问题定位方法及装置
CN109478161A (zh) * 2016-07-08 2019-03-15 国际商业机器公司 使用调试容器提供关于生产容器的调试信息

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109478161A (zh) * 2016-07-08 2019-03-15 国际商业机器公司 使用调试容器提供关于生产容器的调试信息
CN108718253A (zh) * 2018-05-11 2018-10-30 新华三技术有限公司 一种问题定位方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佚名: "Kubernetes故障诊断神奇kubectl-debug入门教程", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1484347》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113766329A (zh) * 2020-02-17 2021-12-07 聚好看科技股份有限公司 播放请求处理方法及显示设备
CN113766329B (zh) * 2020-02-17 2023-08-08 聚好看科技股份有限公司 播放请求处理方法及显示设备
CN111382079A (zh) * 2020-03-16 2020-07-07 北京云宽志业网络技术有限公司 应用程序现场还原的方法、装置、设备及存储介质
CN111382079B (zh) * 2020-03-16 2021-08-24 北京云宽志业网络技术有限公司 应用程序现场还原的方法、装置、设备及存储介质
CN112269738A (zh) * 2020-10-26 2021-01-26 杭州光通天下网络科技有限公司 Ctf靶场调试方法、装置、电子设备及介质
CN113010342A (zh) * 2021-03-12 2021-06-22 北京百度网讯科技有限公司 运维诊断的方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
CN110704324B (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
CN111225042B (zh) 数据传输的方法、装置、计算机设备以及存储介质
CN110704324B (zh) 应用调试方法、装置及存储介质
CN112256425B (zh) 负载均衡方法及系统、计算机集群、信息编辑方法及终端
CN111190748B (zh) 数据共享方法、装置、设备及存储介质
CN110659127A (zh) 一种处理任务的方法、装置及系统
CN110058935B (zh) 日志级别调整方法、装置及系统、可读存储介质
CN108848492B (zh) 用户身份识别卡的启用方法、装置、终端及存储介质
CN110636144A (zh) 数据下载的方法和装置
CN111510482B (zh) 失败网络请求的确定方法、装置及计算机存储介质
CN111866140A (zh) 融合管理设备、管理系统、服务调用方法及介质
CN111427949B (zh) 一种创建大数据服务的方法及装置
CN112612539B (zh) 数据模型卸载方法、装置、电子设备及存储介质
CN111881423B (zh) 限制功能使用授权方法、装置、系统
CN112181915B (zh) 执行业务的方法、装置、终端和存储介质
CN110086814B (zh) 一种数据获取的方法、装置及存储介质
CN111914985A (zh) 深度学习网络模型的配置方法、装置及存储介质
CN112597417B (zh) 页面更新方法、装置、电子设备及存储介质
CN111580892B (zh) 一种业务组件调用的方法、装置、终端和存储介质
CN112905328A (zh) 任务处理方法、装置及计算机可读存储介质
CN112612540A (zh) 数据模型配置方法、装置、电子设备及存储介质
CN112260845A (zh) 进行数据传输加速的方法和装置
CN112000576A (zh) 代码数据的检测方法、装置、设备及存储介质
CN112699906A (zh) 获取训练数据的方法、装置及存储介质
CN115348262B (zh) 基于跨链协议的跨链操作执行方法及网络系统
CN114584628B (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
GR01 Patent grant
GR01 Patent grant