Abstract

Debugging and analyzing a snapshot of a crashed program's memory is far more difficult than working with a live program, because debuggers can no longer execute code to help make sense of the program state. We present an architecture that supports the restricted execution of ordinary code starting from the snapshot, as if the dead objects within it had been restored, but without access to their original external environment. We demonstrate the feasibility of this approach via an implementation for Java that does not require a custom virtual machine, show that it performs competitively with live execution, and use it to diagnose an unresolved memory leak in a mature mainstream application.
- Clozure cl documentation - 4.9. saving applications. http://ccl.clozure.com/manual/chapter4.9.html#Saving-Applications.Google Scholar
- Eclipse memory analyzer open source project. http://www.eclipse.org/mat/.Google Scholar
- B. Alpern, S. Augart, S. Blackburn, M. Butrico, A. Cocchi, P. Cheng, J. Dolby, S. Fink, D. Grove, M. Hind, et al. The jikes research virtual machine project: building an open-source research community. phIBM Systems Journal, 44 (2): 399--417, 2005. Google Scholar
Digital Library
- T. Austin, T. Disney, and C. Flanagan. Virtual values for language extension. In phOOPSLA, pages 921--938. 2011. Google Scholar
Digital Library
- G. Bracha and D. Ungar. Mirrors: design principles for meta-level facilities of object-oriented programming languages. In phOOPSLA, pages 331--344. ACM, 2004. Google Scholar
Digital Library
- E. Bruneton, R. Lenglet, and T. Coupaye. ASM: a code manipulation tool to implement adaptable systems. In phAdaptable and extensible component systems, 2002.Google Scholar
- P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In phPOPL, pages 238--252, 1977. Google Scholar
Digital Library
- M. Factor, A. Schuster, and K. Shagin. Instrumentation of standard libraries in object-oriented languages: the twin class hierarchy approach. In phOOPSLA, pages 288--300, 2004. Google Scholar
Digital Library
- O. Gruber, B. Hargrave, J. McAffer, P. Rapicault, and T. Watson. The eclipse 3.0 platform: adopting osgi technology. phIBM Systems Journal, 44 (2): 289--299, 2005. Google Scholar
Digital Library
- J. Huang and C. Zhang. Lean: simplifying concurrency bug reproduction via replay-supported execution reduction. In phOOPSLA, pages 451--466, 2012. Google Scholar
Digital Library
- J. Huang, P. Liu, and C. Zhang. LEAP: lightweight deterministic multi-processor replay of concurrent java programs. In phFSE, pages 207--216, 2010. Google Scholar
Digital Library
- D. Kozen and M. Stillerman. Eager class initialization for java. In phFTRTFT, pages 71--80, 2002. Google Scholar
Digital Library
- D. H. Lorenz and J. Vlissides. Pluggable reflection: decoupling meta-interface and implementation. In phICSE, pages 3-- 13, May 2003. Google Scholar
Digital Library
- E. K. Maxwell, G. Back, and N. Ramakrishnan. Diagnosing memory leaks using graph mining on heap dumps. In phKDD, pages 115--124, 2010. Google Scholar
Digital Library
- S. Mostinckx, T. Van Cutsem, S. Timbermont, and E. Tanter. Mirages: Behavioral intercession in a mirror-based architecture. In phDLS, pages 89--100, 2007. Google Scholar
Digital Library
- Oracle. Java platform debugger architecture. http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/index.html.Google Scholar
- G. Pothier and É. Tanter. Summarized trace indexing and querying for scalable back-in-time debugging. In phECOOP, pages 558--582, 2011. Google Scholar
Digital Library
- G. Xu, A. Rountev, Y. Tang, and F. Qin. Efficient checkpointing of java software using context-sensitive capture and replay. In phESEC-FSE, pages 85--94, 2007. Google Scholar
Digital Library
- Z. Yang, M. Yang, L. Xu, H. Chen, and B. Zang. ORDER: object centric deterministic replay for java. In phUSENIX, 2011. Google Scholar
Digital Library
Index Terms
Interacting with dead objects
Recommendations
Interacting with dead objects
OOPSLA '13: Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applicationsDebugging and analyzing a snapshot of a crashed program's memory is far more difficult than working with a live program, because debuggers can no longer execute code to help make sense of the program state. We present an architecture that supports the ...
JEqualityGen: generating equality and hashing methods
GPCE '10Manually implementing equals (for object comparisons) and hashCode (for object hashing) methods in large software projects is tedious and error-prone. This is due to many special cases, such as field shadowing, comparison between different types, or ...
Dynamic instrumentation for Java using a virtual JVM
Performance analysis and grid computingDynamic instrumentation, meaning modification of an application's instructions at run-time in order to monitor its behaviour, is a very powerful foundation for a wide range of program manipulation tools. This paper concerns the problem of implementing ...







Comments