DOI QR코드

DOI QR Code

Activity-based Event Capture and Replay Technique for Reproducing Crashes in Android Applications

안드로이드 어플리케이션의 결함 재생을 위한 액티버티 단위의 이벤트 캡춰 및 재생 기법

  • Received : 2013.08.09
  • Accepted : 2013.10.13
  • Published : 2014.02.28

Abstract

As Android platform and its applications are widely used, it is necessary to assure the reliability and safety of Android applications. The capture and replay technique is widely used for reproducing the crashes in Java applications. In this paper, we adapt the context-based capture and replay technique to Android applications by considering Android activity structure and its GUI characteristics. Our capture and replay technique uses probe code insertion based on AspectJ for minimizing the original code change and for enhancing the efficiency and reusability of the probe codes. For proving the efficiency of our technique, we provide a case study and execution overhead comparisons with related works, in which our approach has merits in GUI oriented Android applications with relatively low execution overhead.

Keywords

References

  1. J. Steven, P. Chandra, B. Fleck, A. Podgurski, "jRapture: A Capture/Replay Tool for Observation-Based Testing," Proceedings of the International Symposium on Software Testing and Analysis, pp.158-167, 2000.
  2. S. Artzi, S. Kim, M.D. Ernst, "ReCrash: Making Software Failures Reproducible by Preserving Object States," Proceedings of the European conference on Object-Oriented Programming, pp.542-565, 2008.
  3. S. Joshi, A. Orso, "SCARPE: A Technique and Tool for Selective Capture and Replay of Program Executions," Proceedings of the ICSM, pp.234-243, 2007.
  4. J. Clause, A. Orso, "A Technique for Enabling and Supporting Debugging of Field Failures," Proceedings of the International Conference on Software Engineering, pp.261-270, 2007.
  5. G. Altekar, I. Stoica. "ODR: Output-Deterministic Replay for Multicore Debugging." Proceedings of the Symposium on Operating Systems Principles, pp.193-206, 2009.
  6. M. Roneee, K. Bosschere, "RecPlay: A Fully Integrated Practical Record/Replay System," ACM Transactions on Computer Systems, Vol. 17, No. 2, pp.133-152, 1999. https://doi.org/10.1145/312203.312214
  7. T.J. LeBlanc, J.M. Mellor-Crummey, "Debugging parallel programs with Instant Replay," IEEE Transactions on Computers, Vol. C-36, No. 4, pp.471-482, 1987. https://doi.org/10.1109/TC.1987.1676929
  8. A. Georges, M. Christiaens, M. Ronsse, K. Bosschere. "JaRec: A portable record/replay environment for multi-threaded Java applications," Software: Practice and Experience, Vol. 34, No. 6, pp.523-547, 2004. https://doi.org/10.1002/spe.579
  9. J. Huang, P. Liu, C. Zhang, S. Kim. "CLAP: Concurrent Lightweight Crash Reproduction," Technical Report. The HongKong University of Science and Technology, 2009.
  10. Android Developers. http://developer.android.com.
  11. Introduction to AspectJ. http://www.eclipse.org/aspectj/doc/released/progguide/starting-aspectj.html.
  12. R. Miles, AspectJ Cookbook, O'Reilly Media, 2004.
  13. F. Cornelis, A. Georges, M. Christiaens, M. Ronsse, T. Ghesquiere, K. Bosschere. "A Taxonomy of Execution Replay Systems," Proceedings of the International Conference on Advances in Infrastructure for Electronic Business, Education, Science, Medicine, and Mobile Technologies on the Internet, 2003.
  14. R. Konuru, H. Srinivasan, J.D. Choi, "Deterministic replay of distributed Java applications," Proceedings of the IEEE International Symposium on Parallel and Distributed Processing, pp.219-228, 2000.
  15. J.D. Choi, B. Alpern, T. Ngo, M. Sridharan, J. Vissides, "A perturbation free replay platform for cross-optimized multithreaded applications," Proceedings of the International Symposium on Parallel and Distributed Processing, 2001.
  16. S. Narayanasamy, G. Pokam, B. Calder, "BugNet: Continuously Recording Program Execution for Deterministic Replay Debugging," Proceedings of the Annual International Symposium on Computer Architecture, pp.284-295, 2005.
  17. S.M. Srinivasan, S. Kandula, C.R. Andrews, Y. Zhou. "Flashback: A Lightweight Extension for Rollback and Deterministic Replay for Software Debugging," Proceedings of the Annual conference on USENIX, pp.29-34, 2004.