Commit | Line | Data |
---|---|---|
69d33939 C |
1 | This is GDB, the GNU source-level debugger, presently running under un*x. |
2 | ||
3 | Before compiling GDB, you must tell GDB what kind of machine you are | |
4 | running on. To do this, type `config.gdb machine', where machine is | |
5 | something like `vax' or `sun2'. For a list of valid machine types, | |
6 | type `config.gdb'. | |
7 | ||
8 | Normally config.gdb edits the makefile as necessary. If you have to | |
9 | edit the makefile on a standard machine listed in config.gdb this | |
10 | should be considered a bug and reported as such. | |
11 | ||
12 | Once these files are set up, just `make' will do everything, | |
13 | producing an executable `gdb' in this directory. | |
14 | ||
15 | If you want a new (current to this release) version of the manual, you | |
16 | will have to use the gdb.texinfo file provided with this distribution. | |
17 | The gdb.texinfo file requires the texinfo-format-buffer command from | |
18 | emacs 18.55 or later. | |
19 | ||
20 | About languages other than C... | |
21 | ||
22 | C++ support has been integrated into gdb. GDB should work with | |
23 | FORTRAN programs (if you have problem, please send a bug report), but | |
24 | I am not aware of anyone who is working on getting it to use the | |
25 | syntax of any language other than C or C++. Pascal programs which use | |
26 | sets, subranges, file variables, or nested functions will not | |
27 | currently work. | |
28 | ||
29 | About -gg format... | |
30 | ||
31 | Currently GDB version 3.x does *not* support GCC's -gg format. This | |
32 | is because it (in theory) has fast enough startup on dbx debugging | |
33 | format object files that -gg format is unnecessary (and hence | |
34 | undesirable, since it wastes space and processing power in gcc). I | |
35 | would like to hear people's opinions on the amount of time currently | |
36 | spent in startup; is it fast enough? | |
37 | ||
38 | About remote debugging... | |
39 | ||
40 | The two files remote-multi.shar and remote-sa.m68k.shar contain two | |
41 | examples of a remote stub to be used with remote.c. The the -multi | |
42 | file is a general stub that can probably be running on various | |
43 | different flavors of unix to allow debugging over a serial line from | |
44 | one machine to another. The remote-sa.m68k.shar is designed to run | |
45 | standalone on a 68k type cpu and communicate properley with the | |
46 | remote.c stub over a serial line. | |
47 | ||
48 | About reporting bugs... | |
49 | ||
50 | The correct address for reporting bugs found with gdb is | |
51 | "bug-gdb@prep.ai.mit.edu". Please send all bugs to that address. | |
52 | ||
53 | About xgdb... | |
54 | ||
55 | xgdb.c was provided to us by the user community; it is not an integral | |
56 | part of the gdb distribution. The problem of providing visual | |
57 | debugging support on top of gdb is peripheral to the GNU project and | |
58 | (at least right now) we can't afford to put time into it. So while we | |
59 | will be happy to incorporate user fixes to xgdb.c, we do not guarantee | |
60 | that it will work and we will not fix bugs reported in it. Someone is | |
61 | working on writing a new XGDB, so improving (e.g. by fixing it so that | |
62 | it will work, if it doesn't currently) the current one is not worth it. | |
63 | ||
64 | For those intersted in auto display of source and the availability of | |
65 | an editor while debugging I suggest trying gdb-mode in gnu-emacs. | |
66 | Comments on this mode are welcome. | |
67 | ||
68 | About the machine-dependent files... | |
69 | ||
70 | m-<machine>.h (param.h is a link to this file). | |
71 | This file contains macro definitions that express information | |
72 | about the machine's registers, stack frame format and instructions. | |
73 | ||
74 | <machine>-opcode.h (opcode.h is a link to this file). | |
75 | <machine>-pinsn.c (pinsn.c is a link to this file). | |
76 | These files contain the information necessary to print instructions | |
77 | for your cpu type. | |
78 | ||
79 | <machine>-dep.c (dep.c is a link to this file). | |
80 | Those routines which provide a low level interface to ptrace and which | |
81 | tend to be machine-dependent. (The machine-independent routines are in | |
82 | `infrun.c' and `inflow.c') | |
83 | ||
84 | About writing code for GDB... | |
85 | ||
86 | We appreciate having users contribute code that is of general use, but | |
87 | for it to be included in future GDB releases it must be cleanly | |
88 | written. We do not want to include changes that will needlessly make future | |
89 | maintainance difficult. It is not much harder to do things right, and | |
90 | in the long term it is worth it to the GNU project, and probably to | |
91 | you individually as well. | |
92 | ||
93 | Please code according to the GNU coding standards. If you do not have | |
94 | a copy, you can request one by sending mail to gnu@prep.ai.mit.edu. | |
95 | ||
96 | Please try to avoid making machine-specific changes to | |
97 | machine-independent files (i.e. all files except "param.h" and | |
98 | "dep.c". "pinsn.c" and "opcode.h" are processor-specific but not | |
99 | operating system-dependent). If this is unavoidable, put a hook in | |
100 | the machine-independent file which calls a (possibly) | |
101 | machine-dependent macro (for example, the IGNORE_SYMBOL macro can be | |
102 | used for any symbols which need to be ignored on a specific machine. | |
103 | Calling IGNORE_SYMBOL in dbxread.c is a lot cleaner than a maze of #if | |
104 | defined's). The machine-independent code should do whatever "most" | |
105 | machines want if the macro is not defined in param.h. Using #if | |
106 | defined can sometimes be OK (e.g. SET_STACK_LIMIT_HUGE) but should be | |
107 | conditionalized on a specific feature of an operating system (set in | |
108 | param.h) rather than something like #if defined(vax) or #if | |
109 | defined(SYSV). | |
110 | ||
111 | It is better to replace entire routines which may be system-specific, | |
112 | rather than put in a whole bunch of hooks which are probably not going | |
113 | to be helpful for any purpose other than your changes. For example, | |
114 | if you want to modify dbxread.c to deal with DBX debugging symbols | |
115 | which are in COFF files rather than BSD a.out files, do something | |
116 | along the lines of a macro GET_NEXT_SYMBOL, which could have | |
117 | different definitions for COFF and a.out, rather than trying to put | |
118 | the necessary changes throughout all the code in dbxread.c that | |
119 | currently assumes BSD format. | |
120 | ||
121 | Please avoid duplicating code. For example, if something needs to be | |
122 | changed in read_inferior_memory, it is very painful because there is a | |
123 | copy in every dep.c file. The correct way to do this is to put (in | |
124 | this case) the standard ptrace interfaces in a separate file ptrace.c, | |
125 | which is used by all systems which have ptrace. ptrace.c would deal | |
126 | with variations between systems the same way any system-independent | |
127 | file would (hooks, #if defined, etc.). | |
128 | ||
129 | About debugging gdb with itself... | |
130 | ||
131 | You probably want to do a "make TAGS" after you configure your | |
132 | distribution; this will put the machine dependent routines for your | |
133 | local machine where they will be accessed first by a M-period . | |
134 | ||
135 | Also, make sure that you've compiled gdb with your local cc or taken | |
136 | appropriate precautions regarding ansification of include files. See | |
137 | the Makefile for more information. | |
138 | ||
139 | The "info" command, when executed without a subcommand in a gdb being | |
140 | debugged by gdb, will pop you back up to the top level gdb. See | |
141 | .gdbinit for more details. | |
142 |