WO2021238592A1 - 一种应用调试方法、系统、设备及介质 - Google Patents

一种应用调试方法、系统、设备及介质 Download PDF

Info

Publication number
WO2021238592A1
WO2021238592A1 PCT/CN2021/091752 CN2021091752W WO2021238592A1 WO 2021238592 A1 WO2021238592 A1 WO 2021238592A1 CN 2021091752 W CN2021091752 W CN 2021091752W WO 2021238592 A1 WO2021238592 A1 WO 2021238592A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
sub
debugging
module
user
Prior art date
Application number
PCT/CN2021/091752
Other languages
English (en)
French (fr)
Inventor
王亚伟
佩雷斯诺阿姆
塞格尔盖伊
胡塔艾维塔
叶巍
王谦
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP21812877.5A priority Critical patent/EP4148585A4/en
Publication of WO2021238592A1 publication Critical patent/WO2021238592A1/zh
Priority to US17/993,619 priority patent/US20230092858A1/en

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/3664Environments for testing or debugging software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • 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/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • 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/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface

Definitions

  • This application relates to the technical field of application development, and in particular to an application debugging method, an application debugging system, a computing device, and a computer-readable storage medium.
  • An application is a collection of computer programs written for a particular application purpose of the user. From project establishment to delivery to customers, an application usually goes through multiple stages such as development, testing, and launch. Among them, in the various stages of development, testing, and launch, corresponding environments are often configured, such as development environment, testing environment, and production environment.
  • Application debugging includes detecting errors in the application program code manually or by compiling, and then correcting the program code based on the errors found during the debugging process.
  • IDE integrated development environment
  • This application provides an application debugging method, which realizes the direct debugging of multiple sub-application modules of an application in a production environment, and improves the debugging efficiency.
  • This application also provides an application debugging system, a computing device, a computer-readable storage medium, and a computer program product corresponding to the above method.
  • this application provides an application debugging method.
  • the application to be debugged is deployed in a production environment.
  • the production environment refers to the environment in which services are officially provided.
  • the production environment may be a customer-owned data center, or a public cloud platform purchased or leased by the customer, and so on.
  • a sub-application module refers to a functional module that implements one or more functions through a computer-executable code block.
  • the sub-application modules included in the application may be microservices.
  • the sub-application module can also be one or more source code files in form.
  • the application debugging system receives identifications of multiple sub-application modules input or selected by the user. Among them, the code blocks included in each sub-application module are used to implement the functions of the application. Then, the application debugging system debugs the code blocks of the multiple sub-application modules according to the identifiers of the multiple sub-application modules. Then the application debugging module presents the debugging results to the user.
  • the method can support the user to debug and select multiple sub-application modules and debug multiple sub-application modules of the application, thereby improving the debugging efficiency of the application. Further, in this method, the user can directly debug in the production environment without reproducing the abnormality generated by the application running in the production environment in the development environment, which improves the debugging efficiency. Moreover, in some embodiments, the method supports cloud debugging of applications without loading the code blocks included in the sub-application module into an integrated development environment (IDE), and the application is locally debugged in the development environment through the IDE , There is no need to redeploy the debugged application to the production environment, which saves time and further improves the debugging efficiency.
  • IDE integrated development environment
  • the application debugging system may present the debugging progress graph of the application to the user through a graphical user interface (GUI) during the debugging process, so as to realize the presentation of the debugging results (specific Is the result of intermediate debugging).
  • GUI graphical user interface
  • the debugging progress graph includes one or more of the following information: the sub-application module that has been debugged, the sub-application module that is being debugged, the sub-application module that is debugging an error, the reminding information of the debugging error, the debugging error type, The request/response flow of the sub-application module.
  • Debugging error means that an error occurs in the code block of the sub-application module during operation. The application debugging system detects the error through debugging and reports the error to the user.
  • Debugging error types can include missing parameters, parameter type errors, parameter verification exceptions and other error types.
  • the debugging progress graph can help users quickly learn about the debugging status.
  • the debugging progress graph can provide a reference for the user to determine the next or next set of sub-application modules to be debugged, as well as provide users with information about the sub-application modules that report errors during debugging.
  • the code block is modified to provide reference.
  • the application debugging system can present to the user the stack information and/or variables of the debugged sub-application module during the debugging process, thereby realizing the presentation of the debugging result (specifically the intermediate debugging result) to the user . It should be noted that as the debugging process progresses, the application debugging system can dynamically present the stack information and/or variables of the debugged sub-application module during the debugging process to the user.
  • the stack information may include the identifier of the executed function in the call stack. Further, the stack information may also include information such as the identification of the currently executed function. Variables refer to variables (such as local variables) involved in the above functions.
  • the application debugging system may receive the identities of the multiple sub-application modules selected by the user through the GUI.
  • the application debugging system may receive the identities of the multiple sub-application modules input by the user through a command user interface (CUI).
  • CCI command user interface
  • the application debugging system may also present the sub-applications of the application to the user through a user interface (such as CUI and/or GUI)
  • a user interface such as CUI and/or GUI
  • the application debugging system can obtain the structural information of the application, the structural information includes the identification of the application, the identification of the sub-application module (for example, microservice), and the information of the resource to which the sub-application module (for example, microservice) belongs. At least one of the logos.
  • the identifier of the resource to which the sub-application module belongs may be the identifier of the resource to which each copy of the sub-application module belongs.
  • the resource may be a physical machine (physical machine) or a virtual machine (virtual machine), container (container), etc. deployed on the physical machine.
  • the application debugging system constructs the topology diagram of the sub-application modules of the application according to the structural information of the application. Wherein, the topology diagram of the sub-application module represents the calling relationship between the sub-application modules of the application.
  • the topology diagram can also present the calling relationship between the sub-application modules, which can assist the user in determining which sub-application module or modules to debug.
  • the interaction module 102 may also obtain updated structural information, and adjust the topology of the sub-application modules of the application according to the updated structural information. , To present the adjusted topology of the sub-application module to the user.
  • This method can enable users to obtain newer topological diagrams as much as possible, and prevent users from debugging sub-application modules that have failed, resulting in reduced debugging efficiency and waste of resources.
  • each sub-application module of the application corresponds to an agent, and the agent of each sub-application module is used to receive debugging instructions and initiate debugging of code blocks in the corresponding sub-application modules according to the debugging instructions.
  • a sub-application module (such as a microservice) generates a process at runtime, and the agent of the sub-application module is essentially equivalent to an independent thread hosted in the process at runtime.
  • the application debugging system debugs the sub-application module of the application, it does not block the above process, and directly interacts through the thread hosted in the process, so that the debugging of the sub-application module in the production environment can be realized.
  • the application debugging system may generate multiple debugging instructions according to the identities of the multiple sub-application modules.
  • the debugging instruction may include a debugging session establishment instruction.
  • the application debugging system can establish multiple debugging sessions with multiple agents of multiple sub-application modules to be debugged according to the multiple debugging instructions. Then, a debugging response of the agent of each sub-application module to be debugged is obtained, and the debugging response is used to generate the debugging result. In this way, the debugging of multiple sub-application modules is realized.
  • the debugging initiated by each agent is an independent thread in the running process of the corresponding sub-application module.
  • the application debugging system debugs the sub-application module of the application, it does not block the above process, and directly interacts through the thread hosted in the process, so that the debugging of the sub-application module in the production environment can be realized, avoiding re-running the environment in the development environment
  • the production environment includes at least one node, and one or more sub-application modules of the application are deployed in each node.
  • the application debugging system can route each debugging instruction to the node agent of the node where each sub-application module to be debugged is located, and then the node agent routes each debugging instruction to the agent corresponding to each sub-application module to be debugged.
  • This provides help for the application debugging system to support simultaneous debugging of multiple sub-application debugging modules, thereby improving application debugging efficiency.
  • the agent corresponding to each sub-application module and the node agent of each node are code blocks deployed in the production environment at the same time as the application.
  • the agent corresponding to each sub-application module is used to debug the corresponding sub-application module, and the debugging process can be parallel, so the debugging efficiency can be improved.
  • the node agent provides another transmission path for debugging instructions and debugging responses (other transmission paths other than the load balancing server), which prevents the debugging instructions for the same sub-application module from being balanced to different copies of the application sub-module. , To ensure the continuity of the debugging process, and improve the usability in the multi-copy scenario.
  • each sub-application module of the application runs in an independent container, and the sub-application modules running in the container interact with each other through an interface of the container.
  • This method runs each sub-application module in an independent container, guarantees the independence of the sub-application module, and then guarantees the independence of the agent of the sub-application module, so that the agent of the sub-application module can debug the sub-application module in parallel. Improved debugging efficiency.
  • the multiple sub-application modules include code blocks written in different programming languages.
  • Each debugging instruction is encapsulated as a debugging message and routed to the agent corresponding to the sub-application module to be debugged.
  • the agent corresponding to each sub-application module is used to convert the debugging message into a debugging message corresponding to the programming language of the sub-application module.
  • the application debugging system can deploy the language debugging module of the corresponding programming language in the proxy of the corresponding sub-application module, so as to realize the debugging of heterogeneous applications.
  • this application provides an application debugging method.
  • the application to be debugged is deployed in a production environment, and sub-application modules of the application run in the production environment to provide services.
  • This method can be implemented by an interactive module of the application debugging system, such as an IDE or a browser.
  • the interaction module may present a list of sub-application modules of the application and/or a topology diagram of the sub-application modules to the user through a GUI.
  • the list of sub-application modules and/or the topology diagram of the sub-application modules are used for the user to select multiple sub-application modules to be debugged.
  • the interaction module presents the debugging results of the multiple sub-application modules selected by the user to the user according to the debugging selection operation of the user on the GUI.
  • the method can support the debugging of multiple sub-application modules of the application at the same time, which improves the debugging efficiency of the application.
  • the user can directly debug in the production environment, without having to reproduce the abnormality generated by the application running in the production environment in the development environment, and without loading the code blocks included in the sub-application module to the IDE, and develop through the IDE
  • the application is locally debugged in the environment, and there is no need to redeploy the debugged application to the production environment, which saves time, further improves the debugging efficiency and improves the debugging efficiency.
  • this application provides a method for presenting application debugging results.
  • the application to be debugged is deployed in a production environment, and the sub-application modules of the application run in the production environment to provide services.
  • the method can be implemented by an interactive module of the application debugging system, such as an IDE or a browser.
  • the interaction module receives the debugging selection operation of the user through the GUI, and then presents the debugging progress graph of the application to the user on the GUI.
  • the debugging progress graph represents the debugging progress of the application debugging system for one or more sub-application modules selected by the user;
  • the debugging progress graph includes one or more of the following information: debugged sub-application modules , The sub-application module that is being debugged, the sub-application module that is debugging an error, the reminder of the debugging error, the debugging error type, and the request/response flow of the sub-application module.
  • the debugging progress graph can help users quickly learn about the debugging status
  • the debugging progress graph can provide a reference for the user to determine the next or next set of sub-application modules to be debugged, as well as the code blocks of the sub-application modules that report errors during debugging. Make modifications to provide reference.
  • this application provides an application debugging system.
  • the application to be debugged is deployed in a production environment, and sub-application modules included in the application run in the production environment to provide services.
  • the system includes:
  • the interaction module is used to receive the identities of multiple sub-application modules input or selected by the user, wherein the code block included in each sub-application module is used to implement the function of the application;
  • the debugging module is used to debug the code blocks of the multiple sub-application modules according to the identifiers of the multiple sub-application modules;
  • the interaction module is also used to present the debugging result to the user.
  • the interaction module is used to:
  • the user is presented with a debugging progress graph of the application through the GUI, where the debugging progress graph includes one or more of the following information: sub-application modules that have been debugged, sub-application modules being debugged, and debugging errors
  • sub-application modules that have been debugged
  • sub-application modules being debugged and debugging errors
  • the sub-application module, the warning message of debugging error, the type of debugging error, and the request/response flow of the sub-application module is presented with a debugging progress graph of the application through the GUI, where the debugging progress graph includes one or more of the following information: sub-application modules that have been debugged, sub-application modules being debugged, and debugging errors
  • the sub-application module the warning message of debugging error, the type of debugging error, and the request/response flow of the sub-application module.
  • the interaction module is used to:
  • the user is presented with stack information and/or variables of the sub-application module being debugged during the debugging process.
  • the interaction module is specifically used for:
  • the interaction module is also used to:
  • the interaction module is also used to:
  • a topology diagram of the sub-application modules of the application is constructed according to the structural information of the application, and the topology diagram of the sub-application modules represents the calling relationship between the sub-application modules of the application.
  • the interaction module is also used to:
  • each sub-application module of the application corresponds to an agent, and the agent of each sub-application module is used to receive debugging instructions and initiate debugging of code blocks in the corresponding sub-application modules according to the debugging instructions.
  • the interaction module is also used to:
  • the debugging module is specifically used for:
  • the debugging initiated by each agent is an independent thread in the running process of the corresponding sub-application module.
  • the production environment includes at least one node, and each node deploys one or more sub-application modules of the application, and the debugging module is specifically configured to:
  • Each debugging instruction is routed to the node agent of the node where each sub-application module to be debugged is located, and the node agent then routes each debugging instruction to the agent corresponding to each sub-application module to be debugged.
  • the agent corresponding to each sub-application module and the node agent of each node are code blocks deployed in the production environment at the same time as the application.
  • each sub-application module of the application runs in an independent container, and the sub-application modules running in the container interact with each other through an interface of the container.
  • the multiple sub-application modules include code blocks written in different programming languages, and each debugging instruction is encapsulated as a debugging message and routed to the agent corresponding to the sub-application module to be debugged; each sub-application The agent corresponding to the module is used to convert the debugging message into a debugging message corresponding to the programming language of the sub-application module.
  • the present application provides a computing device, the computing device including a processor, a memory, and a display.
  • the processor and the memory communicate with each other.
  • the processor is configured to execute instructions stored in the memory, so that the computing device executes the method in any implementation manner of the first aspect, the second aspect, or the third aspect.
  • the present application provides a computer-readable storage medium in which computer program instructions are stored, and when the computer program instructions are executed by a computing device, the computing device executes the first aspect and the first aspect described above.
  • the method in any one of the second aspect or the third aspect.
  • the present application provides a computer program product containing instructions that, when run on a computing device, causes the device to execute the method in any one of the foregoing first aspect, second aspect, or third aspect .
  • FIG. 1 is an architecture diagram of an application debugging system provided by an embodiment of the application
  • FIG. 2A is a schematic diagram of an application scenario of an application debugging system provided by an embodiment of this application;
  • 2B is a schematic diagram of an application scenario of an application debugging system provided by an embodiment of the application
  • 2C is a schematic diagram of an application scenario of an application debugging system provided by an embodiment of the application.
  • FIG. 3 is a flowchart of an application debugging method provided by an embodiment of the application
  • FIG. 4 is a schematic diagram of a debugging selection interface provided by an embodiment of the application.
  • FIG. 5 is a schematic diagram of another debugging selection interface provided by an embodiment of the application.
  • FIG. 6 is a schematic diagram of a display interface of a debugging result provided by an embodiment of the application.
  • FIG. 7 is a schematic structural diagram of a computing device provided by an embodiment of this application.
  • first and second in the embodiments of the present application are only used for descriptive purposes, and cannot be understood as indicating or implying relative importance or implicitly indicating the number of indicated technical features. Thus, the features defined with “first” and “second” may explicitly or implicitly include one or more of these features.
  • An application is a collection of computer programs written for a certain special application purpose of a user, and specifically can be a single application or an application software formed by a collection of multiple applications.
  • the application can be a single text editing application, or it can be an application composed of a text editing application, a table editing application, and a graphics editing application.
  • a sub-application module refers to a functional module that implements one or more functions through a computer-executable code block, and the sub-application module can be one or more source code files.
  • the sub-application module can run in a production environment to provide services. Among them, the production environment refers to the environment where services are officially provided.
  • the production environment includes at least one node, which refers to a computing node with computing capabilities such as a server and a terminal computing device.
  • the microservice architecture refers to splitting the functional modules of the application into independent microservices.
  • the sub-application module can be a microservice of the application.
  • a microservice is a collection or a group of relatively small and independent functional units. Data interaction is realized between microservices through interface calls. In this way, the decoupling of the various functional modules of the application can be achieved.
  • developers can add, delete or modify the corresponding microservices.
  • the sub-application module can also be one or more microservices. Microservices run in a production environment to provide corresponding services.
  • debugging refers to checking the application program code through various means such as single stepping, setting breakpoints, printing variable content, etc.
  • the debugging method of related technologies for applications that have been deployed in the production environment is usually to load the program code of the application into an integrated development environment (IDE), and use the IDE to localize the program code of the application in the development environment.
  • IDE integrated development environment
  • Debug after debugging locally, solve the identified problems and then re-deploy the application online.
  • the embodiments of the present application provide a more efficient application debugging method.
  • This method can be executed by the application debugging system. Specifically, for the application to be debugged deployed in the production environment, the application debugging system receives the identification of multiple sub-application modules input or selected by the user, debugs the code blocks of the multiple sub-application modules according to the identification of the multiple sub-application modules, and then reports to The user presents the debugging results.
  • the method can support the user to select multiple sub-application modules to be debugged at one time, debug multiple sub-application modules of the application, and improve the debugging efficiency of the application.
  • the user can directly debug in the production environment, without the need to reproduce the abnormality generated by the application running in the production environment in the development environment, and the debugging efficiency is improved.
  • the method supports cloud debugging of the application, without the need to load the code blocks included in the sub-application module to the IDE, and the application is locally debugged in the development environment through the IDE, and there is no need to re-debug the application after debugging. Deploying to the production environment saves time and further improves debugging efficiency.
  • the application debugging system 100 establishes a communication path with the data center 300, and the application debugging system 100 is used to debug at least one application 200 deployed on the data center 300.
  • the data center 300 provides a production environment, and the application 200 is deployed in the production environment.
  • the application 200 includes a plurality of sub-application modules, and the code blocks included in each sub-application module are used to implement the functions of the application 200.
  • the sub-application modules of the application 200 may be deployed on at least one node of the data center 300 in a distributed manner.
  • n sub-application modules of the application 200 are distributedly deployed on k nodes (also referred to as hosts) in the data center, where k is less than or equal to n.
  • the sub-application module can be deployed directly on the node, that is, deployed in a physical machine, or deployed in a virtual machine or container on the node.
  • the sub-application modules running in the container can interact through the interface of the container.
  • Each sub-application module has a module agent (when the sub-application module is a microservice, it is also called a microservice agent), and each node has a host agent.
  • the module agent is called an agent.
  • the agent is a code block deployed in the production environment at the same time as the application 200. This code block is used to proxy the sub-application module to interact with the outside, and to debug the sub-application module.
  • a sub-application module (such as a microservice) generates a process at runtime, and the agent of the sub-application module is essentially equivalent to an independent thread hosted in the process at runtime.
  • the application debugging system 100 debugs the sub-application module of the application, it does not block the above-mentioned process, and directly interacts through the thread hosted in the process, so that the debugging of the sub-application module in the production environment can be realized.
  • the agent can be created through code injection.
  • Code injection is a technique that inserts independent running code into the target process and makes it run.
  • Code injection can generally be implemented by configuring environment variables. Taking the Java platform as an example, the environment variable can be JAVA_TOOL_OPTIONS.
  • the environment variable can be JAVA_TOOL_OPTIONS.
  • export JAVA_TOOL_OPTIONS "-agent-lib: hprof”
  • the process of sub-application modules such as microservices
  • the code in the inserted code file is written into the virtual memory space of the above process, and the thread corresponding to the inserted code is also started with the start of the process.
  • the thread can run forever until the host process is terminated.
  • the host agent is a code block deployed in the production environment at the same time as the application 200.
  • the host agent is used to forward messages from the sub-application modules on the node or forward messages to the sub-application modules on the node.
  • a process can be spawned when the host agent is running.
  • the program code corresponding to the process may be deployed to the node as the code blocks included in the sub-application module of the application 200 are deployed to the node.
  • the host agent is also started.
  • the application debugging system 100 includes an interactive module 102 and a debugging module 104.
  • the interaction module 102 is used to receive the identifiers of multiple sub-application modules input or selected by the user, for example, to receive the identifiers of multiple sub-application modules selected by the user through a graphical user interface (GUI), or to receive the identifiers of multiple sub-application modules selected by the user through a command user interface (GUI). user interface, CUI) the identification of multiple sub-application modules entered.
  • the debugging module 104 is configured to debug the code blocks of the multiple sub-application modules according to the identifiers of the multiple sub-application modules.
  • the interaction module 102 is also used to present the debugging results to the user.
  • the interactive module 102 may be an IDE that provides application debugging functions.
  • the IDE can be used not only to edit the program code of the application 200, to debug the program code in the development process, but also to monitor the remote online
  • the application 200 is debugged.
  • the interaction module 102 may also be other interaction modules that can provide the function of debugging the online application 200, such as a browser loaded with a user interface for debugging the application 200 or an interaction module dedicated to application debugging.
  • the interactive module 102 is used as an IDE for illustration in the following text.
  • the various modules of the application debugging system 100 may be deployed in different environments in a distributed manner.
  • the interaction module 102 may be deployed in a terminal computing device
  • the debugging module 104 may be deployed in a cloud computing cluster (including at least one cloud computing device, such as a cloud server, etc.).
  • the interaction module 102 may be a local IDE.
  • the local is also called the local device.
  • the local device includes a terminal computing device (such as a user terminal such as a laptop computer) under the direct control of the user.
  • the local IDE refers to the IDE installed on the local device in the form of a client.
  • the local IDE may include visual studio, eclipse, and so on.
  • the debugging module 104 may be a cloud debugger (cloud debugger).
  • the local IDE can install plug-ins and connect to the cloud debugger through the plug-ins to debug the application 200.
  • the local IDE usually has a local debugger, and the local debugger and the cloud debugger are independent of each other. Based on this, the user can debug the locally developed application code through the local debugger while debugging the online application 200 through the cloud debugger.
  • the various modules of the application debugging system 100 may also be deployed in the same environment.
  • the interaction module 102 and the debugging module 104 may be deployed in the same cloud computing cluster.
  • the cloud computing cluster is a public cloud provided by a cloud service provider.
  • the interaction module 102 may be a cloud IDE (cloud IDE), and the debugging module 104 may be a cloud debugger.
  • Cloud service providers can integrate cloud debugger and cloud IDE into one cloud service for users to use, or provide cloud IDE and cloud debugger respectively for users to use.
  • cloud service providers can use cloud debugger as a value-added service of cloud IDE. After users purchase or lease the value-added service, the cloud service provider combines it with the cloud IDE and provides it for users to use.
  • the interaction module 102 and the debugging module 104 may also be deployed in different cloud computing clusters, for example, different cloud computing clusters provide public clouds for different cloud service providers.
  • the interaction module 102 is cloud IDE
  • the debugging module 104 is cloud debugger.
  • Different cloud service providers provide cloud IDE and cloud debugger for users.
  • the application 200 debugged by the application debugging system 100 can be deployed in the same or different cloud computing cluster as the interaction module 102 and/or the debugging module 104, or independently deployed in any data center (for example, a user-owned data center).
  • the foregoing FIGS. 2A, 2B, and 2C exemplarily show the situation in which the application 200 is deployed in the data center 300.
  • the user manually runs commands to run a set of daemon sets on each node of the cluster, such as log collection Process fluentd, logstash, system monitoring process collectd, ganglia gmond, system management process kube-proxy, kube-dns, etc. In this way, the host agent is run on the node.
  • a set of daemon sets such as log collection Process fluentd, logstash, system monitoring process collectd, ganglia gmond, system management process kube-proxy, kube-dns, etc.
  • the containers can be created and run by the same cloud container engine (CCE), and the sub-application modules of the application 200 are run in each container.
  • CCE provides users with a container creation interface, which also carries host agent deployment controls. If the user selects the host agent deployment control, CCE can automatically deploy the host agent on each node of the cluster when creating the container.
  • FIG. 1 illustrates that each sub-application module of the application 200 deploys only one replica.
  • at least one sub-application module of the application 200 may deploy multiple copies.
  • each copy includes an agent.
  • the host agent can broadcast debugging messages to multiple copies of the agent.
  • the debugging module 104 first routes the debugging messages to different nodes, and then the host agents on the different nodes broadcast the debugging messages to the corresponding agents.
  • the agent of a copy of the sub-application module can start the debugging of the sub-application module according to the debugging message (specifically, the debugging instruction in the debugging message), and generate a debugging response to the debugging instruction, and the application debugging system 100 generates the debugging response according to the debugging response. Debug the result, so as to realize the debugging of the sub-application module. It should be noted that when an agent of a copy of the sub-application module returns a debugging response, it may first return the debugging response to the host agent, and then return it to the application debugging system 100 through the host agent.
  • the host agent provides another transmission path for debugging instructions and debugging responses (other transmission paths other than the load balancing server), which prevents the debugging instructions for the same sub-application module from being balanced to different copies of the application sub-module
  • the agent guarantees the continuity of the debugging process and improves the usability in the multi-copy scenario.
  • the method includes:
  • the application debugging system 100 receives identifiers of multiple sub-application modules input or selected by the user.
  • the application debugging system 100 may present a list of sub-application modules of the application 200 and/or a topology diagram of the sub-application modules of the application 200 to the user through a user interface.
  • the topology diagram of the sub-application module is used to identify the calling relationship between the sub-application modules of the application 200.
  • the user can select multiple sub-application modules through the aforementioned user interface (for example, GUI), and the application debugging system 100 receives the identification of the multiple sub-application modules selected by the user through the user interface (for example, GUI).
  • the user can directly input the identifications of multiple sub-application modules through the aforementioned user interface (such as CUI), and the interaction module 102 of the application debugging system 100 receives multiple sub-application modules input by the user through the user interface (such as CUI). To debug multiple sub-application modules.
  • the aforementioned user interface such as CUI
  • the interaction module 102 of the application debugging system 100 receives multiple sub-application modules input by the user through the user interface (such as CUI).
  • CUI user interface
  • the topology diagram presented by the interaction module 102 can be constructed according to the structural information of the application 200.
  • the structure information includes at least one of the identification of the application, the identification of the sub-application module (for example, microservice), and the identification of the resource to which the sub-application module (for example, the microservice) belongs.
  • the identifier of the resource to which the sub-application module belongs may be the identifier of the resource to which each copy of the sub-application module belongs.
  • the resource may be a physical machine (physical machine) or a virtual machine (virtual machine), container (container), etc. deployed on the physical machine.
  • the structure information can be used to index the sub-application modules available in the application 200.
  • the application debugging system 100 may also store structure information of the application, including any one or more of the identification of the application, the identification of the sub-application module, and the identification of the resource. These identities can be stored in the form of key-value pairs (key:value).
  • key:value key-value pairs
  • the application 200 is an application based on a microservice architecture, and the structure information specifically includes the following information:
  • apps represent applications
  • tiers represent microservices
  • resources represent resources.
  • appName represents the name of the application
  • appId represents the identification of the application
  • the appId can be generated according to the projectId and appName of the project.
  • the appId may be obtained by concatenating the projectId, the default (default) field, and the appName, and then using the message digest (message digest 5, MD5) algorithm.
  • the appId may be the MD5 value of ⁇ projectId ⁇
  • tierId represents the identity of the microservice
  • tierName represents the name of the microservice.
  • the tierId can be generated based on the tierName.
  • the tierId can be obtained by processing the tierName and default fields using the MD5 algorithm.
  • resourceId represents the identifier of the resource, which can be obtained according to the containerId of the container.
  • resourceId can be the MD5 value of containerId.
  • the agent of the sub-application module is also started.
  • the agent resides in the process of the sub-application module, and its lifetime is the same as the process of the sub-application module.
  • the agent can send structure information to the application debugging system 100.
  • the application debugging system 100 can store structure information, for example, store structure information in a cache such as Redis cache.
  • the interaction module 102 can obtain the structure information from the Redis cache, and construct the topology diagram of the sub-application modules of the application according to the structure information.
  • the agent when the agent sends the structure information, it can be sent to the host agent first.
  • the host agent can summarize the structure information sent by different agents, and then store the summarized structure information.
  • the agent can also update structural information.
  • the agent may periodically send structure information to update the structure information stored in the application debugging system 100.
  • the interaction module 102 can also obtain updated structural information, adjust the topology of the sub-application module of the application 200 according to the updated structural information, and present the adjusted topology of the sub-application module 200 to the user.
  • the debugging process of the application 200 by the application debugging system 100 is implemented based on a debugging session (debug session).
  • the interaction module 102 can present to the user a list of sub-application modules of the application 200 and/or a topology diagram of the sub-application modules of the application 200 through the user interface.
  • the user can use the above-mentioned sub-application module list or topology diagram to A plurality of sub-application modules are selected, and the application debugging system 100 respectively establishes a debugging session according to the identifiers of the plurality of sub-application modules.
  • the application 200 based on the microservice architecture is used as an example for description below.
  • FIG. 4 provides a schematic diagram of a debugging selection interface.
  • a start debugging control 404 is displayed in the interface 400.
  • the startup debugging control 404 is used to start debugging of the application and establish a debugging session.
  • the debugging session establishment page 408 is presented in the interface 400, for example, the debugging session establishment page 408 is presented in a pop-up window.
  • the debugging session establishment page 408 is provided with an application selection control.
  • the debugging session establishment page 408 displays a list of microservices of the application 200.
  • the list includes microservice 1, microservice 2...microservice 5. The user can select multiple microservices from the microservice list to establish multiple debugging sessions, and each debugging session corresponds to a microservice.
  • the view topology control 406 is also displayed in the interface 400.
  • the view topology control 406 is used to display the topology map of the microservice for the user to view.
  • the interface 400 also displays a topology diagram 410 of the microservice.
  • the circles represent microservices
  • the dotted arrows between the circles represent the calling relationship between the microservices.
  • the application 200 includes multiple microservices such as microservice 1, microservice 2...microservice 5, microservice 1 calls microservice 2, microservice 4, and microservice 2 calls Microservice 3 and Microservice 4 call Microservice 3 and Microservice 5.
  • the topology map 410 can also present the calling relationship between the microservices, which can assist the user in determining which microservice or microservices to debug.
  • FIG. 5 is an example of the interface 400 presenting the list and the topology diagram 410 at the same time.
  • the interface 400 may also present any one of the list and the topology map 410, and switch to the other through the corresponding control when needed.
  • the debugging session establishment page 408 in the interface 400 also displays a confirmation control 409. After the user selects multiple microservices through the microservice selection control, click the confirmation control 409 to trigger Establish a debugging session for the selected multiple microservices.
  • the application debugging system 100 debugs the code blocks of the multiple sub-application modules according to the identifiers of the multiple sub-application modules.
  • the application debugging system 100 may generate multiple debugging instructions according to the received identifiers of the multiple sub-application modules.
  • the debugging instruction includes a debugging session establishment instruction.
  • the application debugging system 100 can establish multiple debugging sessions with agents of multiple sub-application modules to be debugged according to multiple debugging session establishment instructions.
  • debugging sessions have a one-to-one correspondence with the agents of multiple sub-application modules.
  • Each debugging session has a unique debugging session ID (debug session ID).
  • the agent of the interaction module 102 and the sub-application module can be uniquely determined.
  • the interaction module 102 may also present a breakpoint setting control, a stack information viewing control, a variable display control, a variable tracking control, or a single step execution control, etc. in a user interface such as a GUI.
  • These controls can be presented on the debugging session establishment page as shown in Figure 4, or can be presented on an independent debugging configuration page.
  • the user can trigger debugging operations such as setting breakpoints through the above-mentioned controls presented on the independent debugging configuration page.
  • the interaction module 102 generates a debugging instruction according to the debugging operation triggered by the user through the above-mentioned control.
  • the debugging instructions include one or more of instructions for setting breakpoints, instructions for viewing stack information, instructions for displaying a certain variable, instructions for tracing a certain variable, or instructions for single-step execution. Each debugging instruction can be encapsulated in multiple debugging messages.
  • the debugging module 104 may send multiple debugging messages to the agents of multiple sub-application modules.
  • the agent can obtain the debugging instruction, and start the debugging of the code block of the corresponding sub-application module according to the debugging instruction.
  • the agent of the sub-application module can generate a debugging response.
  • the interaction module 102 may also obtain the debugging response of the agent of each sub-application module to be debugged, generate a debugging result according to the debugging response, and present the debugging result to the user.
  • the debugging module 104 encapsulates the instruction and routes the debugging message carrying the debug session ID to the agent of the corresponding sub-application module.
  • the agent can set the breakpoint after receiving the instruction to set the breakpoint.
  • the agent executes to the breakpoint position, it stops executing. Among them, the agent can also return a debugging response, which is the actual breakpoint location.
  • the debugging module 104 routes the debugging message that encapsulates the instruction and carries the debug session ID to the agent of the corresponding sub-application module.
  • the agent receives the command to display the variable and can print the value of the variable.
  • the agent can also return a debugging response, which is specifically the value of a variable.
  • the debugging module 104 routes the debugging message that encapsulates the instruction and carries the debug session ID to the agent of the corresponding sub-application module.
  • the agent receives the instruction to view the stack information, and can obtain the stack information, such as obtaining the identifier of the executed function in the call stack and/or the identifier of the currently executing function, etc. Wherein, the agent may also return a debugging response to the debugging module 104, and the debugging response is specifically stack information.
  • the user can also delete the control through the breakpoint presented in the user interface, cancel the tracking control to trigger a debugging operation, and generate a debugging instruction.
  • the debugging instruction may include an instruction to delete a breakpoint (delete some or all breakpoints) and/or an instruction to cancel tracking a certain variable.
  • the debugging module 104 encapsulates the instruction and routes the debugging message carrying the debug session ID to the agent of the corresponding sub-application module.
  • the agent receives an instruction to delete a breakpoint, it can delete the corresponding breakpoint to prevent the agent from stopping execution at the corresponding position.
  • the agent can also return a debugging response, which is used to indicate that the deletion is successful.
  • the debugging module 104 routes the debugging message that encapsulates the instruction and carries the debug session ID to the agent of the corresponding sub-application module.
  • the agent receives an instruction to cancel tracking a variable, and cancels tracking the variable. Among them, the agent can also return a debugging response, which is used to indicate a successful cancellation.
  • the debugging module 104 may first detect whether the debug session corresponding to each debugging command exists, and if so, route each debugging command and the corresponding debug session ID to the agent of the corresponding sub-application module, if If not, establish a corresponding debug session according to the debugging instructions, and then route each debugging instruction and the corresponding debug session ID to the corresponding microservice agent.
  • the agent receives the above-mentioned debugging instruction and starts the debugging of the corresponding microservice.
  • the interaction module 102 obtains the debugging response of the corresponding agent, and the debugging response can be used to generate the debugging result, so that the debugging of the sub-application module can be realized.
  • the application debugging system 100 may include multiple interaction modules 102, such as multiple IDEs. Multiple users can simultaneously debug multiple sub-application modules of the application 200 through their respective interactive modules 102 such as IDEs. Among them, different users can debug the same sub-application module of the application 200, and can also debug different sub-application modules of the application 200.
  • the application debugging system 100 can establish debugging sessions for the multiple users.
  • the debugging session has a one-to-one correspondence with the sub-application module being debugged and the interaction module 102 (or user) that initiates the debugging process.
  • the debugging module 104 of the application debugging system 100 creates n*m debugging sessions according to the operations of the n users.
  • n is greater than or equal to 1
  • m is greater than or equal to 1.
  • S306 The application debugging system 100 presents the debugging result to the user.
  • the debugging results include intermediate debugging results and/or final debugging results.
  • the application debugging system 100 displays the intermediate debugging result.
  • the intermediate debugging result is used to characterize the result produced during the debugging process.
  • the results produced during the commissioning process can be characterized by the commissioning schedule graph.
  • the application debugging system 100 displays the final debugging result.
  • the final debugging result is used to characterize the successful or failed debugging.
  • the debugging progress graph includes one or more of the following information: the sub-application module that has been debugged, the sub-application module that is being debugged, the sub-application module that is debugging an error, the reminding information of the debugging error, the type of the debugging error, the sub-application The request/response flow of the module.
  • Debugging error reporting means that an error occurs in the code block of the sub-application module during operation.
  • the application debugging system 100 detects the error through debugging and reports the error to the user.
  • the interaction module 102 of the application debugging system 100 can also present the stack information and/or variables of the sub-application module debugging process to the user. Specifically, the interaction module 102 may dynamically present stack information and/or variables of the debugging process according to the debugging progress.
  • the interaction module 102 of the application debugging system 100 may present the debugging results to the user through GUI or CUI.
  • GUI GUI
  • CUI CUI
  • the interface 600 presents a debugging result control.
  • the interface 600 displays a debugging progress graph 602.
  • the debugging progress graph 602 includes the microservices that have been debugged, the microservices that are being debugged, the microservices that are debugging errors, the reminding information of the debugging errors, the debugging error types, and the request/response flow of the microservices.
  • the microservices that have been debugged, the microservices that are being debugged, and the microservices that are debugging errors can be distinguished by text, symbols, colors, or shapes.
  • the interaction module 102 can adjust the color of the microservice identifier in the microservice topology, and identify the debugged microservices and the microservices that are being debugged from the microservices of the application 200. For example, the interaction module 102 adjusts the identifiers of microservice 1 and microservice 2 from gray to green, indicating that microservice 1 and microservice 2 have been debugged, and adjusting the color of microservice 3 from gray to yellow indicates that microservice 3 is in progress debugging.
  • the debugging progress graph is a grayscale image
  • the debugged microservices and the microservices that are being debugged can also be identified based on different grayscales.
  • the interaction module 102 may also identify the microservice that debugs the error from the microservices of the application 200 through the reminder message of the debugging error.
  • the microservice 3 is connected to an error prompt box 609 through a connection line, and the error prompt box 609 includes reminder information for debugging errors, so that the microservice 3 can be identified as a microservice for debugging errors.
  • the reminding information of debugging error includes debugging error type, such as missing parameter, parameter type error, parameter verification abnormality and other error types.
  • the debugging error type of microservice 3 is 5003, which is used to indicate that the parameter verification is abnormal.
  • the interaction module 102 can also add the request/response flow of the microservice to the topology diagram to assist in describing the debugging progress of the microservice. For example, if a request stream (data stream formed by debugging instructions) flows in or a response stream (data stream formed by debugging responses) flows out, it indicates that the microservice has been debugged or is being debugged; neither request stream flows in nor response stream Outflow, indicating that the microservice has not been debugged.
  • the user can determine the next or next set of microservices to be debugged.
  • the request flow and the response flow indicate that the microservice 1, the microservice 2, and the microservice 3 have started debugging, that is, a branch of the application 200 has started debugging.
  • the user may determine to debug another branch of the application 200.
  • the other branch can be a branch formed by microservice 1, microservice 4, and microservice 3, or a branch formed by microservice 1, microservice 4, and microservice 5. Since microservice 1 has started debugging, users can Determine to debug microservice 4.
  • the interaction module 102 can also identify the type of debugging for the microservice by modifying the shape of the microservice identifier in the topology diagram. For example, add a circle to the identifier of microservice 3 to indicate that microservice 3 is being debugged with a breakpoint. In some implementation manners, the interaction module 102 can also modify the identifier of the microservice to a square to indicate that the microservice is being stepped through.
  • the interface 600 may also present the stack information 603 and/or the value 604 of the variable.
  • the stack information 603 may include the identifiers of the executed functions in the call stack (function 1 and function 2 in this example). Further, the stack information 603 may also include information such as the identification of the currently executed function (function 3 in this example).
  • the value 604 of the variable may be specifically presented by key value pairs. As shown in FIG. 6, the interface 600 may also present the name of the local variable and the value of the local variable.
  • the stack information 603 and/or the value of the variable 604 presented on the interface 600 may change with the debugging process.
  • interface 600 presents the executed functions and currently executing functions in the call stack of microservice 2, and presents the values of local variables involved in these functions.
  • interface 600 Present the executed functions and currently executing functions in the call stack of microservice 3, and present the values of local variables involved in these functions.
  • a code block 606 may also be presented in the interface 600.
  • the user can determine the theoretical value of the variable according to the code block 606, and determine whether the corresponding code block 606 is abnormal according to the theoretical value and the value 604 of the variable displayed in the interface 600.
  • the interface 600 also includes a code file directory 608.
  • the code file directory 608 can be used to quickly jump between different code blocks 606 (or different source code files) of the application 200, thereby enabling quick jump to the code blocks 606 of other microservices for debugging.
  • the interface 600 also displays a debugging console control.
  • the debugging console control When the debugging console control is triggered, it is used to switch to the debugging console, so that the user can continue to debug the application 200 based on the debugging console, such as executing the debugging of other microservices of the application 200.
  • an embodiment of the present application provides an application debugging method.
  • the application debugging system 100 receives the identifications of multiple sub-application modules input or selected by the user, debugs the code blocks of the multiple sub-application modules according to the identifications of the multiple sub-application modules, and then presents the debugging results to the user.
  • This method supports the debugging of multiple sub-application modules of the application 200 at the same time, which improves the debugging efficiency.
  • users can directly debug the sub-application modules of the application 200 in the production environment, without the need to reproduce the exceptions generated by the application 200 running in the production environment in the development environment, and there is no need to load code blocks into the IDE for local debugging.
  • the debugging efficiency is further improved.
  • the debugging instructions routed by the application debugging system 100 to the agent are carried in debugging messages.
  • the debug message can be a message based on the debug adapter protocol (debug adapter protocol). Therefore, the agent can also convert the standard DAP debug message into a debug message corresponding to the upper layer application, specifically the technology stack (or Programming language) corresponding debugging messages. For example, when the debugged sub-application module is developed based on the Java technology stack (or Java language), the agent can convert the standard DAP debugging message into a debugging message based on the Java debugging interface (java debug interface, JDI).
  • the agent can pre-deploy the language debugging module corresponding to the technology stack (or programming language) of the upper sub-application module such as the microservice.
  • the application debugging system 100 may store at least one language debugging module corresponding to the technology stack, for example, the language debugging module corresponding to the C technology stack, the Python technology stack, and the Java technology stack.
  • the language debugging module can be specifically stored in a cloud container engine (cloud container engine, CCE) storage file set (storage volume) or a hadoop distributed file system (hadoop distributed file system, HDFS).
  • the application debugging system 100 may receive a language debugging module deployment request from an agent, and then in response to the language debugging module deployment request, obtain the program code of the language debugging module requested by the agent, and send the program code of the language debugging module to the agent to Deploy the corresponding language debugging module in the agent.
  • the application 200 may be a heterogeneous application. That is, multiple sub-application modules of the application 200 may include code blocks written based on a programming language.
  • the application debugging system 100 can deploy the language debugging module of the corresponding programming language in the corresponding agent, so as to realize the debugging of heterogeneous applications.
  • the application to be debugged is deployed in a production environment, and the sub-application modules included in the application run in the production environment to provide services.
  • the system 100 includes:
  • the interaction module 102 is configured to receive identifiers of multiple sub-application modules input or selected by the user, wherein the code blocks included in each sub-application module are used to implement the functions of the application;
  • the debugging module 104 is configured to debug the code blocks of the multiple sub-application modules according to the identifiers of the multiple sub-application modules;
  • the interaction module 102 is also used to present debugging results to the user.
  • the interaction module 102 is used to:
  • the user is presented with a debugging progress graph of the application through the GUI, where the debugging progress graph includes one or more of the following information: sub-application modules that have been debugged, sub-application modules being debugged, and debugging errors
  • sub-application modules that have been debugged
  • sub-application modules being debugged and debugging errors
  • the sub-application module, the warning message of debugging error, the type of debugging error, and the request/response flow of the sub-application module is presented with a debugging progress graph of the application through the GUI, where the debugging progress graph includes one or more of the following information: sub-application modules that have been debugged, sub-application modules being debugged, and debugging errors
  • the sub-application module the warning message of debugging error, the type of debugging error, and the request/response flow of the sub-application module.
  • the interaction module 102 is used to:
  • the user is presented with stack information and/or variables of the sub-application module being debugged during the debugging process.
  • the interaction module 102 is specifically configured to:
  • the interaction module 102 is also used to:
  • the interaction module 102 is also used to:
  • a topology diagram of the sub-application modules of the application is constructed according to the structural information of the application, and the topology diagram of the sub-application modules represents the calling relationship between the sub-application modules of the application.
  • the interaction module 102 is also used to:
  • each sub-application module of the application corresponds to an agent, and the agent of each sub-application module is used to receive debugging instructions and initiate debugging of the code blocks in the corresponding sub-application modules according to the debugging instructions.
  • the interaction module 102 is also used to:
  • the debugging module 104 is specifically used for:
  • the debugging initiated by each agent is an independent thread in the running process of the corresponding sub-application module.
  • the production environment includes at least one node, and one or more sub-application modules of the application are deployed in each node, and the debugging module 104 is specifically configured to:
  • Each debugging instruction is routed to the node agent of the node where each sub-application module to be debugged is located, and the node agent then routes each debugging instruction to the agent corresponding to each sub-application module to be debugged.
  • the agent corresponding to each sub-application module and the node agent of each node are code blocks deployed in the production environment at the same time as the application.
  • each sub-application module of the application runs in an independent container, and the sub-application modules running in the container interact with each other through an interface of the container.
  • the multiple sub-application modules include code blocks written in different programming languages, and each debugging instruction is encapsulated as a debugging message and routed to the agent corresponding to the sub-application module to be debugged; each sub-application The agent corresponding to the module is used to convert the debugging message into a debugging message corresponding to the programming language of the sub-application module.
  • the application debugging system 100 may correspond to the method described in the embodiment of the present application, and the foregoing and other operations and/or functions of the various modules/units of the application debugging system 100 are to implement the implementation shown in FIG. 3, respectively.
  • the corresponding process of each method in the example will not be repeated here.
  • the embodiment of the present application also provides a computing device 700.
  • the computing device 700 may be an end-side device such as a notebook computer and a desktop computer, or a cloud computing device (such as a cloud server) in a cloud environment, or a combination of an end-side device and a cloud computing device.
  • the computing device 700 is specifically used to implement the functions of the application debugging system 100 in the embodiment shown in FIG. 1.
  • FIG. 7 provides a schematic structural diagram of a computing device 700.
  • the computing device 700 includes a bus 701, a processor 702, a display 703, and a memory 704.
  • the processor 702, the memory 704, and the display 703 communicate through a bus 701.
  • the bus 701 may be a peripheral component interconnect standard (PCI) bus or an extended industry standard architecture (EISA) bus, etc.
  • PCI peripheral component interconnect standard
  • EISA extended industry standard architecture
  • the bus can be divided into address bus, data bus, control bus and so on. For ease of presentation, only one thick line is used to represent in FIG. 7, but it does not mean that there is only one bus or one type of bus.
  • the processor 702 may be a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (digital signal processor, DSP), etc. Any one or more of the devices.
  • CPU central processing unit
  • GPU graphics processing unit
  • MP microprocessor
  • DSP digital signal processor
  • the display 703 is an input/output (I/O) device.
  • the device can display electronic files such as images and text on the screen for users to view.
  • the display 703 can be divided into a liquid crystal display (LCD), an organic light emitting diode (OLED) display, and the like.
  • the display 703 may receive identifiers of multiple sub-application modules input or selected by the user, and present the debugging results to the user, and so on.
  • the memory 704 may include a volatile memory (volatile memory), such as a random access memory (RAM).
  • volatile memory such as a random access memory (RAM).
  • RAM random access memory
  • non-volatile memory such as read-only memory (ROM), flash memory, hard drive (HDD) or solid state drive (solid state drive). , SSD).
  • the memory 704 stores executable program codes, and the processor 702 executes the executable program codes to implement the functions of the aforementioned application debugging system 100 or execute the application debugging methods described in the aforementioned embodiments. Specifically, the processor 702 executes the above-mentioned program code to control the display 703 to receive the identifications of multiple sub-application modules selected by the user through the GUI, or to receive the identifications of multiple sub-application modules input by the user through the CUI, and then the display 703 communicates with the user through the bus 701.
  • the processor 702 transmits the identifiers of multiple sub-application modules selected or input by the user, and the processor 702 debugs the code blocks of the multiple sub-application modules according to the identifiers of the multiple sub-application modules, and controls the display 703 to present the debugging results to the user.
  • the processor 702 may also control other interfaces to receive the identities of multiple sub-application modules.
  • other interfaces may be microphones and so on.
  • the microphone may receive the identification of the sub-application module expressed in the form of voice.
  • the processor 702 may also execute method steps corresponding to any one of the implementation manners provided in the foregoing method embodiments, and details are not described herein again.
  • the embodiment of the present application also provides a computer-readable storage medium.
  • the computer-readable storage medium may be any available medium that can be stored by a computing device or a data storage device such as a data center containing one or more available media.
  • the usable medium may be a magnetic medium (for example, a floppy disk, a hard disk, and a magnetic tape), an optical medium (for example, a DVD), or a semiconductor medium (for example, a solid state hard disk).
  • the computer-readable storage medium includes instructions that instruct the computing device to execute the above-mentioned application debugging method applied to the application debugging system 100.
  • the embodiment of the application also provides a computer program product.
  • the computer program product includes one or more computer instructions. When the computer instructions are loaded and executed on the computing device, the processes or functions described in the embodiments of the present application are generated in whole or in part.
  • the computer instructions may be stored in a computer-readable storage medium, or transmitted from one computer-readable storage medium to another computer-readable storage medium.
  • the computer instructions may be transmitted from a website, a computer, or a data center through a cable (Such as coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (such as infrared, wireless, microwave, etc.) to another website site, computer or data center.
  • a cable such as coaxial cable, optical fiber, digital subscriber line (DSL)
  • wireless such as infrared, wireless, microwave, etc.
  • the computer program product may be a software installation package.
  • the computer program product may be downloaded and executed on a computing device.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种应用调试方法,用于对部署在生产环境中的应用进行调试,应用包括的子应用模块在生产环境中运行以提供服务,该方法包括:接收用户输入或选择的多个子应用模块的标识,根据多个子应用模块的标识,对多个子应用模块的代码块进行调试,向用户呈现调试结果。该方法支持用户选择或输入多个待调试的子应用模块,并在生产环境对多个子应用模块进行调试,提高了应用调试的效率,也使得用户可以更方便地进行应用的调试。

Description

一种应用调试方法、系统、设备及介质
本申请要求于2020年05月26日提交中国知识产权局、申请号为202010456122.7、申请名称为“一种应用调试方法、装置、设备及介质”的中国专利申请,以及于2020年8月14日提交中国知识产权局、申请号为202010819208.1、申请名称为“一种应用调试方法、系统、设备及介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及应用开发技术领域,尤其涉及一种应用调试方法、应用调试系统、计算设备以及计算机可读存储介质。
背景技术
应用是针对用户的某种特殊应用目的所编写的计算机程序的集合。应用从立项到交付给客户,通常会经历开发、测试、上线等多个阶段。其中,在开发、测试、上线的各个阶段往往会配置相应的环境,例如开发环境(development environment)、测试环境(testing environment)、生产环境(production environment)。
开发人员常需要对应用进行调试,应用的调试包括利用人工或者编译的方式检测出应用的程序代码中的错误,进而可以根据调试过程中发现的错误对程序代码进行修正。目前,业界对应用的调试通常是通过集成开发环境(integrated development environment,IDE)在开发环境下对应用的程序代码进行调试。
针对已上线(即已部署到生产环境)的应用,如何进行高效的调试成为了业界重点关注的问题。
发明内容
本申请提供了一种应用调试方法,实现了在生产环境下直接对应用的多个子应用模块进行调试,提高了调试效率。本申请还提供了上述方法对应的应用调试系统、计算设备、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种应用调试方法。待调试的应用部署在生产环境(production environment)。生产环境是指正式提供服务的环境。在一些实施例中,生产环境可以是客户自有的数据中心,或者是客户购买、租赁的公有云平台等等。
应用包括的子应用模块在上述生产环境中运行以提供服务。子应用模块是指通过计算机可执行的代码块实现一种或多种功能的功能模块。在一些实施例中,例如在基于微服务架构的应用中,该应用包括的子应用模块可以是微服务。子应用模块在形式上也可以是一个或多个源代码文件。
该方法可以由应用调试系统执行。应用调试系统接收用户输入或选择的多个子应用模块的标识。其中,每个子应用模块包括的代码块用于实现应用的功能。然后应用调试系统 根据多个子应用模块的标识,对所述多个子应用模块的代码块进行调试。接着应用调试模块向用户呈现调试结果。
该方法能够支持用户对多个子应用模块进行调试选择,对应用的多个子应用模块进行调试,提高了应用的调试效率。进一步地,在该方法中,用户可以直接在生产环境下进行调试,无需在开发环境下重现生产环境下应用运行所产生的异常,提高了调试效率。并且,在一些实施例中,该方法支持对应用进行云调试,无需将子应用模块包括的代码块加载至集成开发环境(integrated development environment,IDE),通过IDE在开发环境下对应用进行本地调试,也无需将调试后的应用重新部署到生产环境,节省了时间,进一步提高了调试效率。
在一些可能的实现方式中,应用调试系统可以在调试过程中,通过图形用户界面(graphical user interface,GUI)向所述用户呈现所述应用的调试进度图,从而实现向用户呈现调试结果(具体是中间调试结果)。
其中,所述调试进度图包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。调试报错是指子应用模块的代码块在运行过程中发生错误,应用调试系统通过调试检测出该错误,并向用户报告该错误。调试报错类型可以包括缺少参数、参数类型错误、参数校验异常等错误类型。
一方面,调试进度图可以帮助用户快速获知调试状况,另一方面调试进度图可以为用户确定下一个或下一组待调试的子应用模块提供参考,以及为用户对调试报错的子应用模块的代码块进行修改提供参考。
在一些可能的实现方式中,应用调试系统可以向所述用户呈现被调试的子应用模块在调试过程中的栈信息和/或变量,由此实现向用户呈现调试结果(具体为中间调试结果)。需要说明的是,随着调试过程的进行,应用调试系统可以动态地向用户呈现被调试的子应用模块在调试过程中的栈信息和/或变量。
其中,栈信息可以包括调用栈中已执行的函数的标识。进一步地,栈信息还可以包括当前执行的函数的标识等信息。变量是指上述函数涉及的变量(如局部变量)。
通过呈现栈信息和变量,可以方便用户基于变量的值与预期值是否相同,从而确定子应用模块的代码块是否异常,为应用调试提供帮助。
在一些可能的实现方式中,应用调试系统可以接收用户通过GUI选择的所述多个子应用模块的标识。当然,应用调试系统可以接收用户通过命令用户界面(command user interface,CUI)输入的所述多个子应用模块的标识。
当应用调试者与应用开发者不同时,通过GUI进行调试对于应用调试者更为友好。当应用调试者与应用开发者相同时,通过CUI进行调试的过程更加简单。
在一些可能的实现方式中,在接收用户输入或选择的多个子应用模块的标识之前,应用调试系统还可以通过用户界面(如CUI和/或GUI)向所述用户呈现所述应用的子应用模块列表,和/或,通过用户界面(如GUI)向所述用户呈现所述应用的子应用模块的拓扑图。
如此,可以方便用户输入或选择多个子应用模块的标识,以便对多个子应用模块进行调试。
在一些可能的实现方式中,应用调试系统可以获取所述应用的结构信息,该结构信息包括应用的标识、子应用模块(例如微服务)的标识、子应用模块(例如微服务)所属资源的标识中的至少一种。当应用的至少一个子应用模块包括多个副本时,子应用模块所属资源的标识可以是子应用模块的各个副本所属资源的标识。该资源可以是物理机(physical machine)或者部署在物理机上的虚拟机(virtual machine)、容器(container)等。然后应用调试系统根据所述应用的结构信息构建所述应用的子应用模块的拓扑图。其中,所述子应用模块的拓扑图表示所述应用的各个子应用模块之间的调用关系。
与采用列表的形式呈现应用的子应用模块相比,通过拓扑图还能够呈现子应用模块之间的调用关系,如此可以辅助用户确定对哪个或哪些子应用模块进行调试。
在一些可能的实现方式中,考虑到应用在不同时刻可用的子应用模块可以发生变化,交互模块102还可以获取更新后的结构信息,根据更新后的结构信息调整应用的子应用模块的拓扑图,向用户呈现调整后的子应用模块的拓扑图。
该方法可以使得用户尽可能地获得较新的拓扑图,避免用户对发生故障的子应用模块进行调试,导致调试效率降低以及资源浪费。
在一些可能的实现方式中,所述应用的每个子应用模块对应一个代理,每个子应用模块的代理用于接收调试指令,并根据调试指令启动对对应的子应用模块中的代码块的调试。
其中,子应用模块(如微服务)在运行时产生一个进程,子应用模块的代理在运行时实质上相当于寄宿在该进程中的独立线程。应用调试系统调试应用的子应用模块时,不会阻塞上述进程,直接通过寄宿在该进程的线程进行交互,如此可以实现在生产环境对子应用模块的调试。
在一些可能的实现方式中,考虑到调试过程是基于会话实现的,应用调试系统可以根据所述多个子应用模块的标识,生成多个调试指令。该调试指令可以包括调试会话建立指令。应用调试系统可以根据所述多个调试指令,与待调试的多个子应用模块的多个代理建立多个调试会话。然后获取每个待调试的子应用模块的代理的调试响应,所述调试响应用于生成所述调试结果。如此实现对多个子应用模块的调试。
通过上述方法可以实现在生产环境中直接对多个子应用模块进行调试,大幅度提高了应用调试效率。
在一些可能的实现方式中,每个代理启动的调试为对应的子应用模块的运行进程中的一个独立线程。应用调试系统调试应用的子应用模块时,不会阻塞上述进程,直接通过寄宿在该进程的线程进行交互,如此可以实现在生产环境对子应用模块的调试,避免了在开发环境下重新运行环境中产生的异常,将代码块加载至IDE进行本地调试,以及异常排除后将应用重新部署上线导致的时间成本增加,进一步提高了调试效率。
在一些可能的实现方式中,所述生产环境中包括至少一个节点,每个节点中部署所述应用的一个或多个子应用模块。应用调试系统可以将每个调试指令路由至每个待调试的子应用模块所在节点的节点代理,进而由所述节点代理将每个调试指令路由至每个待调试的子应用模块对应的代理。
如此为应用调试系统支持同时对多个子应用调试模块进行调试提供了帮助,进而提高了应用调试效率。
在一些可能的实现方式中,每个子应用模块对应的代理和每个节点的节点代理为与所述应用同时部署在所述生产环境的代码块。
其中,每个子应用模块对应的代理用于调试对应的子应用模块,调试过程可以并行,因此可以提高调试效率。节点代理提供了调试指令、调试响应的另一种传输路径(除负载均衡服务器之外的其他传输路径),避免了对同一子应用模块的调试指令被均衡至该应用子模块的不同副本的代理,保障了调试过程的连续性,提高了多副本场景下的可用性。
在一些可能的实现方式中,所述应用的每个子应用模块运行在独立的容器中,容器中运行的子应用模块之间通过容器的接口进行交互。该方法将每个子应用模块运行在独立的容器中,保障了子应用模块的独立性,进而保障了子应用模块的代理的独立性,使得子应用模块的代理对子应用模块的调试可以并行,提高了调试效率。
在一些可能的实现方式中,所述多个子应用模块中包括不同编程语言编写的代码块。每个调试指令被封装为调试消息路由至所述待调试的子应用模块对应的代理。每个子应用模块对应的代理用于将所述调试消息转换为子应用模块的编程语言对应的调试消息。
其中,应用调试系统可以在对应的子应用模块的代理中部署相应编程语言的语言调试模块,从而实现对异构应用的调试。
第二方面,本申请提供了一种应用调试方法。其中,待调试的应用部署在生产环境,所述应用的子应用模块在所述生产环境中运行以提供服务,该方法可以由应用调试系统的交互模块,例如IDE或浏览器实现。
具体地,交互模块可以通过GUI向用户呈现所述应用的子应用模块列表和/或所述子应用模块的拓扑图。其中,所述子应用模块列表和/或所述子应用模块的拓扑图用于供所述用户选择多个待调试的子应用模块。然后交互模块根据所述用户在所述GUI上的调试选择操作,向所述用户呈现对所述用户选择的多个子应用模块的调试结果。
该方法能够支持同时对应用的多个子应用模块进行调试,提高了应用的调试效率。在该方法中,用户可以直接在生产环境下进行调试,无需在开发环境下重现生产环境下应用运行所产生的异常,也无需将子应用模块包括的代码块加载至IDE,通过IDE在开发环境下对应用进行本地调试,更不需要将调试后的应用重新部署到生产环境,节省了时间,进一步提高了调试效率提高了调试效率。
第三方面,本申请提供了一种呈现应用调试结果的方法。待调试的应用部署在生产环境,所述应用的子应用模块在所述生产环境中运行以提供服务。该方法可以由应用调试系统的交互模块,例如IDE或浏览器实现。
具体地,交互模块通过GUI接收用户的调试选择操作,然后在所述GUI上向所述用户呈现所述应用的调试进度图。其中,所述调试进度图表示应用调试系统对所述用户选择的一个或多个子应用模块的调试进度;所述调试进度图中包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。
一方面,调试进度图可以帮助用户快速获知调试状况,另一方面调试进度图可以为用户确定下一个或下一组待调试的子应用模块提供参考,以及对调试报错的子应用模块的代码块进行修改提供参考。
第四方面,本申请提供了一种应用调试系统。待调试的应用部署在生产环境,所述应用包括的子应用模块在所述生产环境中运行以提供服务,该系统包括:
交互模块,用于接收用户输入或选择的多个子应用模块的标识,其中,每个子应用模块包括的代码块用于实现所述应用的功能;
调试模块,用于根据所述多个子应用模块的标识,对所述多个子应用模块的代码块进行调试;
所述交互模块,还用于向所述用户呈现调试结果。
在一些可能的实现方式中,所述交互模块用于:
通过GUI向所述用户呈现所述应用的调试进度图,其中,所述调试进度图包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。
在一些可能的实现方式中,所述交互模块用于:
向所述用户呈现被调试的子应用模块在调试过程中的栈信息和/或变量。
在一些可能的实现方式中,所述交互模块具体用于:
接收用户通过图形用户界面GUI选择的所述多个子应用模块的标识,或者,接收用户通过命令用户界面CUI输入的所述多个子应用模块的标识。
在一些可能的实现方式中,所述交互模块还用于:
在接收用户输入或选择的多个子应用模块的标识之前,通过用户界面向所述用户呈现所述应用的子应用模块列表,和/或,通过用户界面向所述用户呈现所述应用的子应用模块的拓扑图。
在一些可能的实现方式中,所述交互模块还用于:
获取所述应用的结构信息;
根据所述应用的结构信息构建所述应用的子应用模块的拓扑图,所述子应用模块的拓扑图表示所述应用的各个子应用模块之间的调用关系。
在一些可能的实现方式中,所述交互模块还用于:
获取所述应用的更新后的结构信息;
根据所述更新后的结构信息调整所述应用的子应用模块的拓扑图;
向所述用户呈现调整后的所述子应用模块的拓扑图。
在一些可能的实现方式中,所述应用的每个子应用模块对应一个代理,每个子应用模块的代理用于接收调试指令,并根据调试指令启动对对应的子应用模块中的代码块的调试。
在一些可能的实现方式中,所述交互模块还用于:
根据所述多个子应用模块的标识,生成多个调试指令;
所述调试模块具体用于:
根据所述多个调试指令,与待调试的多个子应用模块中的多个代理建立多个调试会话;
获取每个待调试的子应用模块的代理的调试响应,所述调试响应用于生成所述调试结果。
在一些可能的实现方式中,每个代理启动的调试为对应的子应用模块的运行进程中的一个独立线程。
在一些可能的实现方式中,所述生产环境中包括至少一个节点,每个节点中部署所述应用的一个或多个子应用模块,所述调试模块具体用于:
将每个调试指令路由至每个待调试的子应用模块所在节点的节点代理,进而由所述节点代理将每个调试指令路由至每个待调试的子应用模块对应的代理。
在一些可能的实现方式中,每个子应用模块对应的代理和每个节点的节点代理为与所述应用同时部署在所述生产环境的代码块。
在一些可能的实现方式中,所述应用的每个子应用模块运行在独立的容器中,容器中运行的子应用模块之间通过容器的接口进行交互。
在一些可能的实现方式中,所述多个子应用模块中包括不同编程语言编写的代码块,每个调试指令被封装为调试消息路由至所述待调试的子应用模块对应的代理;每个子应用模块对应的代理用于将所述调试消息转换为子应用模块的编程语言对应的调试消息。
第五方面,本申请提供一种计算设备,所述计算设备包括处理器、存储器和显示器。所述处理器、所述存储器进行相互的通信。所述处理器用于执行所述存储器中存储的指令,以使得计算设备执行如第一方面、第二方面或第三方面的任一种实现方式中的方法。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,当所述计算机程序指令由计算设备执行时,计算设备执行上述第一方面、第二方面或第三方面的任一种实现方式中的方法。
第七方面,本申请提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得设备执行上述第一方面、第二方面或第三方面的任一种实现方式中的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种应用调试系统的架构图;
图2A为本申请实施例提供的一种应用调试系统的应用场景示意图;
图2B为本申请实施例提供的一种应用调试系统的应用场景示意图;
图2C为本申请实施例提供的一种应用调试系统的应用场景示意图;
图3为本申请实施例提供的一种应用调试方法的流程图;
图4为本申请实施例提供的一种调试选择界面的示意图;
图5为本申请实施例提供的另一种调试选择界面的示意图;
图6为本申请实施例提供的一种调试结果的显示界面的示意图;
图7为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特 征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
应用(application,APP),是针对用户的某种特殊应用目的所编写的计算机程序的集合,具体可以是单一的应用程序或者多个应用程序的集合形成的应用软件。例如,在办公领域,应用可以是单一的文本编辑应用,也可以是文本编辑应用、表格编辑应用和图形编辑应用组成的应用。
应用通常包括多个子应用模块。子应用模块是指通过计算机可执行的代码块实现一种或多种功能的功能模块,子应用模块可以是一个或者多个源代码文件。该子应用模块可以在生产环境中运行从而提供服务。其中,生产环境是指正式提供服务的环境。生产环境中包括至少一个节点,该节点是指服务器、终端计算设备等具有计算能力的计算节点。
对于功能繁多的复杂应用,开发人员可以采用微服务架构(micro services architecture,MSA)进行开发,以提高开发效率。其中,微服务架构是指将应用的功能模块拆分成独立的微服务。基于此,子应用模块可以是应用的微服务。微服务是一个或者一组相对较小且独立的功能单元的集合。微服务之间通过接口调用实现数据交互。如此,可以实现应用的各个功能模块的解耦。当应用需要新增功能、删除功能或者修改功能时,开发人员增加、删除或者修改相应的微服务即可。子应用模块也可以是一个或多个微服务。微服务在生产环境中运行,从而提供相应的服务。
针对已部署在生产环境中的应用,如果出现运行异常等问题,通常还需要对应用进行调试。其中,调试是指通过各种手段如单步执行、设置断点、打印变量内容等手段,对应用的程序代码进行查错。
目前,相关技术对已部署在生产环境中的应用的调试方法通常是将该应用的程序代码加载至集成开发环境(integrated development environment,IDE),通过IDE在开发环境下对应用的程序代码进行本地调试,在本地调试后,对确定的问题进行解决后再重新将应用部署上线。这种对已上线的应用的调试方式存在多方面问题。一方面,在开发环境下不一定能够重现生产环境下应用运行所产生的异常,开发人员需要进行额外的工作,以在开发环境下重现生产环境下应用运行所产生的异常,并根据该异常对应用的程序代码进行调试,增加了调试难度,降低了调试效率。另一方面,将应用的程序代码加载至IDE进行本地调试,以及将调试完成的应用重新部署到生产环境,增加了额外的时间成本,进一步降低了调试效率。并且,开发人员一次仅对应用的一个子应用模块进行调试,极大地影响了应用的调试效率。针对已上线(即已部署到生产环境)的应用,如何进行高效的调试成为了业界重点关注的问题。
有鉴于此,本申请实施例提供了一种更高效的应用调试方法。该方法可以由应用调试系统执行。具体地,针对部署在生产环境中待调试的应用,应用调试系统接收用户输入或选择的多个子应用模块的标识,根据多个子应用模块的标识对多个子应用模块的代码块进行调试,然后向用户呈现调试结果。
该方法能够支持用户一次选择多个待调试的子应用模块,对应用的多个子应用模块进行调试,提高了应用的调试效率。在该方法中,用户可以直接在生产环境下进行调试,无需在开发环境下重现生产环境下应用运行所产生的异常,提高了调试效率。并且,在一些 实施例中,该方法支持对应用进行云调试,无需将子应用模块包括的代码块加载至IDE,通过IDE在开发环境下对应用进行本地调试,也无需将调试后的应用重新部署到生产环境,节省了时间,进一步提高了调试效率。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实施例提供的应用调试方法的系统架构进行介绍。
如图1所示,应用调试系统100与数据中心300建立有通信通路,应用调试系统100用于对部署在数据中心300上的至少一个应用200进行调试。其中,数据中心300提供生产环境,应用200部署在生产环境中。应用200包括多个子应用模块,每个子应用模块包括的代码块用于实现应用200的功能。
应用200的子应用模块可以分布式地部署在数据中心300的至少一个节点上。例如,在图1的示例中,应用200的n个子应用模块分布式地部署于数据中心的k个节点(也称作主机),其中,k小于等于n。需要说明,子应用模块可以直接部署在节点,即部署在物理机中,也可以部署在节点上的虚拟机或容器中。应用200的每个子应用模块部署在独立的容器中时,容器中运行的子应用模块可以通过容器的接口进行交互。
每个子应用模块具有模块代理(子应用模块为微服务时,也称作微服务代理),每个节点具有节点代理(host agent)。本申请实施例将模块代理称之为代理(agent)。
agent为与应用200同时部署在生产环境的代码块。该代码块在运行时用于代理子应用模块与外部交互,以及对该子应用模块的调试。其中,子应用模块(如微服务)在运行时产生一个进程,子应用模块的agent在运行时实质上相当于寄宿在该进程中的独立线程。应用调试系统100调试应用的子应用模块时,不会阻塞上述进程,直接通过寄宿在该进程的线程进行交互,如此可以实现在生产环境对子应用模块的调试。
在一些实现方式中,agent可以通过代码注入的方式被创建。代码注入是一种向目标进程插入独立运行代码并使之运行的技术。代码注入一般可以配置环境变量(environment variables)实现。以Java平台为例,环境变量可以为JAVA_TOOL_OPTIONS,通过将环境变量赋值为待插入的代码文件的名称,例如export JAVA_TOOL_OPTIONS=“-agent-lib:hprof”,子应用模块(如微服务)的进程启动时,插入的代码文件中的代码被写入上述进程的虚拟内存空间,插入代码对应的线程也随着进程的启动而启动。作为宿主的进程未终止前,线程可以一直运行。
host agent为与应用200同时部署在生产环境的代码块。host agent用于转发来自于节点上的子应用模块的消息或者向节点上的子应用模块转发消息。host agent运行时可以产生一个进程。该进程对应的程序代码可以随着应用200的子应用模块包括的代码块部署到节点时被部署到节点。当节点上的子应用模块的进程启动时,host agent也随之启动。
应用调试系统100包括交互模块102和调试模块104。交互模块102用于接收用户输入或选择的多个子应用模块的标识,例如接收用户通过图形用户界面(graphical user interface,GUI)选择的多个子应用模块的标识,或者接收用户通过命令用户界面(command user interface,CUI)输入的多个子应用模块的标识。调试模块104用于根据多个子应用模块的标识,对多个子应用模块的代码块进行调试。交互模块102还用于向用户呈现调试结果。
在图1所示实施例中,交互模块102可以是提供应用调试功能的IDE,该IDE不仅能够用于编辑应用200的程序代码,对开发过程中的程序代码进行调试,还能够对远程已上线的应用200进行调试。交互模块102也可以是其他能够提供对已上线的应用200进行调试的功能的交互模块,例如加载有用于调试应用200的用户界面的浏览器或者专用于应用调试的交互模块。为了便于描述,后文以交互模块102为IDE进行示例说明。
在一些实现方式中,应用调试系统100的各个模块可以分布式地部署于不同环境。例如,如图2A所示,交互模块102可以部署在终端计算设备中,调试模块104可以部署在云计算集群(包括至少一个云计算设备,例如云服务器等)中。
在图2A的场景中,交互模块102可以为本地IDE。其中,本地也称作本地设备。本地设备包括处于用于用户直接控制之下的终端计算设备(例如笔记本电脑等用户终端)。本地IDE是指以客户端形式安装在本地设备的IDE。在一些示例中,本地IDE可以包括visual studio、eclipse等等。调试模块104可以为云调试器(cloud debugger)。本地IDE可以安装插件,通过插件与cloud debugger连接,从而对应用200进行调试。
需要说明的是,本地IDE通常具有本地debugger,该本地debugger与cloud debugger相互独立。基于此,用户可以一边通过本地debugger对本地开发的应用程序代码进行调试,一边通过cloud debugger对已上线的应用200进行调试。
在另一些实现方式中,应用调试系统100的各个模块也可以部署于相同环境。例如,如图2B所示,交互模块102和调试模块104可以部署在同一云计算集群中,例如,该云计算集群为一个云服务提供商提供的公有云。交互模块102可以为云化IDE(cloud IDE),调试模块104可以为cloud debugger。
云服务提供商可以将cloud debugger和cloud IDE整合成一个云服务提供给用户使用,也可以分别提供cloud IDE和cloud debugger两个云服务供用户使用。在一些情况下,云服务提供商可以将cloud debugger作为cloud IDE的增值服务,用户购买或者租赁该增值服务后,云服务提供商将其结合在cloud IDE中提供给用户使用。
当然,如图2C所示,交互模块102和调试模块104也可以部署在不同云计算集群中,例如,不同的云计算集群为不同的云服务提供商提供的公有云。交互模块102为cloud IDE,调试模块104为cloud debugger。不同云服务提供商分别提供cloud IDE和cloud debugger给用户使用。
进一步地,应用调试系统100调试的应用200既可以与交互模块102和/或调试模块104部署在相同或不同的云计算集群,也可以独立地部署在任何数据中心(例如用户自有的数据中心),前述图2A、图2B、图2C示例性地展示应用200部署在数据中心300的情况。
当应用200以集群形式(如kubernetes,k8s)部署在自有数据中心或第三方数据中心时,用户通过手动运行命令,在集群的每一个节点运行一组守护进程(daemon set),如日志收集进程fluentd、logstash,系统监控进程collectd、ganglia gmond,系统管理进程kube-proxy、kube-dns等等。如此实现在节点上运行host agent。
应用200和cloud debugger部署在同一云计算集群时,可以由同一云容器引擎(cloud container engine,CCE)创建、运行容器,各容器中运行应用200的子应用模块。具体地,CCE为用户提供容器创建界面,该界面还承载有host agent部署控件,用户选中该host  agent部署控件,则CCE可以在创建容器时,自动在集群的每一个节点部署host agent。
图1是以应用200的每个子应用模块仅部署一个副本(replica)进行示例说明的。在一些实现方式中,为了保证子应用模块的可用性,应用200的至少一个子应用模块可以部署多个副本。对应地,每个副本包括一个agent。host agent可以将调试消息广播至多个副本的agent。进一步地,一个子应用模块的多个副本部署在不同节点时,调试模块104先将调试消息路由至不同节点,然后由不同节点上的host agent分别向对应的agent广播调试消息。
其中,子应用模块的一个副本的agent可以根据调试消息(具体是调试消息中的调试指令)启动对该子应用模块的调试,生成对该调试指令的调试响应,应用调试系统100根据调试响应生成调试结果,从而实现对子应用模块的调试。需要说明的是,子应用模块的一个副本的agent在返回调试响应时,可以先将调试响应返回至host agent,然后通过host agent返回至应用调试系统100。
其中,host agent提供了调试指令、调试响应的另一种传输路径(除负载均衡服务器之外的其他传输路径),避免了对同一子应用模块的调试指令被均衡至该应用子模块的不同副本的agent,保障了调试过程的连续性,提高了多副本场景下的可用性。
接下来,从应用调试系统100的角度,对本申请实施例提供的应用调试方法进行详细介绍。
参见图3所示的应用调试方法的流程图,该方法包括:
S302:应用调试系统100接收用户输入或选择的多个子应用模块的标识。
应用调试系统100(具体可以是交互模块102)可以通过用户界面向用户呈现应用200的子应用模块列表和/或应用200的子应用模块的拓扑(topology)图。其中,子应用模块的拓扑图用于标识应用200的各个子应用模块之间的调用关系。用户可以通过上述用户界面(例如GUI)选择多个子应用模块,应用调试系统100接收用户通过用户界面(例如GUI)选择的多个子应用模块的标识。
在一些可能的实现方式中,用户可以通过上述用户界面(例如CUI)直接输入多个子应用模块的标识,应用调试系统100的交互模块102接收用户通过用户界面(例如CUI)输入的多个子应用模块的标识,以对多个子应用模块进行调试。
其中,交互模块102呈现的拓扑图可以根据应用200的结构信息构建得到。结构信息包括应用的标识、子应用模块(例如微服务)的标识、子应用模块(例如微服务)所属资源的标识中的至少一种。当应用200的至少一个子应用模块包括多个副本时,子应用模块所属资源的标识可以是子应用模块的各个副本所属资源的标识。该资源可以是物理机(physical machine)或者部署在物理机上的虚拟机(virtual machine)、容器(container)等。结构信息可以用于索引该应用200中可用的子应用模块。
在一些实现方式中,应用调试系统100还可以存储应用的结构信息,包括:应用的标识、子应用模块的标识、资源的标识中的任意一种或多种。这些标识可以通过键值对形式(即key:value)进行存储。为了便于理解,下面结合一具体示例进行说明。在该示例中,应用200为基于微服务架构的应用,结构信息具体包括如下信息:
apps:appId:{appId},{appName,appId}
tiers:appId:{appId}:tierId:{tierId},{tierName,language,technologies,os}
resources:appId:{appId}:tierId:{tierId}:resourceId:{resourceId},{created,hostName,ip,ports,resourceId}。
其中,apps表示应用,tiers表示微服务,resources表示资源。appName表示应用的名称,appId表示应用的标识,应用的标识具有唯一性。appId可以根据项目的标识projectId和appName生成。例如,appId可以是将projectId与默认(default)字段、appName级联后,利用消息摘要(message digest 5,MD5)算法处理得到。在一个示例中,appId可以是{projectId}|default|{appName}的MD5值。tierId表示微服务的标识,tierName表示微服务的名称。tierId可以根据tierName生成,例如tierId可以根据tierName和default字段利用MD5算法处理得到。resourceId表示资源的标识,其可以根据容器的标识containerId得到。例如,resourceId可以是containerId的MD5值。
应用200的子应用模块启动后,该子应用模块的agent也随之启动。agent驻留在子应用模块的进程中,其生存期与子应用模块的进程相同。当子应用模块仍然可用时,agent可以向应用调试系统100发送结构信息。应用调试系统100可以存储结构信息,例如存储结构信息至缓存如Redis cache。如此,交互模块102可以从Redis cache中获取结构信息,根据该结构信息构建应用的子应用模块的拓扑图。
其中,agent在发送结构信息时,可以先发送至host agent。host agent可以对不同agent发送的结构信息汇总,然后将汇总后的结构信息进行存储。考虑到应用200在不同时刻可用的子应用模块可以发生变化,agent还可以更新结构信息。例如,agent可以周期性地发送结构信息,以更新应用调试系统100存储的结构信息。对应地,交互模块102还可以获取更新后的结构信息,根据更新后的结构信息调整应用200的子应用模块的拓扑图,向用户呈现调整后的子应用模块200的拓扑图。
应用调试系统100对应用200的调试过程是基于调试会话(debug session)实现的。交互模块102可以在用户触发调试会话建立操作后,通过用户界面向用户呈现应用200的子应用模块列表和/或应用200的子应用模块的拓扑图,用户可以通过上述子应用模块列表或者拓扑图选择多个子应用模块,应用调试系统100根据多个子应用模块的标识分别建立调试会话。为了便于理解,下面以基于微服务架构的应用200进行示例说明。
图4提供了一种调试选择界面的示意图。如图4所示,界面400中展示有启动调试控件404。该启动调试控件404用于启动对应用的调试,建立调试会话。具体地,启动调试控件404被触发(例如被用户点击)时,界面400中呈现调试会话建立页面408,例如通过弹窗方式呈现调试会话建立页面408。该调试会话建立页面408提供有应用选择控件,通过应用选择控件选中应用200后,该调试会话建立页面408显示应用200的微服务列表。该列表中包括微服务1、微服务2……微服务5。用户可以从微服务列表中选择多个微服务,以建立多个调试会话,每个调试会话对应一个微服务。
在一些实现方式中,界面400中还展示有查看拓扑控件406。该查看拓扑控件406被触发时,用于显示微服务的拓扑图,以供用户查看。参见图5,当拓扑控件406被触发时, 界面400还展示有微服务的拓扑图410。如拓扑图410所示,圆圈表示微服务,圆圈之间的虚线箭头表示微服务之间的调用关系。例如,在图5的调试选择界面的示例中,应用200包括微服务1、微服务2……微服务5等多个微服务,微服务1调用微服务2、微服务4,微服务2调用微服务3,微服务4调用微服务3和微服务5。
与采用列表的形式呈现应用200的微服务相比,通过拓扑图410还能够呈现微服务之间的调用关系,如此可以辅助用户确定对哪个或哪些微服务进行调试。其中,图5是以界面400同时呈现列表和拓扑图410进行示例说明。在一些实现方式中,界面400也可以呈现列表和拓扑图410中的任意一种,并在需要时通过相应的控件切换至另一种。
在图4、图5所示实施例中,界面400中的调试会话建立页面408还展示有确定控件409,用户在通过微服务选择控件选中多个微服务后,点击上述确定控件409,则触发针对被选中的多个微服务的调试会话建立操作。
S304:应用调试系统100根据多个子应用模块的标识,对多个子应用模块的代码块进行调试。
当用户触发针对多个子应用模块的调试会话建立操作时,应用调试系统100(具体可以是交互模块102)可以根据接收的多个子应用模块的标识,生成多个调试指令。该调试指令包括调试会话建立指令。应用调试系统100可以根据多个调试会话建立指令,与待调试的多个子应用模块的agent建立多个调试会话。
其中,多个调试会话与多个子应用模块的agent一一对应。每个调试会话具有唯一的调试会话标识(debug session ID)。基于该调试会话标识可以唯一确定交互模块102和子应用模块的agent。通过在调试消息中携带上述调试会话标识可以保障调试消息能够被正确地传输至子应用模块的agent或者交互模块102。
在一些实现方式中,交互模块102还可以通过用户界面如GUI中呈现断点(breakpoint)设置控件、栈信息查看控件、变量显示控件、变量跟踪控件或者单步执行控件等等。这些控件可以由如图4所示的调试会话建立页面呈现,也可以通过独立的调试配置页面呈现。例如,用户可以通过独立的调试配置页面呈现的上述控件,触发断点设置等调试操作。交互模块102根据用户通过上述控件触发的调试操作,生成调试指令。该调试指令包括设置断点的指令,查看栈信息的指令,显示某个变量的指令,跟踪某个变量的指令或者单步执行的指令中的一种或多种。每个调试指令可以被封装在多个调试消息中。
调试模块104可以将多个调试消息发送至多个子应用模块的agent。agent接收到调试消息,可以获得调试指令,根据调试指令启动对对应的子应用模块的代码块的调试。对应地,子应用模块的agent可以生成调试响应。交互模块102还可以获取每个待调试的子应用模块的agent的调试响应,根据该调试响应生成调试结果,向用户呈现调试结果。
为了便于理解,下面结合具体的调试指令进行详细说明。
当调试指令为设置断点的指令时,调试模块104将封装有该指令并且携带有debug session ID的调试消息路由至对应的子应用模块的agent。agent接收到设置断点的指令,可以设置断点。当agent执行到断点位置时,停止执行。其中,agent还可以返回调试响应,该调试响应具体为实际的断点位置。
当调试指令为显示某个变量的指令时,调试模块104将封装有该指令并且携带有debug  session ID的调试消息路由至对应的子应用模块的agent。agent接收到显示变量的指令,可以打印(print)该变量的值。其中,agent还可以返回调试响应,该调试响应具体为变量的值。
当调试指令为查看栈信息的指令时,调试模块104将封装有该指令并且携带有debug session ID的调试消息路由至对应的子应用模块的agent。agent接收到查看栈信息的指令,可以获取栈信息,如获取调用栈(call stack)中已执行的函数的标识和/或当前正在执行的函数的标识等。其中,agent还可以向调试模块104返回调试响应,该调试响应具体为栈信息。
进一步地,在设置断点、跟踪变量后,用户还可以通过用户界面呈现的断点删除控件,取消跟踪控件触发调试操作,生成调试指令。该调试指令可以包括删除断点(删除某个或全部断点)的指令和/或取消跟踪某个变量的指令。
当调试指令为删除断点的指令时,调试模块104将封装有该指令并且携带有debug session ID的调试消息路由至对应的子应用模块的agent。agent接收到删除断点的指令,可以删除相应的断点,避免agent在对应位置停止执行。其中,agent还可以返回调试响应,该调试响应用于指示删除成功。
当调试指令为取消跟踪某个变量的指令时,调试模块104将封装有该指令并且携带有debug session ID的调试消息路由至对应的子应用模块的agent。agent接收到取消跟踪某个变量的指令,取消跟踪该变量。其中,agent还可以返回调试响应,该调试响应用于指示取消成功。
在一些可能的实现方式中,调试模块104可以先检测每个调试指令对应的debug session是否存在,若是,则将每个调试指令和对应的debug session ID路由至对应的子应用模块的agent,若否,则根据调试指令建立对应的debug session,然后将每个调试指令和对应的debug session ID路由至对应的微服务的agent。agent接收到上述调试指令,启动对对应微服务的调试。接着,交互模块102获取对应的agent的调试响应,该调试响应可以用于生成调试结果,如此可以实现对子应用模块的调试。
需要说明的是,应用调试系统100可以包括多个交互模块102,例如包括多个IDE。多个用户可以通过各自的交互模块102如IDE同时对应用200的多个子应用模块进行调试。其中,不同用户可以对应用200的相同子应用模块进行调试,也可以对应用200的不同子应用模块进行调试。
当多个用户通过各自的交互模块102触发对同一个子应用模块的操作时,应用调试系统100(具体可以是调试模块104)可以为多个用户分别建立调试会话。调试会话与被调试的子应用模块以及发起调试流程的交互模块102(或者用户)一一对应。例如,当n个用户中的每个用户触发针对m个子应用模块的操作时,应用调试系统100的调试模块104根据n个用户的操作,创建n*m个调试会话。其中,n大于或等于1,m大于或等于1。
S306:应用调试系统100向用户呈现调试结果。
调试结果包括中间调试结果和/或最终调试结果。在调试过程中,应用调试系统100(具体为交互模块102)显示中间调试结果。该中间调试结果用于表征调试过程中产生的结果。调试过程中产生的结果可以通过调试进度图表征。在调试完成后,应用调试系统100(具 体为交互模块102)显示最终调试结果。该最终调试结果用于表征调试成功或调试失败。
其中,调试进度图包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。调试报错是指子应用模块的代码块在运行过程中出现错误,应用调试系统100通过调试检测出该错误,并向用户报告该错误。
进一步地,应用调试系统100的交互模块102还可以向用户呈现子应用模块调试过程的栈信息和/或变量。具体地,交互模块102可以根据调试进度动态地呈现调试过程的栈信息和/或变量。
其中,应用调试系统100的交互模块102可以通过GUI或CUI向用户呈现调试结果。为了便于描述,下面以应用调试系统100调试基于微服务架构的应用200,并通过GUI呈现调试结果进行示例说明。
参见图6所示的调试结果的显示界面示意图,界面600呈现有调试结果控件,该调试结果控件被触发时,例如被用户点击而触发时,界面600显示调试进度图602。该调试进度图602中包括已调试的微服务、正在进行调试的微服务、调试报错的微服务、调试报错的提醒信息、调试报错类型和微服务的请求/响应流。
其中,已调试的微服务、正在进行调试的微服务、调试报错的微服务可以通过文字、符号、颜色或者形状等进行区分。具体地,交互模块102可以在微服务拓扑中调整微服务标识符的颜色,从应用200的微服务中标识已调试的微服务、正在进行调试的微服务。例如,交互模块102将微服务1、微服务2的标识符由灰色调整为绿色,表示微服务1、微服务2已调试,将微服务3的颜色由灰色调整为黄色表示微服务3正在进行调试。其中,调试进度图为灰度图时,还可以基于不同灰度标识已调试的微服务、正在进行调试的微服务。
交互模块102还可以通过调试报错的提醒信息,从应用200的微服务中标识调试报错的微服务。例如,将微服务3通过连接线连接一个错误提示框609,错误提示框609中包括调试报错的提醒信息,由此可以标识微服务3为调试报错的微服务。其中,调试报错的提醒信息包括调试报错类型,如缺少参数、参数类型错误、参数校验异常等错误类型。在该示例中,微服务3的调试错误类型为5003,用于指示参数校验异常。
进一步地,交互模块102还可以在拓扑图上添加微服务的请求/响应流,辅助描述微服务的调试进度。例如,有请求流(调试指令形成的数据流)流入或者有响应流(调试响应形成的数据流)流出,表明微服务要么已调试,要么正在进行调试;既没有请求流流入,也没有响应流流出,表明微服务尚未调试。
根据上述请求/响应流,用户可以确定下一个或下一组需要调试的微服务。在图6的示例中,请求流和响应流表征微服务1、微服务2、微服务3已启动调试,即应用200的一个分支已启动调试。接下来,用户可以确定对应用200的另一分支进行调试。其中,另一分支可以是微服务1、微服务4、微服务3形成的分支,或者微服务1、微服务4、微服务5形成的分支,由于微服务1已启动调试,因此,用户可以确定对微服务4进行调试。
对于正在进行调试的微服务,交互模块102还可以通过在拓扑图中修改微服务标识符的形状,标识对该微服务的调试类型。例如,针对微服务3的标识符增加一个圆圈,标识正在对微服务3进行断点调试。在一些实现方式中,交互模块102也可以将微服务的标识 符修改为正方形,标识正在对该微服务进行单步调试。
在一些实现方式中,界面600还可以呈现栈信息603和/或变量的值604。栈信息603可以包括调用栈中已执行的函数的标识(在该示例中为函数1、函数2)。进一步地,栈信息603还可以包括当前执行的函数的标识等信息(在该示例中为函数3)。变量的值604具体可以通过键值对(key value)进行呈现,如图6所示,界面600还可以呈现局部变量的名称和该局部变量的值等。
需要说明的是,界面600呈现的栈信息603和/变量的值604可以随着调试过程发生变化。例如,在调试微服务2时,界面600呈现微服务2的调用栈中已执行的函数和当前正在执行的函数,并呈现这些函数涉及的局部变量的值,在调试微服务3时,界面600呈现微服务3的调用栈中已执行的函数和当前正在执行的函数,并呈现这些函数涉及的局部变量的值。
进一步地,界面600中还可以呈现代码块606。其中,用户可以根据代码块606确定变量的理论值,根据该理论值和界面600中显示的、变量的值604确定相应的代码块606是否异常。在一些实现方式中,界面600中还包括代码文件目录608。代码文件目录608可以用于在应用200的不同代码块606(或者不同源代码文件)之间快速跳转,由此可以实现快速跳转至其他微服务的代码块606进行调试。
其中,界面600中还展示有调试控制台控件。该调试控制台控件被触发时,用于切换至调试控制台,以便用户基于该调试控制台继续执行对应用200的调试,如执行对应用200的其他微服务的调试。
基于上述内容描述,本申请实施例提供了一种应用调试方法。在该方法中,应用调试系统100接收用户输入或选择的多个子应用模块的标识,根据多个子应用模块的标识对多个子应用模块的代码块进行调试,然后向用户呈现调试结果。该方法支持同时对应用200的多个子应用模块进行调试,提高了调试效率。并且,用户可以直接在生产环境下对应用200的子应用模块进行调试,无需在开发环境下重现生产环境下应用200运行所产生的异常,也不需要将代码块加载至IDE进行本地调试,以及将调试完成的应用200重新部署到生产环境,进一步提高了调试效率。
在一些实现方式中,应用调试系统100向agent路由的调试指令是携带在调试消息中的。该调试消息可以是基于调试适配器协议(debug adapter protocol)的消息,因此,agent还可以将该标准的DAP调试消息转换为与上层应用对应的调试消息,具体是与上层微服务的技术栈(或者编程语言)对应的调试消息。例如,被调试的子应用模块是基于Java技术栈(或者Java语言)开发时,则agent可以将标准的DAP调试消息转换为基于java调试接口(java debug interface,JDI)的调试消息。
为了实现上述转换过程,agent可以预先部署与上层子应用模块如微服务的技术栈(或者编程语言)对应的语言调试模块。具体地,应用调试系统100可以存储至少一种技术栈对应的语言调试模块,例如C技术栈、Python技术栈、Java技术栈对应的语言调试模块。其中,语言调试模块具体可以存储在云容器引擎(cloud container engine,CCE)存储文件集(storage volume)或者hadoop分布式文件系统(hadoop distributed file system,HDFS)中。
应用调试系统100可以接收来自于agent的语言调试模块部署请求,然后响应于该语言调试模块部署请求,获取该agent请求的语言调试模块的程序代码,向agent发送该语言调试模块的程序代码,以在agent中部署相应的语言调试模块。
应用200可以是异构应用。即应用200的多个子应用模块可以包括基于编程语言编写的代码块。对应地,应用调试系统100可以在对应的agent中部署相应编程语言的语言调试模块,从而实现对异构应用的调试。
上文结合图1至图6对本申请实施例提供的应用调试方法进行了详细介绍,下面将结合附图对本申请实施例提供的应用调试系统100以及相关设备进行介绍。
参见图1所示的应用调试系统100的结构示意图,待调试的应用部署在生产环境,所述应用包括的子应用模块在所述生产环境中运行以提供服务,该系统100包括:
交互模块102,用于接收用户输入或选择的多个子应用模块的标识,其中,每个子应用模块包括的代码块用于实现所述应用的功能;
调试模块104,用于根据所述多个子应用模块的标识,对所述多个子应用模块的代码块进行调试;
所述交互模块102,还用于向所述用户呈现调试结果。
在一些可能的实现方式中,所述交互模块102用于:
通过GUI向所述用户呈现所述应用的调试进度图,其中,所述调试进度图包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。
在一些可能的实现方式中,所述交互模块102用于:
向所述用户呈现被调试的子应用模块在调试过程中的栈信息和/或变量。
在一些可能的实现方式中,所述交互模块102具体用于:
接收用户通过图形用户界面GUI选择的所述多个子应用模块的标识,或者,接收用户通过命令用户界面CUI输入的所述多个子应用模块的标识。
在一些可能的实现方式中,所述交互模块102还用于:
在接收用户输入或选择的多个子应用模块的标识之前,通过用户界面向所述用户呈现所述应用的子应用模块列表,和/或,通过用户界面向所述用户呈现所述应用的子应用模块的拓扑图。
在一些可能的实现方式中,所述交互模块102还用于:
获取所述应用的结构信息;
根据所述应用的结构信息构建所述应用的子应用模块的拓扑图,所述子应用模块的拓扑图表示所述应用的各个子应用模块之间的调用关系。
在一些可能的实现方式中,所述交互模块102还用于:
获取所述应用的更新后的结构信息;
根据所述更新后的结构信息调整所述应用的子应用模块的拓扑图;
向所述用户呈现调整后的所述子应用模块的拓扑图。
在一些可能的实现方式中,所述应用的每个子应用模块对应一个代理,每个子应用模 块的代理用于接收调试指令,并根据调试指令启动对对应的子应用模块中的代码块的调试。
在一些可能的实现方式中,所述交互模块102还用于:
根据所述多个子应用模块的标识,生成多个调试指令;
所述调试模块104具体用于:
根据所述多个调试指令,与待调试的多个子应用模块中的多个代理建立多个调试会话;
获取每个待调试的子应用模块的代理的调试响应,所述调试响应用于生成所述调试结果。
在一些可能的实现方式中,每个代理启动的调试为对应的子应用模块的运行进程中的一个独立线程。
在一些可能的实现方式中,所述生产环境中包括至少一个节点,每个节点中部署所述应用的一个或多个子应用模块,所述调试模块104具体用于:
将每个调试指令路由至每个待调试的子应用模块所在节点的节点代理,进而由所述节点代理将每个调试指令路由至每个待调试的子应用模块对应的代理。
在一些可能的实现方式中,每个子应用模块对应的代理和每个节点的节点代理为与所述应用同时部署在所述生产环境的代码块。
在一些可能的实现方式中,所述应用的每个子应用模块运行在独立的容器中,容器中运行的子应用模块之间通过容器的接口进行交互。
在一些可能的实现方式中,所述多个子应用模块中包括不同编程语言编写的代码块,每个调试指令被封装为调试消息路由至所述待调试的子应用模块对应的代理;每个子应用模块对应的代理用于将所述调试消息转换为子应用模块的编程语言对应的调试消息。
根据本申请实施例的应用调试系统100可对应于执行本申请实施例中描述的方法,并且应用调试系统100的各个模块/单元的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种计算设备700。该计算设备700可以是笔记本电脑、台式机等端侧设备,也可以是云环境中的云计算设备(例如云服务器),或者是端侧设备和云计算设备的组合。该计算设备700具体用于实现如图1所示实施例中应用调试系统100的功能。
图7提供了一种计算设备700的结构示意图,如图7所示,计算设备700包括总线701、处理器702、显示器703和存储器704。处理器702、存储器704和显示器703之间通过总线701通信。
总线701可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器702可以为中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
显示器703是一种输入输出(input/output,I/O)设备。该设备可以将电子文件如图像、文字显示到屏幕上,以供用户查看。根据制造材料不同,显示器703可以分为液晶显示器(liquid crystal display,LCD)、有机电激光(organic light emitting diode,OLED)显示器等。具体地,显示器703可以接收用户输入或选择的多个子应用模块的标识,向所述用户呈现调试结果等等。
存储器704可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器704还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard drive drive,HDD)或固态硬盘(solid state drive,SSD)。
存储器704中存储有可执行的程序代码,处理器702执行该可执行的程序代码以实现前述应用调试系统100的功能,或者执行前述实施例描述的应用调试方法。具体地,处理器702执行上述程序代码,以控制显示器703通过GUI接收用户选择的多个子应用模块的标识,或者通过CUI接收用户输入的多个子应用模块的标识,然后显示器703通过总线701向处理器702传输用户选择的或输入的多个子应用模块的标识,处理器702根据多个子应用模块的标识对多个子应用模块的代码块进行调试,控制显示器703向用户呈现调试结果。
在一些可能的实现方式中,处理器702还可以控制其他接口接收多个子应用模块的标识。其中,其他接口可以是麦克风等。具体地,麦克风可以接收以语音形式表示的子应用模块的标识。
在一些可能的实现方式中,处理器702还可以执行上述方法实施例所提供的任意一种实现方式对应的方法步骤,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述应用于应用调试系统100的应用调试方法。
本申请实施例还提供了一种计算机程序产品。所述计算机程序产品包括一个或多个计算机指令。在计算设备上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。
所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机或数据中心进行传输。
所述计算机程序产品可以为一个软件安装包,在需要使用前述应用调试方法的任一方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。

