Commit 4c1f6a5b authored by Chong Yidong's avatar Chong Yidong
Browse files

* doc/emacs/trouble.texi (Crashing): Copyedits.

parent 26f59676
2012-11-08 Chong Yidong <cyd@gnu.org>
* trouble.texi (Crashing): Copyedits.
2012-11-08 Glenn Morris <rgm@gnu.org> 2012-11-08 Glenn Morris <rgm@gnu.org>
* files.texi (Diff Mode): Trailing whitespace updates. * files.texi (Diff Mode): Trailing whitespace updates.
......
...@@ -281,18 +281,19 @@ itself, and the reserve supply may not be enough. ...@@ -281,18 +281,19 @@ itself, and the reserve supply may not be enough.
@node Crashing @node Crashing
@subsection When Emacs Crashes @subsection When Emacs Crashes
Emacs is not supposed to crash, but if it does, before it exits it @cindex crash report
reports a brief summary of the crash to the standard error stream Emacs is not supposed to crash, but if it does, it produces a
@code{stderr}. If enabled, a crashed Emacs also generates a core dump @dfn{crash report} prior to exiting. The crash report is printed to
containing voluminous data about the crash. On many platforms you can the standard error stream. If Emacs was started from a graphical
enable core dumps by putting the shell command @samp{ulimit -c unlimited} desktop, the standard error stream is commonly redirected to a file
into your shell startup script. The crash report and core dump can be such as @file{~/.xsession-errors}, so you can look for the crash
used when debugging the same version of Emacs on the same platform. report there.
The format of the crash report depends on the platform, and some The format of the crash report depends on the platform. On some
platforms support backtraces. platforms, such as those using the GNU C Library, the crash report
Here is an example, generated on x86-64 GNU/Linux with version 2.15 of includes a @dfn{backtrace} describing the execution state prior to
the GNU C Library: crashing, which can be used to help debug the crash. Here is an
example:
@example @example
Fatal error 11: Segmentation fault Fatal error 11: Segmentation fault
...@@ -304,25 +305,18 @@ emacs[0x4ed504] ...@@ -304,25 +305,18 @@ emacs[0x4ed504]
/lib64/libpthread.so.0(read+0xe)[0x375220e08e] /lib64/libpthread.so.0(read+0xe)[0x375220e08e]
emacs[0x509af6] emacs[0x509af6]
emacs[0x5acc26] emacs[0x5acc26]
emacs[0x5adbfb] @dots{}
emacs[0x56566b]
emacs[0x59bac3]
emacs[0x565151]
...
@end example @end example
@noindent @noindent
The number @samp{11} is the system signal number that corresponds to The number @samp{11} is the system signal number corresponding to the
the problem, a segmentation fault here. The three dots at the end crash---in this case a segmentation fault. The hexadecimal numbers
indicate that Emacs suppressed further backtrace entries, in the are program addresses, which can be associated with source code lines
interest of brevity. using a debugging tool. For example, the GDB command
@samp{list *0x509af6} prints the source-code lines corresponding to
The hexadecimal program addresses can be useful in debugging sessions. the @samp{emacs[0x509af6]} entry. If your system has the
For example, the GDB command @samp{list *0x509af6} prints the @command{addr2line} utility, the following shell command outputs a
source-code lines corresponding to the @samp{emacs[0x509af6]} entry in backtrace with source-code line numbers:
the backtrace. Or, if your system has @command{addr2line}, the
following shell command outputs a backtrace with source-code line
numbers:
@example @example
sed -n 's/.*\[\(.*\)]$/\1/p' @var{backtrace} | sed -n 's/.*\[\(.*\)]$/\1/p' @var{backtrace} |
...@@ -334,6 +328,15 @@ Here, @var{backtrace} is the name of a text file containing a copy of ...@@ -334,6 +328,15 @@ Here, @var{backtrace} is the name of a text file containing a copy of
the backtrace, and @var{bindir} is the name of the directory that the backtrace, and @var{bindir} is the name of the directory that
contains the Emacs executable. contains the Emacs executable.
@cindex core dump
Optionally, Emacs can generate a @dfn{core dump} when it crashes. A
core dump is a file containing voluminous data about the state of the
program prior to the crash, usually examined by loading it into a
debugger such as GDB. On many platforms, core dumps are disabled by
default, and you must explicitly enable them by running the shell
command @samp{ulimit -c unlimited} (e.g.@: in your shell startup
script).
@node After a Crash @node After a Crash
@subsection Recovery After a Crash @subsection Recovery After a Crash
......
...@@ -164,6 +164,7 @@ and sorted above the other "available" packages by default. ...@@ -164,6 +164,7 @@ and sorted above the other "available" packages by default.
** `C-x C-q' is now bound to the new minor mode `read-only-mode'. ** `C-x C-q' is now bound to the new minor mode `read-only-mode'.
This minor mode replaces `toggle-read-only', which is now obsolete. This minor mode replaces `toggle-read-only', which is now obsolete.
+++
** Emacs now generates backtraces on fatal errors. ** Emacs now generates backtraces on fatal errors.
On encountering a fatal error, Emacs now outputs a textual description On encountering a fatal error, Emacs now outputs a textual description
of the fatal signal, and a short backtrace on platforms like glibc of the fatal signal, and a short backtrace on platforms like glibc
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment