Researchers have recently devised tools for debloating software and detecting configuration errors. Several of these tools rely on the observation that programs are composed of an initialization phase followed by a main-computation phase. Users of these tools are required to manually annotate the boundary that separates these phases, a task that can be time-consuming and error-prone (typically, the user has to read and understand the source code or trace executions with a debugger). Because errors can impair the tool’s accuracy and functionality, the manual-annotation requirement hinders the ability to apply the tools on a large scale. In this paper, we present a field study of 24 widely-used C/C++ programs, identifying common boundary properties in 96% of them. We then introduce , an automated tool that locates the boundary based on the identified properties. successfully identifies the boundary in 87.5% of the studied programs within 8.5\ minutes, using up to 4.4\ GB memory. In an independent test, carried out after was developed, identified the boundary in 85.7% of a dataset of 21 popular C/C++ GitHub repositories. Finally, we demonstrate 's potential to streamline the boundary-identification process of software-debloating and error-detection tools.

生成讲解博客的中文版本

生成AI智能校验的中文版本