Claims (32)

  1. 一种应用调试方法,其特征在于,待调试的应用部署在生产环境,所述应用在所述生产环境中运行以提供服务,所述方法包括:
    接收用户输入或选择的多个子应用模块的标识,其中,每个子应用模块包括的代码块用于实现所述应用的功能;
    根据所述多个子应用模块的标识,对所述多个子应用模块的代码块进行调试;
    向所述用户呈现调试结果。
  2. 根据权利要求1所述的方法,其特征在于,所述向所述用户呈现调试结果,包括:
    通过图形用户界面GUI向所述用户呈现所述应用的调试进度图,其中,所述调试进度图包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。
  3. 根据权利要求1或2所述的方法,其特征在于,所述向所述用户呈现调试结果,包括:
    向所述用户呈现被调试的子应用模块在调试过程中的栈信息和/或变量。
  4. 根据权利要求1至3任一项所述的方法,其特征在于,所述接收用户输入或选择的多个子应用模块的标识,包括:接收用户通过图形用户界面GUI选择的所述多个子应用模块的标识,或者,接收用户通过命令用户界面CUI输入的所述多个子应用模块的标识。
  5. 根据权利要求1至4任一项所述的方法,其特征在于,在接收用户输入或选择的多个子应用模块的标识之前,所述方法还包括:
    通过用户界面向所述用户呈现所述应用的子应用模块列表,和/或,通过用户界面向所述用户呈现所述应用的子应用模块的拓扑图。
  6. 根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
    构建所述应用的子应用模块的拓扑图,所述子应用模块的拓扑图表示所述应用的各个子应用模块之间的调用关系。
  7. 根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
    调整所述应用的子应用模块的拓扑图;
    向所述用户呈现调整后的所述子应用模块的拓扑图。
  8. 根据权利要求1至7任一项所述的方法,其特征在于,所述应用的每个子应用模块对应一个代理,每个子应用模块的代理用于接收调试指令,并根据调试指令启动对对应的子应用模块中的代码块的调试。
  9. 根据权利要求8所述的方法,其特征在于,所述对所述多个子应用模块中的代码块进行调试,包括:
    根据所述多个子应用模块的标识,生成多个调试指令;
    根据所述多个调试指令,与待调试的多个子应用模块的多个代理建立多个调试会话;
    获取每个待调试的子应用模块的代理的调试响应,所述调试响应用于生成所述调试结果。
  10. 根据权利要求8或9所述的方法,其特征在于,每个代理启动的调试为对应的子应用模块的运行进程中的一个独立线程。
  11. 根据权利要求9所述的方法,其特征在于,所述生产环境中包括至少一个节点,每个节点中部署所述应用的一个或多个子应用模块,所述根据所述多个调试指令,与待调试的多个子应用模块中的多个代理建立多个调试会话,包括:
    将每个调试指令路由至每个待调试的子应用模块所在节点的节点代理,进而由所述节点代理将每个调试指令路由至每个待调试的子应用模块对应的代理。
  12. 根据权利要求11所述的方法,其特征在于,每个子应用模块对应的代理和每个节点的节点代理为与所述应用同时部署在所述生产环境的代码块。
  13. 根据权利要求1至12任一项所述的方法,其特征在于,所述应用的每个子应用模块运行在独立的容器中,容器中运行的子应用模块之间通过容器的接口进行交互。
  14. 根据权利要求8至13任一项所述的方法,其特征在于,所述多个子应用模块中包括不同编程语言编写的代码块,每个调试指令被封装为调试消息路由至所述待调试的子应用模块对应的代理;每个子应用模块对应的代理用于将所述调试消息转换为子应用模块的编程语言对应的调试消息。
  15. 一种应用调试方法,其特征在于,待调试的应用部署在生产环境,所述应用的子应用模块在所述生产环境中运行以提供服务,所述方法包括:
    通过图形用户界面GUI向用户呈现所述应用的子应用模块列表和/或所述子应用模块的拓扑图,其中,所述子应用模块列表和/或所述子应用模块的拓扑图用于供所述用户选择多个待调试的子应用模块;
    根据所述用户在所述GUI上的调试选择操作,向所述用户呈现对所述用户选择的多个子应用模块的调试结果。
  16. 一种呈现应用调试结果的方法,其特征在于,待调试的应用部署在生产环境,所述应用的子应用模块在所述生产环境中运行以提供服务,所述方法包括:
    通过图形用户界面GUI接收用户的调试选择操作;
    在所述GUI上向所述用户呈现所述应用的调试进度图,其中,所述调试进度图表示应用 调试系统对所述用户选择的一个或多个子应用模块的调试进度;所述调试进度图中包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。
  17. 一种应用调试系统,其特征在于,待调试的应用部署在生产环境,所述应用在所述生产环境中运行以提供服务,所述应用调试系统包括:
    交互模块,用于接收用户输入或选择的多个子应用模块的标识,其中,每个子应用模块包括的代码块用于实现所述应用的功能;
    调试模块,用于根据所述多个子应用模块的标识,对所述多个子应用模块的代码块进行调试;
    所述交互模块,还用于向所述用户呈现调试结果。
  18. 根据权利要求17所述的系统,其特征在于,所述交互模块用于:
    通过图形用户界面GUI向所述用户呈现所述应用的调试进度图,其中,所述调试进度图包括以下信息中的一种或多种:已调试的子应用模块、正在进行调试的子应用模块、调试报错的子应用模块、调试报错的提醒信息、调试报错类型、子应用模块的请求/响应流。
  19. 根据权利要求17或18所述的系统,其特征在于,所述交互模块用于:
    向所述用户呈现被调试的子应用模块在调试过程中的栈信息和/或变量。
  20. 根据权利要求17至19任一项所述的系统,其特征在于,所述交互模块具体用于:
    接收用户通过图形用户界面GUI选择的所述多个子应用模块的标识,或者,接收用户通过命令用户界面CUI输入的所述多个子应用模块的标识。
  21. 根据权利要求17至20任一项所述的系统,其特征在于,所述交互模块还用于:
    在接收用户输入或选择的多个子应用模块的标识之前,通过用户界面向所述用户呈现所述应用的子应用模块列表,和/或,通过用户界面向所述用户呈现所述应用的子应用模块的拓扑图。
  22. 根据权利要求17至21任一项所述的系统,其特征在于,所述交互模块还用于:
    构建所述应用的子应用模块的拓扑图,所述子应用模块的拓扑图表示所述应用的各个子应用模块之间的调用关系。
  23. 根据权利要求17至22任一项所述的系统,其特征在于,所述交互模块还用于:
    调整所述应用的子应用模块的拓扑图;
    向所述用户呈现调整后的所述子应用模块的拓扑图。
  24. 根据权利要求17至23任一项所述的系统,其特征在于,所述应用的每个子应用模块对应一个代理,每个子应用模块的代理用于接收调试指令,并根据调试指令启动对对应的子应用模块中的代码块的调试。
  25. 根据权利要求24所述的系统,其特征在于,所述交互模块还用于:根据所述多个子应用模块的标识,生成多个调试指令;
    所述调试模块具体用于:根据所述多个调试指令,与待调试的多个子应用模块中的多个代理建立多个调试会话;获取每个待调试的子应用模块的代理的调试响应,所述调试响应用于生成所述调试结果。
  26. 根据权利要求24或25所述的系统,其特征在于,每个代理启动的调试为对应的子应用模块的运行进程中的一个独立线程。
  27. 根据权利要求25所述的系统,其特征在于,所述生产环境中包括至少一个节点,每个节点中部署所述应用的一个或多个子应用模块,所述调试模块具体用于:
    将每个调试指令路由至每个待调试的子应用模块所在节点的节点代理,进而由所述节点代理将每个调试指令路由至每个待调试的子应用模块对应的代理。
  28. 根据权利要求27所述的系统,其特征在于,每个子应用模块对应的代理和每个节点的节点代理为与所述应用同时部署在所述生产环境的代码块。
  29. 根据权利要求17至28任一项所述的系统,其特征在于,所述应用的每个子应用模块运行在独立的容器中,容器中运行的子应用模块之间通过容器的接口进行交互。
  30. 根据权利要求24至29任一项所述的系统,其特征在于,所述多个子应用模块中包括不同编程语言编写的代码块,每个调试指令被封装为调试消息路由至所述待调试的子应用模块对应的代理;每个子应用模块对应的代理用于将所述调试消息转换为子应用模块的编程语言对应的调试消息。
  31. 一种计算设备,其特征在于,所述计算设备包括处理器、存储器和显示器;
    所述处理器用于执行所述存储器中存储的指令,以使得所述计算设备执行如权利要求1至16中任一项所述的方法。
  32. 一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如权利要求1至16中任一项所述的方法。
