X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/acaf905b1130aae80fa59d2c861ffd4c8eb75486..refs/heads/wip:/etc/DEBUG diff --git a/etc/DEBUG b/etc/DEBUG index 20bdd6cdbd..c1b04eaf7f 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -1,6 +1,6 @@ Debugging GNU Emacs -Copyright (C) 1985, 2000-2012 Free Software Foundation, Inc. +Copyright (C) 1985, 2000-2014 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -8,17 +8,30 @@ See the end of the file for license conditions. read the Windows-specific section near the end of this document.] ** When you debug Emacs with GDB, you should start it in the directory -where the executable was made. That directory has a .gdbinit file -that defines various "user-defined" commands for debugging Emacs. -(These commands are described below under "Examining Lisp object -values" and "Debugging Emacs Redisplay problems".) - -** When you are trying to analyze failed assertions, it will be -essential to compile Emacs either completely without optimizations or -at least (when using GCC) with the -fno-crossjumping option. Failure -to do so may make the compiler recycle the same abort call for all -assertions in a given function, rendering the stack backtrace useless -for identifying the specific failed assertion. +where the executable was made (the 'src' directory in the Emacs source +tree). That directory has a .gdbinit file that defines various +"user-defined" commands for debugging Emacs. (These commands are +described below under "Examining Lisp object values" and "Debugging +Emacs Redisplay problems".) + +Some GDB versions by default do not automatically load .gdbinit files +in the directory where you invoke GDB. With those versions of GDB, +you will see a warning when GDB starts, like this: + + warning: File ".../src/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load". + +There are several ways to overcome that difficulty, they are all +described in the node "Auto-loading safe path" in the GDB user manual. + +** When you are trying to analyze failed assertions or backtraces, it +is essential to compile Emacs with flags suitable for debugging. +With GCC 4.8 or later, you can invoke 'make' with CFLAGS="-Og -g3". +With older GCC or non-GCC compilers, you can use CFLAGS="-O0 -g3". +With GCC and higher optimization levels such as -O2, the +-fno-omit-frame-pointer and -fno-crossjumping options are often +essential. The latter prevents GCC from using the same abort call for +all assertions in a given function, rendering the stack backtrace +useless for identifying the specific failed assertion. ** It is a good idea to run Emacs under GDB (or some other suitable debugger) *all the time*. Then, when Emacs crashes, you will be able @@ -758,4 +771,3 @@ Local variables: mode: outline paragraph-separate: "[ ]*$" end: -