| README for GDB release | |
| This is GDB, the GNU source-level debugger. | |
| A summary of new features is in the file `gdb/NEWS'. | |
| Check the GDB home page at http://www.gnu.org/software/gdb/ for up to | |
| date release information, mailing list links and archives, etc. | |
| GDB's bug tracking data base can be found at | |
| http://www.gnu.org/software/gdb/bugs/ | |
| Unpacking and Installation -- quick overview | |
| ========================== | |
| The release is provided as a gzipped tar file called | |
| 'gdb-VERSION.tar.gz', where VERSION is the version of GDB. | |
| The GDB debugger sources, the generic GNU include | |
| files, the BFD ("binary file description") library, the readline | |
| library, and other libraries all have directories of their own | |
| underneath the gdb-VERSION directory. The idea is that a variety of GNU | |
| tools can share a common copy of these things. Be aware of variation | |
| over time--for example don't try to build GDB with a copy of bfd from | |
| a release other than the GDB release (such as a binutils release), | |
| especially if the releases are more than a few weeks apart. | |
| Configuration scripts and makefiles exist to cruise up and down this | |
| directory tree and automatically build all the pieces in the right | |
| order. | |
| When you unpack the gdb-VERSION.tar.gz file, it will create a | |
| source directory called `gdb-VERSION'. | |
| You can build GDB right in the source directory: | |
| cd gdb-VERSION | |
| ./configure --prefix=/usr/local (or wherever you want) | |
| make all install | |
| However, we recommend that an empty directory be used instead. | |
| This way you do not clutter your source tree with binary files | |
| and will be able to create different builds with different | |
| configuration options. | |
| You can build GDB in any empty build directory: | |
| mkdir build | |
| cd build | |
| <full path to your sources>/gdb-VERSION/configure [etc...] | |
| make all install | |
| (Building GDB with DJGPP tools for MS-DOS/MS-Windows is slightly | |
| different; see the file gdb-VERSION/gdb/config/djgpp/README for details.) | |
| This will configure and build all the libraries as well as GDB. If | |
| `configure' can't determine your system type, specify one as its | |
| argument, e.g., `./configure sun4' or `./configure decstation'. | |
| Make sure that your 'configure' line ends in 'gdb-VERSION/configure': | |
| /berman/migchain/source/gdb-VERSION/configure # RIGHT | |
| /berman/migchain/source/gdb-VERSION/gdb/configure # WRONG | |
| The GDB package contains several subdirectories, such as 'gdb', | |
| 'bfd', and 'readline'. If your 'configure' line ends in | |
| 'gdb-VERSION/gdb/configure', then you are configuring only the gdb | |
| subdirectory, not the whole GDB package. This leads to build errors | |
| such as: | |
| make: *** No rule to make target `../bfd/bfd.h', needed by `gdb.o'. Stop. | |
| If you get other compiler errors during this stage, see the `Reporting | |
| Bugs' section below; there are a few known problems. | |
| GDB's `configure' script has many options to enable or disable | |
| different features or dependencies. These options are not generally | |
| known to the top-level `configure', so if you want to see a complete | |
| list of options, invoke the subdirectory `configure', like: | |
| /berman/migchain/source/gdb-VERSION/gdb/configure --help | |
| (Take note of how this differs from the invocation used to actually | |
| configure the build tree.) | |
| GDB requires a C++11 compiler. If you do not have a | |
| C++11 compiler for your system, you may be able to download and install | |
| the GNU CC compiler. It is available via anonymous FTP from the | |
| directory `ftp://ftp.gnu.org/pub/gnu/gcc'. GDB also requires an ISO | |
| C standard library. The GDB remote server, GDBserver, builds with some | |
| non-ISO standard libraries - e.g. for Windows CE. | |
| GDB can optionally be built against various external libraries. | |
| These dependencies are described below in the "`configure options" | |
| section of this README. | |
| GDB can be used as a cross-debugger, running on a machine of one | |
| type while debugging a program running on a machine of another type. | |
| See below. | |
| More Documentation | |
| ****************** | |
| All the documentation for GDB comes as part of the machine-readable | |
| distribution. The documentation is written in Texinfo format, which | |
| is a documentation system that uses a single source file to produce | |
| both on-line information and a printed manual. You can use one of the | |
| Info formatting commands to create the on-line version of the | |
| documentation and TeX (or `texi2roff') to typeset the printed version. | |
| GDB includes an already formatted copy of the on-line Info version | |
| of this manual in the `gdb/doc' subdirectory. The main Info file is | |
| `gdb-VERSION/gdb/doc/gdb.info', and it refers to subordinate files | |
| matching `gdb.info*' in the same directory. If necessary, you can | |
| print out these files, or read them with any editor; but they are | |
| easier to read using the `info' subsystem in GNU Emacs or the | |
| standalone `info' program, available as part of the GNU Texinfo | |
| distribution. | |
| If you want to format these Info files yourself, you need one of the | |
| Info formatting programs, such as `texinfo-format-buffer' or | |
| `makeinfo'. | |
| If you have `makeinfo' installed, and are in the top level GDB | |
| source directory (`gdb-VERSION'), you can make the Info file by | |
| typing: | |
| cd gdb/doc | |
| make info | |
| If you want to typeset and print copies of this manual, you need | |
| TeX, a program to print its DVI output files, and `texinfo.tex', the | |
| Texinfo definitions file. This file is included in the GDB | |
| distribution, in the directory `gdb-VERSION/texinfo'. | |
| TeX is a typesetting program; it does not print files directly, but | |
| produces output files called DVI files. To print a typeset document, | |
| you need a program to print DVI files. If your system has TeX | |
| installed, chances are it has such a program. The precise command to | |
| use depends on your system; `lpr -d' is common; another (for PostScript | |
| devices) is `dvips'. The DVI print command may require a file name | |
| without any extension or a `.dvi' extension. | |
| TeX also requires a macro definitions file called `texinfo.tex'. | |
| This file tells TeX how to typeset a document written in Texinfo | |
| format. On its own, TeX cannot read, much less typeset a Texinfo file. | |
| `texinfo.tex' is distributed with GDB and is located in the | |
| `gdb-VERSION/texinfo' directory. | |
| If you have TeX and a DVI printer program installed, you can typeset | |
| and print this manual. First switch to the `gdb' subdirectory of | |
| the main source directory (for example, to `gdb-VERSION/gdb') and then type: | |
| make doc/gdb.dvi | |
| If you prefer to have the manual in PDF format, type this from the | |
| `gdb/doc' subdirectory of the main source directory: | |
| make gdb.pdf | |
| For this to work, you will need the PDFTeX package to be installed. | |
| Installing GDB | |
| ************** | |
| GDB comes with a `configure' script that automates the process of | |
| preparing GDB for installation; you can then use `make' to build the | |
| `gdb' program. | |
| The GDB distribution includes all the source code you need for GDB in | |
| a single directory. That directory contains: | |
| `gdb-VERSION/{COPYING,COPYING.LIB}' | |
| Standard GNU license files. Please read them. | |
| `gdb-VERSION/bfd' | |
| source for the Binary File Descriptor library | |
| `gdb-VERSION/config*' | |
| script for configuring GDB, along with other support files | |
| `gdb-VERSION/gdb' | |
| the source specific to GDB itself | |
| `gdb-VERSION/include' | |
| GNU include files | |
| `gdb-VERSION/libiberty' | |
| source for the `-liberty' free software library | |
| `gdb-VERSION/opcodes' | |
| source for the library of opcode tables and disassemblers | |
| `gdb-VERSION/readline' | |
| source for the GNU command-line interface | |
| NOTE: The readline library is compiled for use by GDB, but will | |
| not be installed on your system when "make install" is issued. | |
| `gdb-VERSION/sim' | |
| source for some simulators (ARM, D10V, SPARC, M32R, MIPS, PPC, V850, etc) | |
| `gdb-VERSION/texinfo' | |
| The `texinfo.tex' file, which you need in order to make a printed | |
| manual using TeX. | |
| `gdb-VERSION/etc' | |
| Coding standards, useful files for editing GDB, and other | |
| miscellanea. | |
| Note: the following instructions are for building GDB on Unix or | |
| Unix-like systems. Instructions for building with DJGPP for | |
| MS-DOS/MS-Windows are in the file gdb/config/djgpp/README. | |
| The simplest way to configure and build GDB is to run `configure' | |
| from the `gdb-VERSION' directory. | |
| First switch to the `gdb-VERSION' source directory if you are | |
| not already in it; then run `configure'. | |
| For example: | |
| cd gdb-VERSION | |
| ./configure | |
| make | |
| Running `configure' followed by `make' builds the `bfd', | |
| `readline', `mmalloc', and `libiberty' libraries, then `gdb' itself. | |
| The configured source files, and the binaries, are left in the | |
| corresponding source directories. | |
| `configure' is a Bourne-shell (`/bin/sh') script; if your system | |
| does not recognize this automatically when you run a different shell, | |
| you may need to run `sh' on it explicitly: | |
| sh configure | |
| If you run `configure' from a directory that contains source | |
| directories for multiple libraries or programs, `configure' creates | |
| configuration files for every directory level underneath (unless | |
| you tell it not to, with the `--norecursion' option). | |
| You can install `gdb' anywhere; it has no hardwired paths. However, | |
| you should make sure that the shell on your path (named by the `SHELL' | |
| environment variable) is publicly readable. Remember that GDB uses the | |
| shell to start your program--some systems refuse to let GDB debug child | |
| processes whose programs are not readable. | |
| Compiling GDB in another directory | |
| ================================== | |
| If you want to run GDB versions for several host or target machines, | |
| you need a different `gdb' compiled for each combination of host and | |
| target. `configure' is designed to make this easy by allowing you to | |
| generate each configuration in a separate subdirectory, rather than in | |
| the source directory. If your `make' program handles the `VPATH' | |
| feature correctly (GNU `make' and SunOS 'make' are two that should), | |
| running `make' in each of these directories builds the `gdb' program | |
| specified there. | |
| To build `gdb' in a separate directory, run `configure' with the | |
| `--srcdir' option to specify where to find the source. (You also need | |
| to specify a path to find `configure' itself from your working | |
| directory. If the path to `configure' would be the same as the | |
| argument to `--srcdir', you can leave out the `--srcdir' option; it | |
| will be assumed.) | |
| For example, you can build GDB in a separate | |
| directory for a Sun 4 like this: | |
| cd gdb-VERSION | |
| mkdir ../gdb-sun4 | |
| cd ../gdb-sun4 | |
| ../gdb-VERSION/configure | |
| make | |
| When `configure' builds a configuration using a remote source | |
| directory, it creates a tree for the binaries with the same structure | |
| (and using the same names) as the tree under the source directory. In | |
| the example, you'd find the Sun 4 library `libiberty.a' in the | |
| directory `gdb-sun4/libiberty', and GDB itself in `gdb-sun4/gdb'. | |
| One popular reason to build several GDB configurations in separate | |
| directories is to configure GDB for cross-compiling (where GDB runs on | |
| one machine--the host--while debugging programs that run on another | |
| machine--the target). You specify a cross-debugging target by giving | |
| the `--target=TARGET' option to `configure'. | |
| When you run `make' to build a program or library, you must run it | |
| in a configured directory--whatever directory you were in when you | |
| called `configure' (or one of its subdirectories). | |
| The `Makefile' that `configure' generates in each source directory | |
| also runs recursively. If you type `make' in a source directory such | |
| as `gdb-VERSION' (or in a separate configured directory configured with | |
| `--srcdir=PATH/gdb-VERSION'), you will build all the required libraries, | |
| and then build GDB. | |
| When you have multiple hosts or targets configured in separate | |
| directories, you can run `make' on them in parallel (for example, if | |
| they are NFS-mounted on each of the hosts); they will not interfere | |
| with each other. | |
| Specifying names for hosts and targets | |
| ====================================== | |
| The specifications used for hosts and targets in the `configure' | |
| script are based on a three-part naming scheme, but some short | |
| predefined aliases are also supported. The full naming scheme encodes | |
| three pieces of information in the following pattern: | |
| ARCHITECTURE-VENDOR-OS | |
| For example, you can use the alias `sun4' as a HOST argument or in a | |
| `--target=TARGET' option. The equivalent full name is | |
| `sparc-sun-sunos4'. | |
| The `configure' script accompanying GDB does not provide any query | |
| facility to list all supported host and target names or aliases. | |
| `configure' calls the Bourne shell script `config.sub' to map | |
| abbreviations to full names; you can read the script, if you wish, or | |
| you can use it to test your guesses on abbreviations--for example: | |
| % sh config.sub sun4 | |
| sparc-sun-sunos4.1.1 | |
| % sh config.sub sun3 | |
| m68k-sun-sunos4.1.1 | |
| % sh config.sub decstation | |
| mips-dec-ultrix4.2 | |
| % sh config.sub hp300bsd | |
| m68k-hp-bsd | |
| % sh config.sub i386v | |
| i386-pc-sysv | |
| % sh config.sub i786v | |
| Invalid configuration `i786v': machine `i786v' not recognized | |
| `config.sub' is also distributed in the GDB source directory. | |
| `configure' options | |
| =================== | |
| Here is a summary of the `configure' options and arguments that are | |
| most often useful for building GDB. `configure' also has several other | |
| options not listed here. There are many options to gdb's `configure' | |
| script, some of which are only useful in special situation. | |
| *note : (autoconf.info)Running configure scripts, for a full | |
| explanation of `configure'. | |
| configure [--help] | |
| [--prefix=DIR] | |
| [--srcdir=PATH] | |
| [--target=TARGET] | |
| [--host=HOST] | |
| [HOST] | |
| You may introduce options with a single `-' rather than `--' if you | |
| prefer; but you may abbreviate option names if you use `--'. Some | |
| more obscure GDB `configure' options are not listed here. | |
| `--help' | |
| Display a quick summary of how to invoke `configure'. | |
| `-prefix=DIR' | |
| Configure the source to install programs and files under directory | |
| `DIR'. | |
| `--srcdir=PATH' | |
| *Warning: using this option requires GNU `make', or another `make' | |
| that compatibly implements the `VPATH' feature.* | |
| Use this option to make configurations in directories separate | |
| from the GDB source directories. Among other things, you can use | |
| this to build (or maintain) several configurations simultaneously, | |
| in separate directories. `configure' writes configuration | |
| specific files in the current directory, but arranges for them to | |
| use the source in the directory PATH. `configure' will create | |
| directories under the working directory in parallel to the source | |
| directories below PATH. | |
| `--host=HOST' | |
| Configure GDB to run on the specified HOST. | |
| There is no convenient way to generate a list of all available | |
| hosts. | |
| `HOST ...' | |
| Same as `--host=HOST'. If you omit this, GDB will guess; it's | |
| quite accurate. | |
| `--target=TARGET' | |
| Configure GDB for cross-debugging programs running on the specified | |
| TARGET. Without this option, GDB is configured to debug programs | |
| that run on the same machine (HOST) as GDB itself. | |
| There is no convenient way to generate a list of all available | |
| targets. | |
| `--enable-targets=TARGET,TARGET,...' | |
| `--enable-targets=all` | |
| Configure GDB for cross-debugging programs running on the | |
| specified list of targets. The special value `all' configures | |
| GDB for debugging programs running on any target it supports. | |
| `--with-gdb-datadir=PATH' | |
| Set the GDB-specific data directory. GDB will look here for | |
| certain supporting files or scripts. This defaults to the `gdb' | |
| subdirectory of `datadir' (which can be set using `--datadir'). | |
| `--with-relocated-sources=DIR' | |
| Sets up the default source path substitution rule so that | |
| directory names recorded in debug information will be | |
| automatically adjusted for any directory under DIR. DIR should | |
| be a subdirectory of GDB's configured prefix, the one mentioned | |
| in the `--prefix' or `--exec-prefix' options to configure. This | |
| option is useful if GDB is supposed to be moved to a different | |
| place after it is built. | |
| `--enable-64-bit-bfd' | |
| Enable 64-bit support in BFD on 32-bit hosts. | |
| `--disable-gdbmi' | |
| Build GDB without the GDB/MI machine interface. | |
| `--enable-tui' | |
| Build GDB with the text-mode full-screen user interface (TUI). | |
| Requires a curses library (ncurses and cursesX are also | |
| supported). | |
| `--with-curses' | |
| Use the curses library instead of the termcap library, for | |
| text-mode terminal operations. | |
| `--with-debuginfod' | |
| Build GDB with libdebuginfod, the debuginfod client library. Used | |
| to automatically fetch source files and separate debug files from | |
| debuginfod servers using the associated executable's build ID. | |
| Enabled by default if libdebuginfod is installed and found at | |
| configure time. debuginfod is packaged with elfutils, starting | |
| with version 0.178. You can get the latest version from | |
| 'https://sourceware.org/elfutils/'. | |
| `--with-libunwind-ia64' | |
| Use the libunwind library for unwinding function call stack on ia64 | |
| target platforms. | |
| See http://www.nongnu.org/libunwind/index.html for details. | |
| `--with-system-readline' | |
| Use the readline library installed on the host, rather than the | |
| library supplied as part of GDB. Readline 7 or newer is required; | |
| this is enforced by the build system. | |
| `--with-system-zlib | |
| Use the zlib library installed on the host, rather than the | |
| library supplied as part of GDB. | |
| `--with-expat' | |
| Build GDB with Expat, a library for XML parsing. (Done by | |
| default if libexpat is installed and found at configure time.) | |
| This library is used to read XML files supplied with GDB. If it | |
| is unavailable, some features, such as remote protocol memory | |
| maps, target descriptions, and shared library lists, that are | |
| based on XML files, will not be available in GDB. If your host | |
| does not have libexpat installed, you can get the latest version | |
| from `http://expat.sourceforge.net'. | |
| `--with-libiconv-prefix[=DIR]' | |
| Build GDB with GNU libiconv, a character set encoding conversion | |
| library. This is not done by default, as on GNU systems the | |
| `iconv' that is built in to the C library is sufficient. If your | |
| host does not have a working `iconv', you can get the latest | |
| version of GNU iconv from `https://www.gnu.org/software/libiconv/'. | |
| GDB's build system also supports building GNU libiconv as part of | |
| the overall build. See the GDB manual instructions on how to do | |
| this. | |
| `--with-lzma' | |
| Build GDB with LZMA, a compression library. (Done by default if | |
| liblzma is installed and found at configure time.) LZMA is used | |
| by GDB's "mini debuginfo" feature, which is only useful on | |
| platforms using the ELF object file format. If your host does | |
| not have liblzma installed, you can get the latest version from | |
| `https://tukaani.org/xz/'. | |
| `--with-libgmp-prefix=DIR' | |
| Build GDB using the GMP library installed at the directory DIR. | |
| If your host does not have GMP installed, you can get the latest | |
| version at `https://gmplib.org/'. | |
| `--with-mpfr' | |
| Build GDB with GNU MPFR, a library for multiple-precision | |
| floating-point computation with correct rounding. (Done by | |
| default if GNU MPFR is installed and found at configure time.) | |
| This library is used to emulate target floating-point arithmetic | |
| during expression evaluation when the target uses different | |
| floating-point formats than the host. If GNU MPFR is not | |
| available, GDB will fall back to using host floating-point | |
| arithmetic. If your host does not have GNU MPFR installed, you | |
| can get the latest version from `https://www.mpfr.org/'. | |
| `--with-python[=PYTHON]' | |
| Build GDB with Python scripting support. (Done by default if | |
| libpython is present and found at configure time.) Python makes | |
| GDB scripting much more powerful than the restricted CLI | |
| scripting language. If your host does not have Python installed, | |
| you can find it on `http://www.python.org/download/'. The oldest | |
| version of Python supported by GDB is 2.6. The optional argument | |
| PYTHON is used to find the Python headers and libraries. It can | |
| be either the name of a Python executable, or the name of the | |
| directory in which Python is installed. | |
| `--with-guile[=GUILE]' | |
| Build GDB with GNU Guile scripting support. (Done by default if | |
| libguile is present and found at configure time.) If your host | |
| does not have Guile installed, you can find it at | |
| `https://www.gnu.org/software/guile/'. The optional argument | |
| GUILE can be a version number, which will cause `configure' to | |
| try to use that version of Guile; or the file name of a | |
| `pkg-config' executable, which will be queried to find the | |
| information needed to compile and link against Guile. | |
| `--enable-source-highlight' | |
| When printing source code, use source highlighting. This requires | |
| libsource-highlight to be installed and is enabled by default | |
| if the library is found. | |
| `--with-xxhash' | |
| Use libxxhash for hashing. This has no user-visible effect but | |
| speeds up various GDB operations such as symbol loading. Enabled | |
| by default if libxxhash is found. | |
| `--without-included-regex' | |
| Don't use the regex library included with GDB (as part of the | |
| libiberty library). This is the default on hosts with version 2 | |
| of the GNU C library. | |
| `--with-sysroot=DIR' | |
| Use DIR as the default system root directory for libraries whose | |
| file names begin with `/lib' or `/usr/lib'. (The value of DIR | |
| can be modified at run time by using the "set sysroot" command.) | |
| If DIR is under the GDB configured prefix (set with `--prefix' or | |
| `--exec-prefix' options), the default system root will be | |
| automatically adjusted if and when GDB is moved to a different | |
| location. | |
| `--with-system-gdbinit=FILE' | |
| Configure GDB to automatically load a system-wide init file. | |
| FILE should be an absolute file name. If FILE is in a directory | |
| under the configured prefix, and GDB is moved to another location | |
| after being built, the location of the system-wide init file will | |
| be adjusted accordingly. | |
| `--with-system-gdbinit-dir=DIR' | |
| Configure GDB to automatically load system-wide init files from | |
| a directory. Files with extensions `.gdb', `.py' (if Python | |
| support is enabled) and `.scm' (if Guile support is enabled) are | |
| supported. DIR should be an absolute directory name. If DIR is | |
| in a directory under the configured prefix, and GDB is moved to | |
| another location after being built, the location of the system- | |
| wide init directory will be adjusted accordingly. | |
| `--enable-build-warnings' | |
| When building the GDB sources, ask the compiler to warn about any | |
| code which looks even vaguely suspicious. It passes many | |
| different warning flags, depending on the exact version of the | |
| compiler you are using. | |
| `--enable-werror' | |
| Treat compiler warnings as werrors. It adds the -Werror flag to | |
| the compiler, which will fail the compilation if the compiler | |
| outputs any warning messages. | |
| `--enable-ubsan' | |
| Enable the GCC undefined behavior sanitizer. By default this is | |
| disabled in GDB releases, but enabled when building from git. | |
| The undefined behavior sanitizer checks for C++ undefined | |
| behavior. It has a performance cost, so if you are looking at | |
| GDB's performance, you should disable it. | |
| `--enable-unit-tests[=yes|no]' | |
| Enable (i.e., include) support for unit tests when compiling GDB | |
| and GDBServer. Note that if this option is not passed, GDB will | |
| have selftests if it is a development build, and will *not* have | |
| selftests if it is a non-development build. | |
| `configure' accepts other options, for compatibility with configuring | |
| other GNU tools recursively. | |
| Remote debugging | |
| ================= | |
| The files m68k-stub.c, i386-stub.c, and sparc-stub.c are examples | |
| of remote stubs to be used with remote.c. They are designed to run | |
| standalone on an m68k, i386, or SPARC cpu and communicate properly | |
| with the remote.c stub over a serial line. | |
| The directory gdbserver/ contains `gdbserver', a program that | |
| allows remote debugging for Unix applications. GDBserver is only | |
| supported for some native configurations. | |
| The file gdbserver/README includes further notes on GDBserver; in | |
| particular, it explains how to build GDBserver for cross-debugging | |
| (where GDBserver runs on the target machine, which is of a different | |
| architecture than the host machine running GDB). | |
| Reporting Bugs in GDB | |
| ===================== | |
| There are several ways of reporting bugs in GDB. The prefered | |
| method is to use the World Wide Web: | |
| http://www.gnu.org/software/gdb/bugs/ | |
| As an alternative, the bug report can be submitted, via e-mail, to the | |
| address "bug-gdb@gnu.org". | |
| When submitting a bug, please include the GDB version number, and | |
| how you configured it (e.g., "sun4" or "mach386 host, | |
| i586-intel-synopsys target"). Since GDB supports so many | |
| different configurations, it is important that you be precise about | |
| this. The simplest way to do this is to include the output from these | |
| commands: | |
| % gdb --version | |
| % gdb --config | |
| For more information on how/whether to report bugs, see the | |
| Reporting Bugs chapter of the GDB manual (gdb/doc/gdb.texinfo). | |
| Graphical interface to GDB -- X Windows, MS Windows | |
| ========================== | |
| Several graphical interfaces to GDB are available. You should | |
| check: | |
| https://sourceware.org/gdb/wiki/GDB%20Front%20Ends | |
| for an up-to-date list. | |
| Emacs users will very likely enjoy the Grand Unified Debugger mode; | |
| try typing `M-x gdb RET'. | |
| Writing Code for GDB | |
| ===================== | |
| There is information about writing code for GDB in the file | |
| `CONTRIBUTE' and at the website: | |
| http://www.gnu.org/software/gdb/ | |
| in particular in the wiki. | |
| If you are pondering writing anything but a short patch, especially | |
| take note of the information about copyrights and copyright assignment. | |
| It can take quite a while to get all the paperwork done, so | |
| we encourage you to start that process as soon as you decide you are | |
| planning to work on something, or at least well ahead of when you | |
| think you will be ready to submit the patches. | |
| GDB Testsuite | |
| ============= | |
| Included with the GDB distribution is a DejaGNU based testsuite | |
| that can either be used to test your newly built GDB, or for | |
| regression testing a GDB with local modifications. | |
| Running the testsuite requires the prior installation of DejaGNU, | |
| which is generally available via ftp. The directory | |
| ftp://sources.redhat.com/pub/dejagnu/ will contain a recent snapshot. | |
| Once DejaGNU is installed, you can run the tests in one of the | |
| following ways: | |
| (1) cd gdb-VERSION | |
| make check-gdb | |
| or | |
| (2) cd gdb-VERSION/gdb | |
| make check | |
| or | |
| (3) cd gdb-VERSION/gdb/testsuite | |
| make site.exp (builds the site specific file) | |
| runtest -tool gdb GDB=../gdb (or GDB=<somepath> as appropriate) | |
| When using a `make'-based method, you can use the Makefile variable | |
| `RUNTESTFLAGS' to pass flags to `runtest', e.g.: | |
| make RUNTESTFLAGS=--directory=gdb.cp check | |
| If you use GNU make, you can use its `-j' option to run the testsuite | |
| in parallel. This can greatly reduce the amount of time it takes for | |
| the testsuite to run. In this case, if you set `RUNTESTFLAGS' then, | |
| by default, the tests will be run serially even under `-j'. You can | |
| override this and force a parallel run by setting the `make' variable | |
| `FORCE_PARALLEL' to any non-empty value. Note that the parallel `make | |
| check' assumes that you want to run the entire testsuite, so it is not | |
| compatible with some dejagnu options, like `--directory'. | |
| The last method gives you slightly more control in case of problems | |
| with building one or more test executables or if you are using the | |
| testsuite `standalone', without it being part of the GDB source tree. | |
| See the DejaGNU documentation for further details. | |
| Copyright and License Notices | |
| ============================= | |
| Most files maintained by the GDB Project contain a copyright notice | |
| as well as a license notice, usually at the start of the file. | |
| To reduce the length of copyright notices, consecutive years in the | |
| copyright notice can be combined into a single range. For instance, | |
| the following list of copyright years... | |
| 1986, 1988, 1989, 1991-1993, 1999, 2000, 2007, 2008, 2009, 2010, 2011 | |
| ... is abbreviated into: | |
| 1986, 1988-1989, 1991-1993, 1999-2000, 2007-2011 | |
| Every year of each range, inclusive, is a copyrightable year that | |
| could be listed individually. | |
| (this is for editing this file with GNU emacs) | |
| Local Variables: | |
| mode: text | |
| End: |