PCT/CN2021/091752 2020-05-26 2021-04-30 一种应用调试方法、系统、设备及介质 WO2021238592A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP21812877.5A EP4148585A4 (en) 2020-05-26 2021-04-30 METHOD AND SYSTEM FOR APPLICATION ERROR ELIMINATION AS WELL AS DEVICE AND MEDIUM
US17/993,619 US20230092858A1 (en) 2020-05-26 2022-11-23 Application Debugging Method and System, Device, and Medium

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN202010456122 2020-05-26
CN202010456122.7 2020-05-26
CN202010819208.1A CN113722204A (zh) 2020-05-26 2020-08-14 一种应用调试方法、系统、设备及介质
CN202010819208.1 2020-08-14

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/993,619 Continuation US20230092858A1 (en) 2020-05-26 2022-11-23 Application Debugging Method and System, Device, and Medium

Publications (1)

Publication Number Publication Date
WO2021238592A1 true WO2021238592A1 (zh) 2021-12-02

Family

ID=78672240

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/CN2021/091752 WO2021238592A1 (zh) 2020-05-26 2021-04-30 一种应用调试方法、系统、设备及介质
PCT/CN2021/100195 WO2021239157A1 (zh) 2020-05-26 2021-06-15 一种应用调试方法、装置、设备及介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/100195 WO2021239157A1 (zh) 2020-05-26 2021-06-15 一种应用调试方法、装置、设备及介质

