When we try to debug or to comprehend a large program, it is important to separate suspicious program portions from the overall source program. Program slicing is a promising technique used to extract a program portion; however, such slicing sometimes raises difficulties. Static slicing sometimes produces a large portion of a source program, especially for programs with array and pointer variables, and dynamic slicing requires unacceptably large run-time overhead. In this paper, we propose a slicing method named “dependence-cache slicing”, which uses both static and dynamic information. An algorithm has been implemented in our experimental slicing system, and execution data for several sample programs have been collected. The results show that dependence-cache slicing reduces a slice size by 30–90% from static slice size with an increased and affordable run-time overhead, even for programs using array variables. In the future, the dependence-cache slicing will become an importa...