When one debugs and maintain large software, it is very important to localize the scope of concern to small program portions. Program slicing is a promising technique for identifying portions of interest. There are many research results on the program slicing method. X static slice, which is a collection of program statements possibly affecting a particular variable's value, limits the scope, but the resulting collections are often still large. A dynamic slice, which is a collection of executed program statements affecting a particular variable's value, generally reduces the scope considerably, but its computation is expensive since the execution trace of the program must be recorded. In this paper, we propose a new slicing technique named call-mark slicing that combines static analysis of a program's structure with lightweight dynamic analysis. The data dependences and control dependences among the program statements are statically analyzed beforehand, and procedure/function invocations (calls) are recorded (marked) during execution. From this information, the dynamic dependences of the variables are explored. This call-mark slicing mechanism has been implemented, and the effectiveness of the method has been investigated.
展开▼