- If your @file{.emacs} file sets @code{debug-on-error}, the effect may
-not last past the end of loading @file{.emacs}. (This is an undesirable
-byproduct of the code that implements the @samp{-debug-init} command
-line option.) The best way to make @file{.emacs} set
+@defopt debug-on-signal
+Normally, errors that are caught by @code{condition-case} never run the
+debugger, even if @code{debug-on-error} is non-@code{nil}. In other
+words, @code{condition-case} gets a chance to handle the error before
+the debugger gets a chance.
+
+If you set @code{debug-on-signal} to a non-@code{nil} value, then the
+debugger gets the first chance at every error; an error will invoke the
+debugger regardless of any @code{condition-case}, if it fits the
+criteria specified by the values of @code{debug-on-error} and
+@code{debug-ignored-errors}.
+
+@strong{Warning:} This variable is strong medicine! Various parts of
+Emacs handle errors in the normal course of affairs, and you may not
+even realize that errors happen there. If you set
+@code{debug-on-signal} to a non-@code{nil} value, those errors will
+enter the debugger.
+
+@strong{Warning:} @code{debug-on-signal} has no effect when
+@code{debug-on-error} is @code{nil}.
+@end defopt
+
+ To debug an error that happens during loading of the init
+file, use the option @samp{--debug-init}. This binds
+@code{debug-on-error} to @code{t} while loading the init file, and
+bypasses the @code{condition-case} which normally catches errors in the
+init file.
+
+ If your init file sets @code{debug-on-error}, the effect may
+not last past the end of loading the init file. (This is an undesirable
+byproduct of the code that implements the @samp{--debug-init} command
+line option.) The best way to make the init file set