diff options
| author | Eli Zaretskii | 2001-02-04 07:29:18 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2001-02-04 07:29:18 +0000 |
| commit | 878c3c90d7b193746c849982ab132bd9b5bfdf48 (patch) | |
| tree | 1a6fb0b8fc1080c0aef8c2e6c7b0226c8b23fe03 | |
| parent | 350d71b30e7121e8a97a2a62669cd54a73b500c7 (diff) | |
| download | emacs-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.texi | 62 |
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 | |||
| 718 | For a short listing of Lisp functions running, type the GDB | 718 | For a short listing of Lisp functions running, type the GDB |
| 719 | command @code{xbacktrace}. | 719 | command @code{xbacktrace}. |
| 720 | 720 | ||
| 721 | If you want to examine Lisp function arguments, move up the stack, and | ||
| 722 | each time you get to a frame for the function @code{Ffuncall}, type | ||
| 723 | these GDB commands: | ||
| 724 | |||
| 725 | @example | ||
| 726 | p *args | ||
| 727 | pr | ||
| 728 | @end example | ||
| 729 | |||
| 730 | @noindent | ||
| 731 | To print the first argument that the function received, use these | ||
| 732 | commands: | ||
| 733 | |||
| 734 | @example | ||
| 735 | p args[1] | ||
| 736 | pr | ||
| 737 | @end example | ||
| 738 | |||
| 739 | @noindent | ||
| 740 | You can print the other arguments likewise. The argument @code{nargs} | ||
| 741 | of @code{Ffuncall} says how many arguments @code{Ffuncall} received; | ||
| 742 | these include the Lisp function itself and the arguments for that | ||
| 743 | function. | ||
| 744 | |||
| 745 | The file @file{.gdbinit} defines several other commands that are useful | 721 | The file @file{.gdbinit} defines several other commands that are useful |
| 746 | for examining the data types and contents of Lisp objects. Their names | 722 | for examining the data types and contents of Lisp objects. Their names |
| 747 | begin with @samp{x}. These commands work at a lower level than | 723 | begin 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 |
| 750 | had a fatal signal. | 726 | had a fatal signal. |
| 751 | 727 | ||
| 752 | @item | 728 | @cindex debugging Emacs, tricks and techniques |
| 753 | If the symptom of the bug is that Emacs fails to respond, don't assume | 729 | More detailed advice and other useful techniques for debugging Emacs |
| 754 | Emacs is ``hung''---it may instead be in an infinite loop. To find out | 730 | are available in the file @file{etc/DEBUG} in the Emacs distribution. |
| 755 | which, make the problem happen under GDB and stop Emacs once it is not | 731 | That file also includes instructions for investigating problems |
| 756 | responding. (If Emacs is using X directly, you can stop Emacs by typing | 732 | whereby 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). |
| 758 | Emacs is hung, the @samp{step} command won't return. If it is looping, | 734 | |
| 759 | @samp{step} will return. | 735 | In an installed Emacs, the file @file{etc/DEBUG} is in the same |
| 760 | 736 | directory where the Emacs on-line documentation file @file{DOC}, | |
| 761 | If this shows Emacs is hung in a system call, stop it again and examine | 737 | typically in the @file{/usr/local/share/emacs/@var{version}/etc/} |
| 762 | the arguments of the call. In your bug report, state exactly where in | 738 | directory. The directory for your installation is stored in the |
| 763 | the source the system call is, and what the arguments are. | 739 | variable @code{data-directory}. |
| 764 | |||
| 765 | If Emacs is in an infinite loop, please determine where the loop starts | ||
| 766 | and 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 | ||
| 768 | exits one stack frame. Keep typing @samp{finish} until it doesn't | ||
| 769 | return---that means the infinite loop is in the stack frame which you | ||
| 770 | just tried to finish. | ||
| 771 | |||
| 772 | Stop 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 | ||
| 774 | frame. By stepping, you will see where the loop starts and ends. Also | ||
| 775 | please examine the data being used in the loop and try to determine why | ||
| 776 | the loop does not exit when it should. Include all of this information | ||
| 777 | in your bug report. | ||
| 778 | @end itemize | 740 | @end itemize |
| 779 | 741 | ||
| 780 | Here are some things that are not necessary in a bug report: | 742 | Here are some things that are not necessary in a bug report: |