# US 10,372,588 B2 · Providing debug information on production containers using debug containers

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,588 B2
- Document ID: US10372588B2
- Status: Granted
- Kind: B2
- Application number: 15/205,143
- Filed: 2016-07-08
- Published: 2018-01-11
- Granted: 2019-08-06
- Earliest claimed: 2016-07-08
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Jack S. Baines; Kirstine F. L. Clapperton; David J. Crighton; Rosanna M. Lickorish; Martin R. Naish
- Web page: https://patentgrep.com/patent/US10372588B2

## CPC

- G06F 11/3636: {by tracing the execution of the program}
- G06F 11/362: Debugging of software
- G06F 11/3698: Environments for analysis, debugging or testing of software
- G06F 11/3696: {Methods or tools to render software testable}
- G06F 2009/45591: {Monitoring or debugging support}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and associated system for providing debug information associated with computer software executing in a production container. The production container is replicated as a debug container. The computer software is executed in the production container and the debug container. Executing the computer software includes replicating requests sent to the computer software executing in the production container to the computer software executing in the debug container. Requests from the computer software executing in the production container are stored together with any responses to the stored requests. Debug information generated by the computer software executing in the debug container is stored.

## Claims

### Claim 1

A method for providing debug information associated with computer software executing in a production container, said method comprising:
replicating, by one or more processors, the production container as a debug container;
executing, by the one or more processors, the computer software in the production container and corresponding computer software in the debug container, wherein said executing the computer software in the production container and the debug container comprises executing the computer software in the production container with assertions disabled and executing the computer software in the debug container with assertions enabled, wherein each assertion comprises an assert statement that checks a Boolean condition and does nothing if the Boolean condition is true, but immediately terminates an executing program if the Boolean condition is false;
processing, by one or more processors, requests via: a gateway sending each request to the computer software executing in the production container, said gateway replicating each request sent to the computer software executing in the production container, said gateway sending each replicated request to the corresponding computer software executing in the debug container, said computer software executing in the production container executing the requests received from the debug container, said corresponding computer software executing in the debug container executing the replicated requests received from the debug container;
storing, by the one or more processors, the requests from the computer software executing in the production container together with responses to the stored requests;
storing, by the one or more processors, debug information generated by the corresponding computer software executing in the debug container;
debugging, by the one or more processors using the stored debug information generated by the computer software executing in the debug container, the computer software executing in the production container.

### Claim 2 (depends on 1)

The method of claim 1, wherein said using the stored debug information comprises utilizing the stored debug information through a web interface.

### Claim 3 (depends on 1)

The method of claim 1, said method further comprising:
said production container running a first build of software that has a maximum number of compiler optimizations enabled for maximum performance of the computer software; and
said debug container running a second build of the computer software that has a minimal number of compiler optimizations so as to increase a debug ability of the debug container and to reduce an impact of compiler errors.

### Claim 4 (depends on 1)

The method of claim 1, wherein the computer software in the debug container is executed on hardware that is optimized for generating debug information by using solid state storage devices, larger memory capacity, additional CPU capacity, or combinations thereof.

### Claim 5 (depends on 1)

The method of claim 1, wherein the method further comprises:
said one or more processors recording, and subsequently replaying to the computer software executing in the debug container, requests and responses of execution of the computer software in the production container.

### Claim 6

A computer system, comprising one or more processors, one or more memories, and one or more computer readable hardware storage devices, said one or more hardware storage device containing program instructions executable by the one or more processors via the one or more memories to implement a method for providing debug information associated with computer software executing in a production container, said method comprising:
replicating, by the one or more processors, the production container as a debug container;
executing, by the one or more processors, the computer software in the production container and the debug container, wherein said executing the computer software in the production container and the debug container comprises executing the computer software in the production container with assertions disabled and executing the computer software in the debug container with assertions enabled, wherein each assertion comprises an assert statement that checks a Boolean condition and does nothing if the Boolean condition is true, but immediately terminates an executing program if the Boolean condition is false;
processing, by one or more processors, requests via: a gateway sending each request to the computer software executing in the production container, said gateway replicating each request sent to the computer software executing in the production container, said gateway sending each replicated request to the corresponding computer software executing in the debug container, said computer software executing in the production container executing the requests received from the debug container, said corresponding computer software executing in the debug container executing the replicated requests received from the debug container;
storing, by the one or more processors, the requests from the computer software executing in the production container together with responses to the stored requests;
storing, by the one or more processors, debug information generated by the corresponding computer software executing in the debug container;
debugging, by the one or more processors using the stored debug information generated by the computer software executing in the debug container, the computer software executing in the production container.

### Claim 7 (depends on 6)

The computer system of claim 6, wherein said using the stored debug information comprises utilizing the stored debug information through a web interface.

### Claim 8 (depends on 6)

The computer system of claim 6, said method further comprising:
said production container running a first build of software that has a maximum number of compiler optimizations enabled for maximum performance of the computer software; and
said debug container running a second build of the computer software that has a minimal number of compiler optimizations so as to increase a debug ability of the debug container and to reduce an impact of compiler errors.

### Claim 9 (depends on 6)

The computer system of claim 6, wherein the computer software in the debug container is executed on hardware that is optimized for generating debug information by using solid state storage devices, larger memory capacity, additional CPU capacity, or combinations thereof.

### Claim 10 (depends on 6)

The computer system of claim 6, wherein the method further comprises:
said one or more processors recording, and subsequently replaying to the computer software executing in the debug container, requests and responses of execution of the computer software in the production container.

### Claim 11

A computer program product, comprising one or more computer readable hardware storage devices having computer readable program instructions stored therein, said program instructions executable by one or more processors of a computer system to implement a method for providing debug information associated with computer software executing in a production container, said method comprising:
replicating, by the one or more processors, the production container as a debug container;
executing, by the one or more processors, the computer software in the production container and the debug container, wherein said executing the computer software in the production container and the debug container comprises executing the computer software in the production container with assertions disabled and executing the computer software in the debug container with assertions enabled, wherein each assertion comprises an assert statement that checks a Boolean condition and does nothing if the Boolean condition is true, but immediately terminates an executing program if the Boolean condition is false;
processing, by one or more processors, requests via: a gateway sending each request to the computer software executing in the production container, said gateway replicating each request sent to the computer software executing in the production container, said gateway sending each replicated request to the corresponding computer software executing in the debug container, said computer software executing in the production container executing the requests received from the debug container, said corresponding computer software executing in the debug container executing the replicated requests received from the debug container;
storing, by the one or more processors, the requests from the computer software executing in the production container together with responses to the stored requests;
storing, by the one or more processors, debug information generated by the corresponding computer software executing in the debug container;
debugging, by the one or more processors using the stored debug information generated by the computer software executing in the debug container, the computer software executing in the production container.

### Claim 12 (depends on 11)

The computer program product of claim 11, wherein said using the stored debug information comprises utilizing the stored debug information through a web interface.

### Claim 13 (depends on 11)

The computer program product of claim 11, said method further comprising:
said production container running a first build of software that has a maximum number of compiler optimizations enabled for maximum performance of the computer software; and
said debug container running a second build of the computer software that has a minimal number of compiler optimizations so as to increase a debug ability of the debug container and to reduce an impact of compiler errors.

### Claim 14 (depends on 11)

The computer program product of claim 11, wherein the computer software in the debug container is executed on hardware that is optimized for generating debug information by using solid state storage devices, larger memory capacity, additional CPU capacity, or combinations thereof.
