Method and system for data centric heap profiling
Abstract
A method and system for data centric heap profiling is disclosed. In one embodiment, a method, implemented in a computing device, for data centric heap profiling includes generating a type table for data structure types in source code using a compiler of the computing device. The method also includes identifying each heap allocation site and a corresponding data structure type in the source code using the compiler. The method further includes generating a data centric view of a heap o fan application compiled from the source code based on the each heap allocation site and the corresponding data structure type using a debugger of the computing device when a snapshot of the heap is requested during an execution of the application.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1. A method, implemented in a computing device, for data centric heap profiling, comprising:
generating a type table for data structure types in source code using a compiler of the computing device;
identifying each heap allocation site and a corresponding data structure type in the source code using the compiler, wherein the identifying the each heap allocation site and the corresponding data structure type comprises:
generating a heap allocation site table which includes a program counter (PC) value, an allocation/de-allocation flag, and at least one pointer to at least one of the data structure types; and
generating a mapping between the each heap allocation site and the corresponding data structure type using the at least one pointer;
wherein the type table and the heap allocation site table are written to a non-loadable section of binary/object files generated by the compiler; and
generating a data centric view of a heap of an application compiled from the source code based on the each heap allocation site and the corresponding data structure type using a debugger of the computing device when a snapshot of the heap is requested during an execution of the application.
2. The method of claim 1 , wherein the type table comprises a data structure type and a size of the data structure type.
3. The method of claim 1 , wherein the generating the data centric view of the heap comprises generating a run-time heap allocation call stack table which includes an address allocated for the each heap allocation site, a size of the address, the allocation/de-allocation flag, and the PC value.
4. The method of claim 1 , wherein the generating the data centric view of the heap further comprises mapping a call graph signature at the point of the each heap allocation site to the corresponding data structure type, wherein the call graph signature comprises a set of functions along a code path from the each heap allocation site to a main function.
5. The method of claim 1 , wherein the identifying the each heap allocation site and the corresponding data structure type is based on an intra-procedural analysis.
6. The method of claim 1 , wherein the identifying the each heap allocation site and the corresponding data structure type is based on an inter-procedural analysis, further comprising casting a pointer to void* as a pointer to a correct data structure type.
7. The method of claim 1 , wherein the source code is written using a weakly typed language which includes C, C++, Pascal, Scripting language, and Python.
8. A system for data centric heap profiling, comprising:
a processor; and
a memory configured for temporarily storing a set of instructions for a data
centric heap profiling module, when executed by the processor, causes the
processor to perform a method comprising:
generating a type table for data structure types in source code using a compiler of a computing device;
identifying each heap allocation site and a corresponding data structure type in the source code using the compiler, wherein the identifying the each heap allocation site and the corresponding data structure type comprises:
generating a heap allocation site table which includes a program counter (PC) value, an allocation/de-allocation flag, and at least one pointer to at least one of the data structure types; and
generating a mapping between the each heap allocation site and the corresponding data structure type using the at least one pointer;
wherein the type table and the heap allocation site table are written to a non-loadable section of binary/object files generated by the compiler; and
generating a data centric view of a heap of an application compiled from the source code based on the each heap allocation site and the corresponding data structure type using a debugger of the computing device when a snapshot of the heap is requested during an execution of the application.
9. The system of claim 8 , wherein the source code is written using a weakly typed language which includes C, C++, Pascal, Scripting language, and Python.
10. A non-transitory computer readable medium for a data centric heap profiling having instructions that, when executed by a computer, cause the computer to perform a method comprising:
generating a type table for data structure types in source code using a compiler of the computer;
identifying each heap allocation site and a corresponding data structure type in the source code using the compiler, wherein the identifying the each heap allocation site and the corresponding data structure type comprises:
generating a heap allocation site table which includes a program counter (PC) value, an allocation/de-allocation flag, and at least one pointer to at least one of the data structure types; and
generating a mapping between the each heap allocation site and the corresponding data structure type using the at least one pointer;
wherein the type table and the heap allocation site table are written to a non-loadable section of binary/object files generated by the compiler; and
generating a data centric view of a heap of an application compiled from the source code based on the each heap allocation site and the corresponding data structure type using a debugger of the computer when a snapshot of the heap is requested during an execution of the application.
11. The non-transitory computer readable medium of claim 10 , wherein the identifying the each heap allocation site and the corresponding data structure type comprises:
generating a heap allocation site table which includes a PC value, an allocation/de-allocation flag, and at least one pointer to at least one of the data structure types; and
generating a mapping between the each heap allocation site and the corresponding data structure type using the at least one pointer.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.