aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2001-02-04 07:29:18 +0000
committerEli Zaretskii2001-02-04 07:29:18 +0000
commit878c3c90d7b193746c849982ab132bd9b5bfdf48 (patch)
tree1a6fb0b8fc1080c0aef8c2e6c7b0226c8b23fe03
parent350d71b30e7121e8a97a2a62669cd54a73b500c7 (diff)
downloademacs-878c3c90d7b193746c849982ab132bd9b5bfdf48.tar.gz
emacs-878c3c90d7b193746c849982ab132bd9b5bfdf48.zip
Remove the more arcane part of Emacs debug instructions. Replace
them with a reference to etc/DEBUG.
-rw-r--r--man/trouble.texi62
1 files changed, 12 insertions, 50 deletions
diff --git a/man/trouble.texi b/man/trouble.texi
index feff8c19412..f6ec5f38d6b 100644
--- a/man/trouble.texi
+++ b/man/trouble.texi
@@ -718,30 +718,6 @@ To make Lisp errors stop Emacs and return to GDB, put a breakpoint at
718For a short listing of Lisp functions running, type the GDB 718For a short listing of Lisp functions running, type the GDB
719command @code{xbacktrace}. 719command @code{xbacktrace}.
720 720
721If you want to examine Lisp function arguments, move up the stack, and
722each time you get to a frame for the function @code{Ffuncall}, type
723these GDB commands:
724
725@example
726p *args
727pr
728@end example
729
730@noindent
731To print the first argument that the function received, use these
732commands:
733
734@example
735p args[1]
736pr
737@end example
738
739@noindent
740You can print the other arguments likewise. The argument @code{nargs}
741of @code{Ffuncall} says how many arguments @code{Ffuncall} received;
742these include the Lisp function itself and the arguments for that
743function.
744
745The file @file{.gdbinit} defines several other commands that are useful 721The file @file{.gdbinit} defines several other commands that are useful
746for examining the data types and contents of Lisp objects. Their names 722for examining the data types and contents of Lisp objects. Their names
747begin with @samp{x}. These commands work at a lower level than 723begin with @samp{x}. These commands work at a lower level than
@@ -749,32 +725,18 @@ begin with @samp{x}. These commands work at a lower level than
749@code{pr} does not, such as when debugging a core dump or when Emacs has 725@code{pr} does not, such as when debugging a core dump or when Emacs has
750had a fatal signal. 726had a fatal signal.
751 727
752@item 728@cindex debugging Emacs, tricks and techniques
753If the symptom of the bug is that Emacs fails to respond, don't assume 729More detailed advice and other useful techniques for debugging Emacs
754Emacs is ``hung''---it may instead be in an infinite loop. To find out 730are available in the file @file{etc/DEBUG} in the Emacs distribution.
755which, make the problem happen under GDB and stop Emacs once it is not 731That file also includes instructions for investigating problems
756responding. (If Emacs is using X directly, you can stop Emacs by typing 732whereby Emacs stops responding (many people assume that Emacs is
757@kbd{C-z} at the GDB job.) Then try stepping with @samp{step}. If 733``hung'', whereas in fact it might be in an infinite loop).
758Emacs is hung, the @samp{step} command won't return. If it is looping, 734
759@samp{step} will return. 735In an installed Emacs, the file @file{etc/DEBUG} is in the same
760 736directory where the Emacs on-line documentation file @file{DOC},
761If this shows Emacs is hung in a system call, stop it again and examine 737typically in the @file{/usr/local/share/emacs/@var{version}/etc/}
762the arguments of the call. In your bug report, state exactly where in 738directory. The directory for your installation is stored in the
763the source the system call is, and what the arguments are. 739variable @code{data-directory}.
764
765If Emacs is in an infinite loop, please determine where the loop starts
766and ends. The easiest way to do this is to use the GDB command
767@samp{finish}. Each time you use it, Emacs resumes execution until it
768exits one stack frame. Keep typing @samp{finish} until it doesn't
769return---that means the infinite loop is in the stack frame which you
770just tried to finish.
771
772Stop Emacs again, and use @samp{finish} repeatedly again until you get
773@emph{back to} that frame. Then use @samp{next} to step through that
774frame. By stepping, you will see where the loop starts and ends. Also
775please examine the data being used in the loop and try to determine why
776the loop does not exit when it should. Include all of this information
777in your bug report.
778@end itemize 740@end itemize
779 741
780Here are some things that are not necessary in a bug report: 742Here are some things that are not necessary in a bug report: