US8484621B2ActiveUtilityA1

Method and system for data centric heap profiling

37
Assignee: SOUNDARARAJAN SURESHPriority: May 7, 2009Filed: Jun 24, 2009Granted: Jul 9, 2013
Est. expiryMay 7, 2029(~2.8 yrs left)· nominal 20-yr term from priority
G06F 11/3624
37
PatentIndex Score
0
Cited by
2
References
11
Claims

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-modified
What 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.