Country Status (4)

Country Link
US (2) US20230087995A1 (zh)
EP (2) EP4148585A4 (zh)
CN (4) CN113722204A (zh)
WO (2) WO2021238592A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435201A (zh) * 2022-07-13 2024-01-23 华为云计算技术有限公司 分布式服务生成方法、系统、计算设备及存储介质
CN115242771B (zh) * 2022-09-19 2023-01-31 武汉海微科技有限公司 设备调试方法、装置、设备及存储介质
CN116185882A (zh) * 2023-04-28 2023-05-30 深圳鸿芯微纳技术有限公司 软件调试方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222043A (zh) * 2011-07-08 2011-10-19 华为软件技术有限公司 一种测试方法和测试装置
US20150169434A1 (en) * 2013-12-18 2015-06-18 Software Ag White-box testing systems and/or methods in web applications
US20160239162A1 (en) * 2015-02-16 2016-08-18 Hcl Technologies Ltd. System and Method for Determining Distances Among User Interface Elements
CN107977304A (zh) * 2016-10-24 2018-05-01 北京京东尚科信息技术有限公司 一种系统调试方法和装置
CN109343878A (zh) * 2018-09-19 2019-02-15 北京英视睿达科技有限公司 一种代码部署方法
CN110297749A (zh) * 2018-03-22 2019-10-01 福建天泉教育科技有限公司 一种测试新功能的方法及终端
CN110489297A (zh) * 2019-08-26 2019-11-22 山东浪潮人工智能研究院有限公司 一种基于图形界面的fpga调试信号设置方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030051026A1 (en) * 2001-01-19 2003-03-13 Carter Ernst B. Network surveillance and security system
US20020199173A1 (en) * 2001-01-29 2002-12-26 Matt Bowen System, method and article of manufacture for a debugger capable of operating across multiple threads and lock domains
US7107578B1 (en) * 2001-09-24 2006-09-12 Oracle International Corporation Techniques for debugging computer programs involving multiple programming languages
US6941492B1 (en) * 2002-02-05 2005-09-06 Emc Corporation Debugging tool for efficient switching between targets in a multi-processor environment
US7512934B2 (en) * 2004-08-25 2009-03-31 Microsoft Corporation Parallel debugger
US7478366B2 (en) * 2004-09-22 2009-01-13 Mainsoft R&D Ltd. Debugger and method for debugging computer programs across multiple programming languages
US7669186B2 (en) * 2005-11-16 2010-02-23 Sun Microsystems, Inc. Debugging applications at resource constrained virtual machines using dynamically installable lightweight agents
US7739553B2 (en) * 2007-05-31 2010-06-15 Microsoft Corporation System crash analysis using path tracing technologies
US8589885B2 (en) * 2010-09-30 2013-11-19 Microsoft Corporation Debugger launch and attach on compute clusters
CN102143523B (zh) * 2010-11-18 2014-06-25 华为技术有限公司 基于业务递送平台的应用测试方法和业务递送平台
US9064049B2 (en) * 2010-12-14 2015-06-23 Microsoft Technology Licensing, Llc Remote debugging of server side code without blocking or high-level privileges
CN103853147B (zh) * 2012-12-06 2016-04-20 中国科学院软件研究所 一种嵌入式系统的在线调试系统
US9727445B2 (en) * 2013-11-09 2017-08-08 Microsoft Technology Licensing, Llc. Debugging a web application locally during development
DE102017120505A1 (de) * 2016-09-12 2018-03-15 Hyundai Motor Company System zur Verifikation einer unregistrierten Vorrichtung basierend auf Informationen eines Ethernet-Switchs und Verfahren für dasselbige
US10268566B2 (en) * 2016-11-04 2019-04-23 Sap Se Debugging in a private cloud environment
CN108734033B (zh) * 2017-04-14 2020-12-22 北京京东尚科信息技术有限公司 一种实现系统间安全交互的方法和装置
US10540259B1 (en) * 2017-08-11 2020-01-21 Amazon Technologies, Inc. Microservice replay debugger
US10990504B2 (en) * 2018-01-08 2021-04-27 Ozcode Ltd. Time travel source code debugger incorporating future prediction
CN108920366B (zh) * 2018-06-28 2020-09-29 腾讯科技(深圳)有限公司 一种子应用调试方法、装置及系统
CN111857762A (zh) * 2019-04-30 2020-10-30 戴尔产品有限公司 微服务更新系统
US20200366573A1 (en) * 2019-05-17 2020-11-19 Citrix Systems, Inc. Systems and methods for visualizing dependency experiments
US10691581B1 (en) * 2019-08-16 2020-06-23 Sas Institute Inc. Distributed software debugging system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222043A (zh) * 2011-07-08 2011-10-19 华为软件技术有限公司 一种测试方法和测试装置
US20150169434A1 (en) * 2013-12-18 2015-06-18 Software Ag White-box testing systems and/or methods in web applications
US20160239162A1 (en) * 2015-02-16 2016-08-18 Hcl Technologies Ltd. System and Method for Determining Distances Among User Interface Elements
CN107977304A (zh) * 2016-10-24 2018-05-01 北京京东尚科信息技术有限公司 一种系统调试方法和装置
CN110297749A (zh) * 2018-03-22 2019-10-01 福建天泉教育科技有限公司 一种测试新功能的方法及终端
CN109343878A (zh) * 2018-09-19 2019-02-15 北京英视睿达科技有限公司 一种代码部署方法
CN110489297A (zh) * 2019-08-26 2019-11-22 山东浪潮人工智能研究院有限公司 一种基于图形界面的fpga调试信号设置方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LI, LINGLING: "Research and Design of Software Testing Process Control System", SOFTWARE GUIDE, vol. 10, no. 4, 30 April 2011 (2011-04-30), pages 19 - 21, XP055872135, ISSN: 1672-7800 *
See also references of EP4148585A4

