IP Library Granted Patent US 10,846,197
Granted Patent B1
US 10,846,197 · App. 16/218,514 · Granted Nov 24, 2020

Systems and methods for debugging mixed-language applications

Inventor: Eric Bluestein (Seattle, WA)
Assignee: Facebook, Inc.
G06F11/3624G06F8/40G06F11/3664
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 10,846,197
App. No.
16/218,514
Granted
Nov 24, 2020
Kind
B1
Abstract

A computer-implemented method for debugging mixed-language applications may include (i) determining that an application includes code written in least two programming languages, (ii) identifying, in response to determining that the application includes the code written in the at least two programming languages, a language-agnostic debugger that integrates dynamically specified language-specific debuggers via a common debugger protocol, (iii) configuring the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate a language-specific debugger for the programming language, and (iv) debugging the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages. Various other methods, systems, and computer-readable media are also disclosed.

Claims (50)

1. A computer-implemented method comprising:

determining that an application comprises code written in least two programming languages;

identifying, in response to determining that the application comprises the code written in the at least two programming languages, a language-agnostic debugger that integrates dynamically specified language-specific debuggers via a common debugger protocol;

configuring the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate a language-specific debugger for the programming language; and

debugging the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages by:

determining that at least one language-specific debugger is a native debugger for a platform on which the application is being debugged; and

injecting, via the native debugger, code into the application that facilitates debugging of the application on the platform by the language-agnostic debugger at least in part by notifying the language-agnostic debugger when the application transitions between executing application code written in different programming languages.

2. The computer-implemented method of claim 1 , wherein:

determining that the application comprises code written in the least two programming languages comprises determining that the application comprises code written in at least three programming languages; and

configuring the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate the language-specific debugger for the programming language comprises configuring the language-agnostic debugger to, for each of the at least three programming languages in which the application is written, integrate a language-specific debugger for the programming language.

3. The computer-implemented method of claim 1 , wherein configuring the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate the language-specific debugger for the programming language comprises, for at least one language-specific debugger:

identifying a set of debugging instructions used by the language-specific debugger; and

translating the set of debugging instructions into the common debugger protocol.

4. The computer-implemented method of claim 1 , wherein injecting, via the native debugger, the code into the application that facilitates debugging of the application on the platform by the language-agnostic debugger comprises translating, by the debugger, high-level code into machine code.

5. The computer-implemented method of claim 1 , wherein debugging the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages comprises tracking a value of at least one variable passed from code written in a first programming language to code written in a second programming language.

6. The computer-implemented method of claim 1 , wherein debugging the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages comprises:

detecting that a user is stepping through code written in a first programming language; and

enabling the user to step into a function written in a second programming language.

7. The computer-implemented method of claim 1 , wherein debugging the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages comprises enabling a user to debug the application via a same user interface for each of the at least two programming languages.

8. A system comprising:

at least one physical processor;

physical memory comprising computer-executable instructions that, when executed by the physical processor, cause the physical processor to:

determine that an application comprises code written in least two programming languages;

identify, in response to determining that the application comprises the code written in the at least two programming languages, a language-agnostic debugger that integrates dynamically specified language-specific debuggers via a common debugger protocol;

configure the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate a language-specific debugger for the programming language; and

debug the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages by:

determining that at least one language-specific debugger is a native debugger for a platform on which the application is being debugged; and

injecting, via the native debugger, code into the application that facilitates debugging of the application on the platform by the language-agnostic debugger at least in part by notifying the language-agnostic debugger when the application transitions between executing application code written in different programming languages.

9. The system of claim 8 , wherein the computer-executable instructions cause the physical processor to:

determine that the application comprises code written in the least two programming languages by determining that the application comprises code written in at least three programming languages; and

configure the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate the language-specific debugger for the programming language by configuring the language-agnostic debugger to, for each of the at least three programming languages in which the application is written, integrate a language-specific debugger for the programming language.

10. The system of claim 8 , wherein the computer-executable instructions cause the physical processor to configure the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate the language-specific debugger for the programming language by, for at least one language-specific debugger:

identifying a set of debugging instructions used by the language-specific debugger; and

translating the set of debugging instructions into the common debugger protocol.

11. The system of claim 8 , wherein the computer-executable instructions cause the physical processor to inject, via the native debugger, the code into the application that facilitates debugging of the application on the platform by the language-agnostic debugger by translating, by the debugger, high-level code into machine code.

12. The system of claim 8 , wherein the computer-executable instructions cause the physical processor to debug the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages by tracking a value of at least one variable passed from code written in a first programming language to code written in a second programming language.

13. The system of claim 8 , wherein the computer-executable instructions cause the physical processor to debug the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages by:

detecting that a user is stepping through code written in a first programming language; and

enabling the user to step into a function written in a second programming language.

14. The system of claim 8 , wherein the computer-executable instructions cause the physical processor to debug the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages by enabling a user to debug the application via a same user interface for each of the at least two programming languages.

15. A non-transitory computer-readable medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

determine that an application comprises code written in least two programming languages;

identify, in response to determining that the application comprises the code written in the at least two programming languages, a language-agnostic debugger that integrates dynamically specified language-specific debuggers via a common debugger protocol;

configure the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate a language-specific debugger for the programming language; and

debug the application using the language-agnostic debugger that integrates the language-specific debuggers for the at least two programming languages by:

determining that at least one language-specific debugger is a native debugger for a platform on which the application is being debugged; and

injecting, via the native debugger, code into the application that facilitates debugging of the application on the platform by the language-agnostic debugger at least in part by notifying the language-agnostic debugger when the application transitions between executing application code written in different programming languages.

16. The non-transitory computer-readable medium of claim 15 , wherein the one or more computer-readable instructions cause the computing device to:

determine that the application comprises code written in the least two programming languages comprises determining that the application comprises code written in at least three programming languages; and

configure the language-agnostic debugger to, for each of the at least two programming languages in which the application is written, integrate the language-specific debugger for the programming language comprises configuring the language-agnostic debugger to, for each of the at least three programming languages in which the application is written, integrate a language-specific debugger for the programming language.

Assignments (3)
CHANGE OF NAME Recorded Feb 18, 2022
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 059191/0695 →
CORRECTIVE ASSIGNMENT TO CORRECT THE COMMA OF ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 048357 FRAME: 0388. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Feb 1, 2022
From: BLUESTEIN, ERIC
To: FACEBOOK, INC.
Reel/Frame 058921/0167 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2019
From: BLUESTEIN, ERIC
To: FACEBOOK, INC.,
Reel/Frame 048357/0388 →
Cited By (1)
US 12,699,769