ABSTRACT
We present a new method, symbolic backward simulation, for detecting bugs in Java bytecode programs. In order to find bugs comprehensively, the method determines conditions on the input side by tracing back from the tail of the program while performing reverse execution for each bytecode. Generally, reverse execution is difficult, especially for instructions of two-input-one-output operations and branches. Our method solves the problem symbolically with essentially fewer simulation cases than numerical testing and forward symbolic analysis. We also show simulation results which detected a branch condition error and a real number processing error.
- Hiranaka Y. and Taketa T., DESIGNING, BACKWARD RANGE SIMULATOR FOR SYSTEM DIAGNOSES, Proc. XX IMEKO World Congress, 2012.Google Scholar
- Hiranaka, Y., Sakaki, H., Ito, K., Taketa, T., and Miura S., Numerical Backward Simulation Model with Case Branching Capability, Proc. 4th International Conference on Simulation and Modeling Methodologies Technologies and Applications (SIMULTECH 2014), pp. 225--230, 2014. Google ScholarDigital Library
- Hiranaka Y., Inafune T., Miura S., Taketa T., Backward range simulation of Java bytecodes and reduction of its processing time, Proc. 8th International Conference on Computer Modeling and Simulation (ICCMS2017), 2017. Google ScholarDigital Library
- Cook, J. J., Reverse Execution of Java Bytecode, The Computer Journal, vol. 45, no. 6, 608--619, 2002.Google ScholarCross Ref
- Biswas, Bitan, et al. Reverse execution of programs, ACM SIGPLAN Notice, vol. 34, Issue 4, 610--69, 1999. Google ScholarDigital Library
- Cadar, Cristian and Engler, Dawson, Execution Generated Test Cases: How to Make Systems Code Crash Itself, Proc.SPIN'05, 2005. Google ScholarDigital Library
- Akgul, T. and Mooney III, V. J., Instruction-level Reverse Execution for Debugging, Technical Report GIT-CC-02-49, 2002.Google Scholar
- Cadar, C. and Sen K., Symbolic Execution for Software Testing: Three Decades Later, Comm. ACM, vol. 56, no. 2, 82--90, 2013. Google ScholarDigital Library
- Godefroid, P. et al., DART: Directed Automated Random Testing, Proc. PLDI'05, 213--223, 2005. Google ScholarDigital Library
- Avgerinos, T., Robert., A., Cha., S.K., Brumley, D., Enhancing Symbolic Execution with Veritesting, Comm. ACM, vol. 59, no. 6, pp. 93--100, 2016. Google ScholarDigital Library
- Roychoudhury, A. and Chandra, S., Formula-Based Software Debugging, Comm. ACM, vol. 59, no. 7, pp. 68--77, 2016. Google ScholarDigital Library
- Lindholm, T. et al., The Java Virtual Machine Specification Java SE 8 Edition, Oracle America, 2015. Google ScholarDigital Library
Index Terms
- Symbolic backward simulation of Java bytecode program
Recommendations
Backward range simulation of Java bytecodes and reduction of its processing time
ICCMS '17: Proceedings of the 8th International Conference on Computer Modeling and SimulationIn this paper we introduce a backward simulation of machine code program and report results of reduction methods of its processing time. It may be efficient to analyze a program by tracing back from the final result for detecting all the bugs caused by ...
Java bytecode verification on Java cards
SAC '04: Proceedings of the 2004 ACM symposium on Applied computingA Java program is usually translated into an intermediate language, known as Java Virtual Machine Language (JVML), which is then executed by a Java Virtual Machine (JVM). Before its execution a JVML program is verified to prevent a wide range of run-...
Symbolic state validation through runtime data
ASE '14: Proceedings of the 29th ACM/IEEE International Conference on Automated Software EngineeringReal world programs are typically built on top of many library functions. Symbolic analysis of these programs generally requires precise models of these functions? Application Programming Interfaces (APIs), which are mostly unavailable because these ...
Comments