blob: e3438815ebabdf2d30646fcd07f8c4adac6ecaaa [file] [log] [blame]
% File src/library/base/man/debugcall.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2016 R Core Team
% Distributed under GPL 2 or later
\name{debugcall}
\title{Debug a Call}
\alias{debugcall}
\alias{undebugcall}
\usage{
debugcall(call, once = FALSE)
undebugcall(call)
}
\arguments{
\item{call}{An R expression calling a function. The called function
will be debugged. See Details.}
\item{once}{logical; if \code{TRUE}, debugging only occurs once, as via
\code{debugonce}. Defaults to \code{FALSE}}
}
\description{
Set or unset debugging flags based on a call to a function. Takes into
account S3/S4 method dispatch based on the classes of the arguments in
the call.
}
\details{
\code{debugcall} debugs the non-generic function, S3 method or S4
method that would be called by evaluating \code{call}. Thus, the user
does not need to specify the signature when debugging
methods. Although the call is actually to the generic, it is the
method that is debugged, not the generic, except for non-standard S3
generics (see \code{\link{isS3stdGeneric}}).
}
\value{
\code{debugcall} invisibly returns the debugged call expression.
}
\note{
Non-standard evaluation is used to retrieve the \code{call} (via
\code{\link{substitute}}). For this reason, passing a variable
containing a call expression, rather than the call expression itself,
will not work.
}
\seealso{
\code{\link{debug}} for the primary debugging interface
}
\examples{
\dontrun{
## Evaluate call after setting debugging
##
f <- factor(1:10)
res <- eval(debugcall(summary(f)))
}
}
\keyword{programming}
\keyword{environment}
\keyword{utilities}