FINAL ACTION
Response to Arguments
Claim Rejections - 35 USC § 101:
Claim 17 has been amended to recite patent eligible subject matter and is no longer rejected under USC 101.
Claim Rejections - 35 USC § 102:
Applicant’s arguments with respect to claim(s) 1-11 and 13, 15-20 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Claim Rejections - 35 USC § 103:
Applicant’s arguments with respect to the USC 103 rejections of claims 9 and 14 have been considered but are not persuasive. Parsing to generate discrete debugging data is interpreted as any specific elements or data types that are used for debugging taken from a larger set. Compiling with debug information to produce the type library is interpreted as regrouping, acquiring a type and acquiring a library.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1-3, 6-8, 13 and 15-17 is/are rejected under 35 U.S.C. 103 as being unpatentable over Wintergerst (US 20150033078) in view of Scholl (US 20140173565).
Regarding claim 1, Wintergerst teaches A method for remote debugging, for a cloud server side, comprising: Receiving at a receiving device, first operating data of a controller; acquiring by a data acquiring device, the first operating data of a controller to be debugged according to a debugging instruction (“wherein the thread data was aggregated at the debugging server after the thread data was transmitted from the cloud application to be debugged to the debugging server by using a first debugging data protocol; receiving, at the remote communication device” ¶9) a server running an application in the cloud being debugged is interpreted as equivalent to debugging a controller; wherein the debugging instruction comprises a first identification of the controller to be debugged (“wherein the debugging request includes data identifying the cloud application to be debugged; adjusting, by the debugging server and based on the data identifying the cloud application to be debugged” ¶8); generating by a data transmitting device, debugging data according to the first operating data and transmitting by the data transmitting device, the debugging data to the controller to be debugged (“receiving, at the remote communication device, a debugging command and transmitting the debugging command to the debugging server by using the second debugging data protocol;” ¶9).
Wintergerst does not teach determining a project identification of the controller to be debugged and a second identification of a client side to which the controller to be debugged belongs, according to the first identification of the controller to be debugged; andgenerating the debugging link based on the first identification and the project identification of the controller to be debugged, and the second identification of a target client side to which the controller to be debugged belongs.
Scholl teaches determining a project identification of the controller to be debugged and a second identification of a client side to which the controller to be debugged belongs, according to the first identification of the controller to be debugged; (“In step 706, the debugger client identifies the software instance to be debugged to the controller. In step 707, the controller then instructs the agent on the machine associated with the software instance to configure the machine for remote debugging….The agent configures the machine in step 709, for example, by adding appropriate permissions and user accounts, opening firewall ports, and starting the monitor software.” ¶54) and generating the debugging link based on the first identification and the project identification of the controller to be debugged, and the second identification of a target client side to which the controller to be debugged belongs (“The debugger client talks to the connector in step 710, which routes the connection to the appropriate monitor. In some embodiments, the debugger client may not be able to directly reach the software running on the machine. However, the connector provides and manages interfaces between the public Internet and private network connections in the cloud environment “ ¶55). Software instance is interpreted as equivalent to a project identifier, and the agent is the controller to be debugged. It would have been obvious for one of ordinary skill in the art prior to the filing of the claimed invention to combine the remote debugging methods of Wintergerst with the identification of specific instances/projects and associated controllers communicating through a connector as taught by Scholl. Wintergerst already teaches transmitting specific debugging information (¶82), and the connector between the debugger and software running on a particular machine could manage and authenticate the communications (Scholl ¶55).
Regarding claim 2, Wintergerst teaches the method according to claim 1 as shown above, and wherein subsequent to transmitting the debugging data to the controller to be debugged, the method further comprises: receiving at the receiving device, second operating data generated, by the controller to be debugged, during and/or after a debugging process and generating by the data transmitting device, a debugging log of the controller to be debugged according to the second operating data. (“In case any of the above debugging operations fails, the cloud debugging service 502 triggers corresponding actions to reset the cloud application 507. Most notably, that means that the error condition is logged in the audit subsystem 503.” ¶84).
Regarding claim 3, Wintergerst teaches wherein the first operating data of the controller comprises resource usage state data and/or configuration information of the controller to be debugged (“A rule could be reaching a special code location (break point), but it could also describe a specific state of the VM the application is running on (e.g. when available memory less than 5 percent put it in debug mode)” ¶95).
Regarding claim 6, Wintergerst teaches the method according to claim 2 and wherein subsequent to acquiring the first operating data or the second operating data, the method further comprises: determining whether the first operating data or the second operating data carries the project identification and the second identification of the client side; and adding the project identification and/or the second identification into the first operating data or the second operating data in response to the determination that the project identification and/or the second identification of the client side are/is not carried (“Since there may be several cloud applications 507 running in the cloud environment 505, the developer may have to provide some data identifying the cloud application to be debugged in addition…” ¶82). If the identification is not present, the user needs to add this information to specify what is being debugged. The claim does not specify how this information is added.
Regarding claim 7, Wintergerst teaches prior to transmitting the debugging data to the controller to be debugged, the method further comprises: acquiring a debugging type of the debugging instruction, acquiring a method base required to be called for the debugging type according to the debugging type, and generating a data architecture, for debugging correspondingly, as the debugging data (“receiving, at the remote communication device, a debugging command and transmitting the debugging command to the debugging server by using the second debugging data protocol; instructing the debugging server to transmit to the cloud application running in a debugging mode in the cloud computing environment, by using the first debugging data protocol, instructions to apply the debugging command to the cloud application to be debugged” ¶9). A command is interpreted as a way to specify the debugging instruction, and the instructions to apply it are equivalent to a data architecture for debugging.
Regarding claim 8, Wintergerst teaches subsequent to acquiring the first operating data or the second operating data, the method further comprises: collating the first operating data or the second operating data to obtain key information; and adjusting the key information structurally to generate a target data architecture (“the user/debugger may want to get a list of all running threads together with some meta information about the corresponding threads (thread groups, the classes of the threads, instance fields of the threads, etc.). This information may be provided directly in one step to the debugger frontend 203 instead of having hundreds or more messages between the debugger 203 and the debuggee 202” ¶60).
Regarding claim 13 Wintergerst teaches A remote debugging device, for a cloud server side, comprising: a first receiving device, configured to receive first operating data of a controller; (“ wherein the thread data was transmitted by using a first debugging data protocol; aggregating, at the debugging server, the received thread data” ¶8) a data acquiring device configured to acquire the first operating data of a controller to be debugged according to a debugging instruction, wherein the debugging instruction comprises a first identification of the controller to be debugged (“receiving, at a debugging server communicatively connected to a cloud application (e.g., a Java application), a debugging request from a remote communication device” ¶8); and a data transmitting device, configured to generate debugging data according to the first operating data, and transmit the debugging data to the controller to be debugged (“and transmitting the aggregated thread data in a data packet to the remote communication device by using a second debugging data protocol; receiving, at the debugging server, a debugging command from the remote communication device, wherein the debugging command was transmitted by using the second debugging data protocol” ¶8). Scholl teaches determining a project identification of the controller to be debugged and a second identification of a client side to which the controller to be debugged belongs, according to the first identification of the controller to be debugged; (“In step 706, the debugger client identifies the software instance to be debugged to the controller. In step 707, the controller then instructs the agent on the machine associated with the software instance to configure the machine for remote debugging….The agent configures the machine in step 709, for example, by adding appropriate permissions and user accounts, opening firewall ports, and starting the monitor software.” ¶54) and generating the debugging link based on the first identification and the project identification of the controller to be debugged, and the second identification of a target client side to which the controller to be debugged belongs (“The debugger client talks to the connector in step 710, which routes the connection to the appropriate monitor. In some embodiments, the debugger client may not be able to directly reach the software running on the machine. However, the connector provides and manages interfaces between the public Internet and private network connections in the cloud environment “ ¶55).
Regarding claim 15, Wintergerst teaches An electronic device, comprising: at least one processor; and a memory, communicated to said at least one processor, wherein the memory has stored therein executable instructions (“One or more of the following aspects of this disclosure can be implemented alone or in combination in a device comprising a processor, a processor-readable medium coupled to the processor having instructions stored thereon which, when executed by the processor, cause the processor to perform operations according to the one or more of the following aspects.” ¶5), and achieve a remote debugging method according to claim 1 as shown above.
Regarding claim 16, Wintergerst teaches A non-transitory computer-readable storage medium having stored therein computer executable instructions (“One or more of the following aspects of this disclosure can be implemented alone or in combination on a computer program product encoded on a non-transitory, tangible storage medium, the product comprising computer readable instructions for causing one or more computers to perform the operations according to the one or more of the following aspects” ¶5).
Regarding claim 17, Wintergerst teaches A computer program product, comprising a computer program that, when executed by a processor (“or in combination on a computer program product encoded on a non-transitory, tangible storage medium, the product comprising computer readable instructions for causing one or more computers to perform…” ¶5).
Claim(s) 9, 11 and 14 are rejected under 35 U.S.C. 103 as being unpatentable over Wintergerst and Scholl in view of McDermott.
Regarding claim 9, Wintergerst and Scholl teaches A method for remote debugging, for a client side, comprising: transmitting first operating data of a controller; and receiving, by a receiving device, debugging data corresponding to a controller to be debugged and debugging the controller to be debugged according to the debugging data (“The system described herein for providing the remote debugging of the software application across the wide area network connection may comprise: a remote communication device 203 ("debugger frontend") configured to transmit to the local computing device 202, instructions to switch a running software application to a debugging mode or to restart a software application in a debugging mode, wherein the remote communication device 203 (e.g., client 150a-b or server 102, 120 of FIG. 1)” ¶57). McDermott teaches wherein subsequent to receiving debugging data corresponding to a controller to be debugged, the method further comprises: parsing the debugging data to generate discrete debugging data; processing and regrouping the discrete debugging data to generate regrouped debugging data; acquiring a debugging type of the regrouped debugging data; acquiring an event library required to be called for the debugging type according to the debugging type, and generating second operating data of the controller to be debugged; and transmitting the second operating data (“The script, which implements the generator, is constructed and arranged to compile with debug information to produce the type library binary image, feed the image to the debugger and parse the input command file for one of the pre-defined instructions in the set. The type library binary image includes information regarding each data type of interest…When a pre-defined instruction is identified, its corresponding function is called to retrieve a field size and a field position from the type library ¶8). It would have been obvious for one of ordinary skill in the art prior to the effective filing of the claimed invention to combine the remote debugging methods taught by Wintergerst with the data parsing and matching to a library corresponding to the data as taught by McDermott. This would allow the program to retrieve information from a kernel object and return the results in a data stream (McDermott ¶4), and Wintergerst already discloses retrieving thread data from a running application (¶9).
Regarding claim 11, Wintergerst teaches wherein the operating data of the controller comprises resource usage state data and/or configuration information of the controller to be debugged. (“but it could also describe a specific state of the VM the application is running on (e.g. when available memory less than 5 percent put it in debug mode)” ¶95).
Regarding claim 14, Wintergerst teaches the remote debugging device according to claim 13 and for a client side, comprising: a transmitting device configured to transmit first operating data of a controller, and a receiving device, configured to receive debugging data corresponding to a controller to be debugged, (“receiving, at the remote communication device, a debugging command and transmitting the debugging command to the debugging server by using the second debugging data protocol;” ¶9, “FIG. 3 illustrates an example process flow for providing remote debugging across a wide area network to a software or cloud application which is running on a client device or in a cloud computing environment.” ¶22). McDermott parse the debugging data to generate discrete debugging data; process and regroup the discrete debugging data to generate regrouped debugging data; acquiring a debugging type of the regrouped debugging data; acquire an event library required to be called for the debugging type according to the debugging type, and generate second operating data of the controller to be debugged; and transmit the second operating data (“The script, which implements the generator, is constructed and arranged to compile with debug information to produce the type library binary image, feed the image to the debugger and parse the input command file for one of the pre-defined instructions in the set. The type library binary image includes information regarding each data type of interest…When a pre-defined instruction is identified, its corresponding function is called to retrieve a field size and a field position from the type library ¶8).
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
/SEAN KEVIN MCNAMARA/ Examiner, Art Unit 2113
/PHILIP GUYTON/Primary Examiner, Art Unit 2113