Also Published As

Publication number Publication date
EP4148585A1 (en) 2023-03-15
US20230092858A1 (en) 2023-03-23
CN113722205A (zh) 2021-11-30
EP4148585A4 (en) 2023-10-04
WO2021239157A1 (zh) 2021-12-02
CN113726834A (zh) 2021-11-30
US20230087995A1 (en) 2023-03-23
EP4148586A4 (en) 2024-01-24
CN113722116A (zh) 2021-11-30
EP4148586A1 (en) 2023-03-15
CN113722204A (zh) 2021-11-30

Similar Documents

Publication Publication Date Title
WO2021238592A1 (zh) 一种应用调试方法、系统、设备及介质
US11647101B2 (en) Deploying an application in multiple cloud computing environments
US10838788B2 (en) Real-time debugging instances in a deployed container platform
US20200267208A1 (en) Deploying an application in a hybrid cloud computing environment
JP6058628B2 (ja) マルチノードアプリケーションのデプロイメント・システム
US8938523B2 (en) System and method for deploying and maintaining software applications
US7937455B2 (en) Methods and systems for modifying nodes in a cluster environment
US9519472B2 (en) Automation of virtual machine installation by splitting an installation into a minimal installation and customization
US9250672B2 (en) Cloning target machines in a software provisioning environment
US8438418B2 (en) Simplifying automated software maintenance of data centers
JP5298763B2 (ja) 仮想システム制御プログラム、方法及び装置
US8756577B2 (en) Collaborative software debugging in a distributed system with private debug sessions
US20140245266A1 (en) System and Method for Remote Debugging of an Application in an Image Forming Apparatus Over a Network
CN102427481A (zh) 用于对云计算服务进行管理的系统及云计算管理方法
WO2022151853A1 (zh) 一种切换操作系统执行测试任务的方法、系统及介质
CN102882908A (zh) 云计算管理系统及云计算管理方法
US11977449B2 (en) Distributed package management using meta-scheduling
JP5610654B2 (ja) 端末管理パッケージを提供する装置及び前記端末管理パッケージを受信する方法
CN111831567A (zh) 应用的测试环境配置方法、装置、系统和介质
US20120233300A1 (en) Configuring connection agents
US8504684B1 (en) Control of data storage system management application activation
US11822461B2 (en) Remote debugging of cloud application
CN118132120B (zh) 一种业务系统的更新方法及装置、电子设备、存储介质
CN114726848B (zh) Windows平台的客户端自动化打包和exe分发方法及装置
Technology Investigation Service's Technology Evaluation Team Puppet Configuration Management System Evaluation Report

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21812877

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021812877

Country of ref document: EP

Effective date: 20221206

NENP Non-entry into the national phase

Ref country code: DE