IP Library Granted Patent US 9,645,869
Granted Patent B2
US 9,645,869 · App. 12/958,001 · Granted May 9, 2017

Using exception information

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,645,869
App. No.
12/958,001
Granted
May 9, 2017
Kind
B2
Abstract

A method of using exception information for binary code. The method comprises: receiving exception information relating to an exception occurring during execution of binary code, the exception information including a code reference identifying a function executing while the exception occurred, and a line number for that function. The method also comprises: accessing intermediate code using the code reference and the line number to obtain intermediate code fragments; converting the intermediate code fragments to a source code approximation; and providing the source code approximation and function name to a log for subsequent analysis.

Claims (38)

1. A method of using exception information for binary code, the method comprising:

compiling an original source code into an intermediate code assembly;

generating binary code from the intermediate code assembly;

executing the binary code;

monitoring, by the operating system, the execution of the binary code;

when an exception has occurred, creating, by the binary code, an exception object containing information related to the exception, the information including a code reference identifying a function name and a string representation of a call stack at the time the exception was thrown, wherein a frame of the call stack identifies a line number for a function;

notifying an exception detection component of the exception object;

upon notification of the exception object, examining, by the exception detection component, the call stack frame to determine which component will handle the exception;

sending the exception object to a context provider;

accessing, by the context provider, the intermediate code assembly to retrieve intermediate code fragments based on the function name and the line number associated with the exception object;

passing the retrieved intermediate code fragments to a reflector component;

converting the intermediate code fragments, by the reflector component, to a source code approximation of the original source code, the source code approximation being in a source code format different from the original source code;

writing, by the reflector component, the source code approximation, an exception type for the exception, an Internet Protocol (IP) address for a computer executing the binary code, stack trace information for the stack, a date and a time when the exception was raised, and function names associated with the line numbers of the exception object to a code fragment log for subsequent analysis;

transferring the code fragment log to a remote system; and

performing, by a software engineer at the remote system, subsequent analysis using the source code approximation to locate the actual source code associated with the intermediate code fragments.

2. A method according to claim 1 , wherein accessing further includes accessing an assembly including code implemented according to a “.NET” framework.

3. A method according to claim 1 , wherein converting further includes implementing a process of reflection to retrieve information about various classes, methods, and properties included in a particular assembly.

4. A method according to claim 1 , wherein the code fragment log can be used by a software engineer to ascertain what gave rise to the exception.

5. A computer executing:

(i) binary code programed to:

execute after being generated from an intermediate code assembly, the intermediate code assembly being a compiled version of an original source code, and

when an exception has occurred, create an exception object containing information related to the exception, the information including a code reference identifying a function name and a string representation of a call stack at the time the exception was thrown, wherein a frame of the call stack identifies a line number for a function;

(ii) an operating system programmed to:

monitor the execution of the binary code; and

provide notification about the exception object to an exception detection component;

(iii) the exception detection component programmed to:

upon notification of the exception object, examine the call stack frame to determine which component will handle the exception;

sending the exception object to a context provider;

(iv) the context provider programmed to:

access the intermediate code assembly to retrieve intermediate code fragments based on the function name and the line number associated with the exception object;

pass the retrieved intermediate code fragments to a reflector component;

(v) the reflector component programmed to:

convert the intermediate code fragments to a source code approximation of the original source code, the source code approximation being in a source code format different from the original source code;

write the source code approximation, an exception type for the exception, an Internet Protocol (IP) address for the computer, stack trace information for the stack, a date and a time when the exception was raised, and function name associated with the line numbers of the exception object to a code fragment log for subsequent analysis;

(vi) further instructions programmed to:

transfer the code fragment loci to a remote system; and

perform, by a software engineer at the remote system, subsequent analysis using the source code approximation to locate the actual source code associated with the intermediate code fragments.

6. A computer system comprising a computer according to claim 5 , and the remote system coupled to the computer.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE PROPERTIES SECTION BY INCLUDING IT WITH TEN PREVIOUSLY OMITTED PROPERTY NUMBERS PREVIOUSLY RECORDED ON REEL 65346 FRAME 367. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Aug 13, 2025
From: NCR ATLEOS CORPORATION; CARDTRONICS USA, LLC
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 072445/0072 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2024
From: NCR VOYIX CORPORATION
To: NCR ATLEOS CORPORATION
Reel/Frame 067590/0109 →
CHANGE OF NAME Recorded May 30, 2024
From: NCR CORPORATION
To: NCR VOYIX CORPORATION
Reel/Frame 067578/0417 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DOCUMENT DATE AND REMOVE THE OATH/DECLARATION (37 CFR 1.63) PREVIOUSLY RECORDED AT REEL: 065331 FRAME: 0297. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 31, 2023
From: NCR ATLEOS CORPORATION
To: CITIBANK, N.A.
Reel/Frame 065627/0332 →
RELEASE OF PATENT SECURITY INTEREST Recorded Oct 25, 2023
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: NCR VOYIX CORPORATION
Reel/Frame 065346/0531 →
SECURITY INTEREST Recorded Oct 25, 2023
From: NCR ATLEOS CORPORATION; CARDTRONICS USA, LLC
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 065346/0367 →
SECURITY INTEREST Recorded Oct 24, 2023
From: NCR ATLEOS CORPORATION
To: CITIBANK, N.A.
Reel/Frame 065331/0297 →
SECURITY AGREEMENT Recorded Apr 18, 2016
From: NCR CORPORATION; NCR INTERNATIONAL, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 038646/0001 →
SECURITY AGREEMENT Recorded Jan 15, 2014
From: NCR CORPORATION; NCR INTERNATIONAL, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032034/0010 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2011
From: PATTON, GORDON
To: NCR CORPORATION
Reel/Frame 025826/0797 →