# US 8,752,020 B2 · System and process for debugging object-oriented programming code leveraging runtime metadata

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

- Number: US 8,752,020 B2
- Document ID: US8752020B2
- Status: Granted
- Kind: B2
- Application number: 12/247,118
- Filed: 2008-10-07
- Published: 2010-02-25
- Granted: 2014-06-10
- Earliest claimed: 2008-08-21
- Assignees: International Business Machines Corporation
- Applicants: Maxime Daniel
- Inventors: Maxime Daniel
- Web page: https://patentgrep.com/patent/US8752020B2

## CPC

- G06F 11/3624: {by performing operations on the source code, e.g. via a compiler}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and process for debugging of a computer program, is provided. One implementation includes a function configured for including mark-up information marking certain methods as special fields in a source code of the application program, such annotations denoting debugging instructions and indications of which methods are intended for debugging only; a processing module configured for generating a production version of the application program including the same semantics as the original application program but potentially fewer methods and no debug related annotations, wherein methods that are not annotated as debugging only methods are maintained; and a debugger configured for debugging purposes using the debugging methods.

## Claims

### Claim 1

A method of debugging an object-oriented computer program, comprising:
marking certain methods as special fields in a source code of the application program for participating in a debugging process;
deriving pseudo-field names for the marked certain methods using programming language annotations, or method names based on rules;
employing a hardware processor for generating a debug-enabled version of the computer program including debugging methods based on the special fields;
providing the debug-enabled version of the program computer to a debugger module for debugging purposes using the debugging methods; and
debugging the marked certain methods using the pseudo-field names as true fields,
wherein the debugging methods comprise debug-only methods which take no parameter, and wherein debugging the marked methods using the pseudo-field names as true fields returns a computed value that is used as a true field value.

### Claim 2 (depends on 1)

The method of claim 1, wherein the programming language carries complex meta-data at runtime, the method names are derived based on implied semantics, and the debugger has access to annotation information at runtime, wherein the annotation information is stored in one or more binary files.

### Claim 3 (depends on 1)

The method of claim 1, further including the debugger providing information on a user interface with the special fields.

### Claim 4 (depends on 1)

The method of claim 1 further including post-processing the debug-enabled version to eliminate a portion of said debug methods, and generating a production system.

### Claim 5 (depends on 1)

The method of claim 1, wherein marking certain methods as special fields includes marking certain methods as special fields using programming language annotations.

### Claim 6 (depends on 5)

The method of claim 5, wherein generating a debug-enabled version of the computer program includes compiling the annotations and their values into an executable application including debug methods, which a debugger reads and utilizes at debug time.

### Claim 7 (depends on 1)

The method of claim 1, wherein a derived pseudo-field name is used as a field name and a value is computed based on the field name.

### Claim 8 (depends on 7)

The method of claim 7, wherein the field is displayed including display of field type, field name and an identifier of the field.

### Claim 9

A system for interactive debugging of a computer application program, comprising:
a function that marks certain methods as special fields in a source code of the application program, such annotations denoting debugging instructions and indications of which methods are intended for debugging only, and that derives pseudo-field names for the marked certain methods using programming language annotations, or method names based on rules;
a processing module employing a hardware processor for generating a production version of the application program including the same semantics as the original application program but potentially fewer methods and no debug related annotations, wherein methods that are not annotated as debugging only methods are maintained; and
a debugger configured for debugging purposes using the debugging methods, wherein the pseudo-field names are used as true fields,
wherein the debugging methods comprise debug-only methods which take no parameter, wherein the pseudo-field names are used as true fields for returning a computed value that is used as a true field value.

### Claim 10 (depends on 9)

The system of claim 9, wherein the programming language carries complex meta-data at runtime, and the method names are derived based on implied semantics, and the debugger has access to annotation information at runtime, wherein the annotation information is stored in one or more binary files.

### Claim 11 (depends on 9)

The system of claim 9, wherein the debugger provides information on a user interface with the special fields.

### Claim 12 (depends on 9)

The system of claim 9, wherein the processor module eliminates a portion of said debug methods, for generating-the production system.

### Claim 13 (depends on 9)

The system of claim 9, wherein said certain methods are marked as special fields using programming language annotations.

### Claim 14 (depends on 13)

The system of claim 13, wherein the processing module compiles the annotations and their values into an executable application including debug methods, which a debugger reads and utilizes at debug time.

### Claim 15

A computer program product for interactive debugging of an application program, comprising a computer usable non-transitory medium including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to:
receive source code of the computer program including mark-up information marking certain methods as special fields in a source code of the application program for participating in a debugging process, derive pseudo-field names for the marked certain methods using programming language annotations, or method names based on rules, and generate a debug-enabled version of the computer program including debugging methods based on the special fields;
executing the debug-enabled version of the application program for debugging purposes using the debugging methods; and
debug the marked certain methods using the pseudo-field names as true fields,
wherein the debugging methods comprise debug-only methods which take no parameter, wherein debugging the marked certain methods comprises using the pseudo-field names as true fields for returning a computed value that is used as a true field value.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the programming language is capable of carrying complex meta-data at runtime, and the method names are derived based on implied semantics, and the debugger has access to annotation information at runtime, wherein the annotation information is stored in one or more binary files.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein debugging instructions further include instructions for providing information on a user interface with the special fields.

### Claim 18 (depends on 15)

The computer program product of claim 15 further including instructions for post-processing the debug-enabled version to eliminate a portion of said debug methods for generating a production system.

### Claim 19 (depends on 15)

The computer program product of claim 15, wherein said certain methods are marked as special fields using programming language annotations, and instructions for generating a debug-enabled version include instructions for compiling the annotations and their values into an executable application including debug methods, which a debugger reads and utilizes at debug time.
