Collecting application state in a runtime environment for reversible debugging

US2020310942A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2020310942-A1
Application numberUS-201916372204-A
CountryUS
Kind codeA1
Filing dateApr 1, 2019
Priority dateApr 1, 2019
Publication dateOct 1, 2020
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Collecting runtime virtual machine external state for an application running in an application runtime virtual machine, for use in emulation of the application. A method includes identifying application bytecode for which runtime virtual machine external state is to be collected. The method further includes executing machine code generated from the bytecode to generate the runtime virtual machine external state. The method further includes collecting the runtime virtual machine external state. The method further includes storing the runtime virtual machine external state for use in emulating the application.

First claim

Opening claim text (preview).

1 . A method of collecting runtime virtual machine external state, the virtual machine external state comprising data that cannot be reproduced by emulating execution of an application running in a runtime virtual machine, the runtime virtual machine being a virtual machine being configured to execute an application by compiling bytecode into native machine code, the virtual machine external state being for use in emulation of the application, the method comprising: identifying application bytecode for which runtime virtual machine external state is to be collected; executing native machine code generated from the bytecode causing state of the runtime virtual machine to change; capture one or more snapshots of states of the runtime virtual machine; wherein executing the native machine code generated from the bytecode further causes the runtime virtual machine external state; collecting the runtime virtual machine external state; and storing the snapshots and the runtime virtual machine external state for use in emulating the application, such that emulation can be started from a snapshot and runtime virtual machine external state can be provided as needed as emulation proceeds from the snapshot. 2 . The method of claim 1 , wherein identifying application bytecode for which runtime virtual machine external state is to be collected comprises identifying runtime virtual machine boundaries in execution of the application, and as a result collecting application state between those runtime virtual machine boundaries. 3 . The method of claim 1 , wherein identifying application bytecode for which runtime virtual machine external state is to be collected comprises identifying user generated code boundaries in execution of the application, and collecting application state between those user generated code boundaries. 4 . The method of claim 1 , wherein identifying application bytecode for which runtime virtual machine external state is to be collected comprises identifying user identified code. 5 . The method of claim 1 , wherein emulation of the application is performed on portions of the application to collect immediate state able to be generated by emulating the application without creating native machine code in conjunction with executing portions of the application to collect the runtime virtual machine external state. 6 . The method of claim 5 , wherein an emulator used for emulating the application sets breakpoints in the machine code when the emulator identifies locations in the bytecode where runtime virtual machine external state is required, causing a break in executing the native machine code for collecting the runtime virtual machine external state. 7 . The method of claim 1 , wherein an emulator identifies locations in the bytecode where runtime virtual machine external state is required by identifying code that performs at least one of: obtaining a random number, obtaining a time, obtaining data from another source external to runtime virtual machine code in the runtime virtual machine, identifying shared memory reads, or identifying points where multithreading occurs. 8 . A computer system comprising: one or more processors; and one or more computer-readable media having stored thereon instructions that are executable by the one or more processors to configure the computer system to collect runtime virtual machine external state, the virtual machine external state comprising data that cannot be reproduced by emulating execution of an application running in a runtime virtual machine, the runtime virtual machine being a virtual machine being configured to execute an application by compiling bytecode into native machine code, the virtual machine external state being for use in emulation of the application, including instructions that are executable to configure the computer system to perform at least the following: identify application bytecode for which runtime virtual machine external state is to be collected; execute native machine code generated from the bytecode causing state of the runtime virtual machine to change; capture one or more snapshots of states of the runtime virtual machine; wherein executing the native machine code generated from the bytecode further causes the runtime virtual machine external state to be generated, the runtime virtual machine external state comprising data that cannot be reproduced by emulating execution of the application; collect the runtime virtual machine external state; and store the snapshots and the runtime virtual machine external state for use in emulating the application. 9 . The computer system of claim 8 , wherein identifying application bytecode for which runtime virtual machine external state is to be collected comprises identifying runtime virtual machine boundaries in execution of the application, and as a result collecting application state between those runtime virtual machine boundaries. 10 . The computer system of claim 8 , wherein identifying application bytecode for which runtime virtual machine external state is to be collected comprises identifying user generated code boundaries in execution of the application, and collecting application state between those user generated code boundaries. 11 . The computer system of claim 8 , wherein identifying application bytecode for which runtime virtual machine external state is to be collected comprises identifying user identified code. 12 . The computer system of claim 8 , wherein emulation of the application is performed on portions of the application to collect immediate state able to be generated by emulating the application without creating native machine code in conjunction with executing portions of the application to collect the runtime virtual machine external state. 13 . The computer system of claim 12 , wherein an emulator used for emulating the application sets breakpoints in the machine code when the emulator identifies locations in the bytecode where runtime virtual machine external state is required, causing a break in executing the native machine code for collecting the runtime virtual machine external state. 14 . The computer system of claim 8 , wherein an emulator identifies locations in the bytecode where runtime virtual machine external state is required by identifying code that performs at least one of: obtaining a random number, obtaining a time, obtaining data from another source external to runtime virtual machine code in the runtime virtual machine, identifying shared memory reads, or identifying points where multithreading occurs. 15 . A computer-readable storage hardware device having stored thereon instructions that are executable by one or more processors to configure a computer system to collect runtime virtual machine external state, the virtual machine external state comprising data that cannot be reproduced by emulating execution of an application running in a runtime virtual machine, the runtime virtual machine being a virtual machine being configured to execute an application by compiling bytecode into native machine code, the virtual machine external state being for use in emulation of the application, the computer-readable storage device including instructions that are executable to configure the computer system to perform at least the following: identify application bytecode for which runtime virtual machine external state is to be collected; execute native machine code generated from the bytecode causing state of the runtime virtual machine to change; capture one or more snapshots of states of the runtime virtual machine; wherein executing the native machi

Assignees

Inventors

Classifications

  • Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators · CPC title

  • in-circuit-emulation [ICE] arrangements · CPC title

  • by runtime analysis (performance monitoring G06F11/3466) · CPC title

  • by tracing the execution of the program · CPC title

  • Hypervisor-specific management and integration aspects · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2020310942A1 cover?
Collecting runtime virtual machine external state for an application running in an application runtime virtual machine, for use in emulation of the application. A method includes identifying application bytecode for which runtime virtual machine external state is to be collected. The method further includes executing machine code generated from the bytecode to generate the runtime virtual machi…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/45504. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Oct 01 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).