  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
\textit{slash}, an automated tool that locates the boundary based on the
identified properties. \textit{slash} 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 \textit{slash} was developed,
\textit{slash} identified the boundary in 85.7\% of a dataset of 21 popular
C/C++ GitHub repositories. Finally, we demonstrate \textit{slash}'s potential
to streamline the boundary-identification process of software-debloating and
error-detection tools.
