|
|
1.1 root 1: Info file gdb, produced by texinfo-format-buffer -*-Text-*-
2: from file gdb.texinfo
3:
4: This file documents the GNU debugger GDB.
5:
6: Copyright (C) 1988 Free Software Foundation, Inc.
7:
8: Permission is granted to make and distribute verbatim copies of
9: this manual provided the copyright notice and this permission notice
10: are preserved on all copies.
11:
12: Permission is granted to copy and distribute modified versions of this
13: manual under the conditions for verbatim copying, provided also that the
14: sections entitled "Distribution" and "GDB General Public License" are
15: included exactly as in the original, and provided that the entire resulting
16: derived work is distributed under the terms of a permission notice
17: identical to this one.
18:
19: Permission is granted to copy and distribute translations of this manual
20: into another language, under the above conditions for modified versions,
21: except that the sections entitled "Distribution" and "GDB General Public
22: License" may be included in a translation approved by the author instead
23: of in the original English.
24:
25:
26:
27: File: gdb Node: Top, Up: (DIR), Next: Commands
28:
29: Summary of GDB
30: **************
31:
32: The purpose of a debugger such as GDB is to allow you to execute another
33: program while examining what is going on inside it. We call the other
34: program "your program" or "the program being debugged".
35:
36: GDB can do four kinds of things (plus other things in support of these):
37:
38: 1. Start the program, specifying anything that might affect its behavior.
39:
40: 2. Make the program stop on specified conditions.
41:
42: 3. Examine what has happened, when the program has stopped, so that you
43: can see bugs happen.
44:
45: 4. Change things in the program, so you can correct the effects of one bug
46: and go on to learn about another without having to recompile first.
47:
48: * Menu:
49:
50: * License:: The GDB General Public License gives you permission
51: to redistribute GDB on certain terms; and also
52: explains that there is no warranty.
53: * Input:: GDB command syntax and input conventions.
54: * Files:: Specifying files for GDB to operate on.
55: * Options:: GDB arguments and options.
56: * Compilation::Compiling your program so you can debug it.
57: * Running:: Running your program under GDB.
58: * Stopping:: Making your program stop. Why it may stop. What to do then.
59: * Stack:: Examining your program's stack.
60: * Source:: Examining your program's source files.
61: * Data:: Examining data in your program.
62: * Symbols:: Examining the debugger's symbol table.
63: * Altering:: Altering things in your program.
64: * Sequences:: Canned command sequences for repeated use.
65: * Emacs:: Using GDB through GNU Emacs.
66: * Remote:: Remote kernel debugging across a serial line.
67: * Commands:: Index of GDB commands.
68: * Concepts:: Index of GDB concepts.
69:
70:
71: File: gdb Node: License, Prev: Top, Up: Top, Next: Input
72:
73: GDB General Public License
74: **************************
75: (Clarified 11 Feb 1988)
76:
77: The license agreements of most software companies keep you at the mercy
78: of those companies. By contrast, our general public license is intended to
79: give everyone the right to share GDB. To make sure that you get the rights
80: we want you to have, we need to make restrictions that forbid anyone to
81: deny you these rights or to ask you to surrender the rights. Hence this
82: license agreement.
83:
84: Specifically, we want to make sure that you have the right to give away
85: copies of GDB, that you receive source code or else can get it if you want
86: it, that you can change GDB or use pieces of it in new free programs, and
87: that you know you can do these things.
88:
89: To make sure that everyone has such rights, we have to forbid you to
90: deprive anyone else of these rights. For example, if you distribute copies
91: of GDB, you must give the recipients all the rights that you have. You
92: must make sure that they, too, receive or can get the source code. And you
93: must tell them their rights.
94:
95: Also, for our own protection, we must make certain that everyone finds
96: out that there is no warranty for GDB. If GDB is modified by someone else
97: and passed on, we want its recipients to know that what they have is not
98: what we distributed, so that any problems introduced by others will not
99: reflect on our reputation.
100:
101: Therefore we (Richard Stallman and the Free Software Foundation,
102: Inc.) make the following terms which say what you must do to be
103: allowed to distribute or change GDB.
104:
105:
106: Copying Policies
107: ================
108:
109: 1. You may copy and distribute verbatim copies of GDB source code as you
110: receive it, in any medium, provided that you conspicuously and
111: appropriately publish on each file a valid copyright notice "Copyright
112: (C) 1988 Free Software Foundation, Inc." (or with whatever year
113: is appropriate); keep intact the notices on all files that
114: refer to this License Agreement and to the absence of any warranty; and
115: give any other recipients of the GDB program a copy of this License
116: Agreement along with the program. You may charge a distribution fee
117: for the physical act of transferring a copy.
118:
119: 2. You may modify your copy or copies of GDB source code or any portion
120: of it, and copy and distribute such modifications under the terms of
121: Paragraph 1 above, provided that you also do the following:
122:
123: * cause the modified files to carry prominent notices stating
124: that you changed the files and the date of any change; and
125:
126: * cause the whole of any work that you distribute or publish, that
127: in whole or in part contains or is a derivative of GDB or any
128: part thereof, to be licensed at no charge to all third parties on
129: terms identical to those contained in this License Agreement
130: (except that you may choose to grant more extensive warranty
131: protection to some or all third parties, at your option).
132:
133: * if the modified program serves as a debugger, cause it, when
134: started running in the simplest and usual way, to print an
135: announcement including a valid copyright notice "Copyright
136: (C) 1988 Free Software Foundation, Inc." (or with the
137: year that is appropriate), saying that there is no warranty (or
138: else, saying that you provide a warranty) and that users may
139: redistribute the program under these conditions, and telling the
140: user how to view a copy of this License Agreement.
141:
142: * You may charge a distribution fee for the physical act of
143: transferring a copy, and you may at your option offer warranty
144: protection in exchange for a fee.
145:
146: Mere aggregation of another unrelated program with this program (or its
147: derivative) on a volume of a storage or distribution medium does not bring
148: the other program under the scope of these terms.
149:
150: 3. You may copy and distribute GDB (or a portion or derivative of it,
151: under Paragraph 2) in object code or executable form under the terms
152: of Paragraphs 1 and 2 above provided that you also do one of the
153: following:
154:
155: * accompany it with the complete corresponding machine-readable
156: source code, which must be distributed under the terms of
157: Paragraphs 1 and 2 above; or,
158:
159: * accompany it with a written offer, valid for at least three
160: years, to give any third party free (except for a nominal
161: shipping charge) a complete machine-readable copy of the
162: corresponding source code, to be distributed under the terms of
163: Paragraphs 1 and 2 above; or,
164:
165: * accompany it with the information you received as to where the
166: corresponding source code may be obtained. (This alternative is
167: allowed only for noncommercial distribution and only if you
168: received the program in object code or executable form alone.)
169:
170: For an executable file, complete source code means all the source code
171: for all modules it contains; but, as a special exception, it need not
172: include source code for modules which are standard libraries that
173: accompany the operating system on which the executable file runs.
174:
175: 4. You may not copy, sublicense, distribute or transfer GDB except as
176: expressly provided under this License Agreement. Any attempt
177: otherwise to copy, sublicense, distribute or transfer GDB is void and
178: your rights to use GDB under this License agreement shall be
179: automatically terminated. However, parties who have received computer
180: software programs from you with this License Agreement will not have
181: their licenses terminated so long as such parties remain in full
182: compliance.
183:
184: 5. If you wish to incorporate parts of GDB into other free programs whose
185: distribution conditions are different, write to the Free Software
186: Foundation. We have not yet worked out a simple rule that can be
187: stated here, but we will often permit this. We will be guided by the
188: two goals of preserving the free status of all derivatives our free
189: software and of promoting the sharing and reuse of software.
190:
191:
192: NO WARRANTY
193: ===========
194:
195: BECAUSE GDB IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
196: NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
197: WHEN OTHERWISE STATED IN WRITING, THE FREE SOFTWARE FOUNDATION, INC,
198: RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE GDB "AS IS"
199: WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
200: BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
201: FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY
202: AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE GDB
203: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
204: SERVICING, REPAIR OR CORRECTION.
205:
206: IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL FREE SOFTWARE
207: FOUNDATION, INC., RICHARD M. STALLMAN, AND/OR ANY OTHER PARTY WHO MAY
208: MODIFY AND REDISTRIBUTE GDB AS PERMITTED ABOVE, BE LIABLE TO YOU
209: FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER
210: SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
211: INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
212: BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A
213: FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY
214: FREE SOFTWARE FOUNDATION, INC.) THE PROGRAM, EVEN IF YOU HAVE BEEN
215: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY
216: OTHER PARTY.
217:
218:
219: File: gdb Node: Input, Prev: License, Up: Top, Next: Files
220:
221: GDB Input Conventions
222: *********************
223:
224: GDB is invoked with the shell command `gdb'. Once started, it reads
225: commands from the terminal until you tell it to exit.
226:
227: A GDB command is a single line of input. There is no limit on how long
228: it can be. It starts with a command name, which is followed by arguments
229: whose meaning depends on the command name. Some command names do not
230: allow arguments.
231:
232: GDB command names may always be abbreviated if the abbreviation is
233: unambiguous. Sometimes even ambiguous abbreviations are allowed; for
234: example, `s' is specially defined as equivalent to `step'
235: even though there are other commands whose names start with `s'.
236: Possible command abbreviations are often stated in the documentation
237: of the individual commands.
238:
239: A blank line as input to GDB means to repeat the previous command verbatim.
240: Certain commands do not allow themselves to be repeated this way; these are
241: commands for which unintentional repetition might cause trouble and which
242: you are unlikely to want to repeat. Certain others (`list' and
243: `x') act differently when repeated because that is more useful.
244:
245: A line of input starting with `#' is a comment; it does nothing.
246: This is useful mainly in command files (*Note Command Files::).
247:
248: GDB "prompts" for commands with a string that is normally `(gdb)'.
249: When debugging GDB with GDB, it is useful to change the prompt in one of
250: the GDBs so that you can distinguish them. This can be done with the
251: `set-prompt' command.
252:
253: `set-prompt NEWPROMPT'
254: Directs GDB to use NEWPROMPT as its prompt string henceforth.
255:
256: To exit GDB, use the `quit' command (abbreviated `q').
257: `Ctrl-c' will not exit from GDB, but rather will terminate the action
258: of any GDB command that is in progress and return to GDB command level.
259: It is safe to type `Ctrl-c' at any time because GDB does not allow
260: it to take effect until a time when it is safe.
261:
262:
263: File: gdb Node: Files, Prev: Input, Up: Top, Next: Options
264:
265: Specifying GDB's Files
266: **********************
267:
268: GDB needs to know the filename of the program to be debugged. To debug a
269: core dump of a previous run, GDB must be told the filename of the core
270: dump.
271:
272: * Menu:
273:
274: * Arguments: File Arguments. Specifying files with arguments
275: (when you start GDB).
276: * Commands: File Commands. Specifying files with GDB commands.
277:
278:
279: File: gdb Node: File Arguments, Prev: Files, Up: Files, Next: File Commands
280:
281: Specifying Files with Arguments
282: ===============================
283:
284: The usual way to specify the executable and core dump file names is with
285: two command arguments given when you start GDB. The first argument is used
286: as the file for execution and symbols, and the second argument (if any) is
287: used as the core dump file name. Thus,
288:
289: gdb progm core
290:
291: specifies `progm' as the executable program and `core' as a core
292: dump file to examine. (You do not need to have a core dump file if what
293: you plan to do is debug the program interactively.)
294:
295: *Note Options::, for full information on command options and arguments for
296: GDB.
297:
298:
299: File: gdb Node: File Commands, Prev: File Arguments, Up: Files
300:
301: Specifying Files with Commands
302: ==============================
303:
304: Usually you specify the files for GDB to work with by giving arguments when
305: you invoke GDB. But occasionally it is necessary to change to a different
306: file during a GDB session. Or you may run GDB and forget to specify the
307: files you want to use. In these situations the GDB commands to specify new
308: files are useful.
309:
310: `exec-file FILENAME'
311: Specify that the program to be run is found in FILENAME. If you
312: do not specify a directory and the file is not found in GDB's working
313: directory, GDB will use the environment variable `PATH' as a list
314: of directories to search, just as the shell does when looking for a
315: program to run.
316:
317: `symbol-file FILENAME'
318: Read symbol table information from file FILENAME. `PATH'
319: is searched when necessary. Most of the time you will use both the
320: `exec-file' and `symbol-file' commands on the same file.
321:
322: `symbol-file' with no argument clears out GDB's symbol table.
323:
324: `core-file FILENAME'
325: Specify the whereabouts of a core dump file to be used as the
326: "contents of memory". Note that the core dump contains only the
327: writable parts of memory; the read-only parts must come from the
328: executable file.
329:
330: `core-file' with no argument specifies that no core file is
331: to be used.
332:
333: `kill'
334: Cancel running the program under GDB. This could be used if you wish
335: to debug a core dump instead. GDB ignores any core dump file if it is
336: actually running the program, so the `kill' command is the only
337: sure way to go back to using the core dump file.
338:
339: `info files'
340: Print the names of the executable and core dump files currently in
341: use by GDB, and the file from which symbols were loaded.
342:
343: While all three file-specifying commands allow both absolute and relative
344: file names as arguments, GDB always converts the file name to an absolute
345: one and remembers it that way.
346:
347: The `symbol-file' command causes GDB to forget the contents of its
348: convenience variables, the value history, and all breakpoints and
349: auto-display expressions. This is because they may contain pointers to the
350: internal data recording symbols and data types, which are part of the old
351: symbol table data being discarded inside GDB.
352:
353:
354: File: gdb Node: Options, Prev: Files, Up: Top, Next: Compilation
355:
356: Options and Arguments for GDB
357: *****************************
358:
359: When you invoke GDB, you can pass commands telling it what files to
360: operate on and what other things to do.
361:
362: * Menu:
363:
364: * Mode Options:: Options controlling modes of operation.
365: * File Options:: Options to specify files (executable, coredump, commands)
366: * Other Arguments:: Any other arguments without options
367: also specify files.
368:
369:
370: File: gdb Node: Mode Options, Prev: Options, Up: Options, Next: File Options
371:
372: Mode Options
373: ============
374:
375: `-nx'
376: Do not execute commands from the init files `.gdbinit'.
377: Normally, the commands in these files are executed after all the
378: command options and arguments have been processed. *Note Command Files::.
379:
380: `-q'
381: "Quiet". Do not print the usual introductory messages.
382:
383: `-batch'
384: Run in batch mode. Exit with code 1 after processing all the command
385: files specified with `-x' (and `.gdbinit', if not
386: inhibited). Exit also if, due to an error, GDB would otherwise
387: attempt to read a command from the terminal.
388:
389: `-fullname'
390: This option is used when Emacs runs GDB as a subprocess. It tells GDB
391: to output the full file name and line number in a standard,
392: recognizable fashion each time a stack frame is displayed (which
393: includes each time the program stops). This recognizable format looks
394: like two `\032' characters, followed by the filename, line number
395: and character position separated by colons, and a newline. The
396: Emacs-to-GDB interface program uses the two `\032' characters as
397: a signal to display the source code for the frame.
398:
399:
400: File: gdb Node: File Options, Prev: Mode Options, Up: Options, Next: Other Arguments
401:
402: File-specifying Options
403: =======================
404:
405: All the options and command line arguments given are processed
406: in sequential order. The order makes a difference when the
407: `-x' command is used.
408:
409: `-s FILE'
410: Read symbol table from file FILE.
411:
412: `-e FILE'
413: Use file FILE as the executable file to execute when
414: appropriate, and for examining pure data in conjunction with a core
415: dump.
416:
417: `-se FILE'
418: Read symbol table from file FILE and use it as the executable
419: file.
420:
421: `-c FILE'
422: Use file FILE as a core dump to examine.
423:
424: `-x FILE'
425: Execute GDB commands from file FILE.
426:
427: `-d DIRECTORY'
428: Add DIRECTORY to the path to search for source files.
429:
430:
431: File: gdb Node: Other Arguments, Prev: File Options, Up: Options
432:
433: Other Arguments
434: ===============
435:
436: If there are arguments to GDB that are not options or associated with
437: options, the first one specifies the symbol table and executable file name
438: (as if it were preceded by `-se') and the second one specifies a core
439: dump file name (as if it were preceded by `-c').
440:
441:
442: File: gdb Node: Compilation, Prev: Options, Up: Top, Next: Running
443:
444: Compiling Your Program for Debugging
445: ************************************
446:
447: In order to debug a program effectively, you need to ask for debugging
448: information when you compile it. This information in the object file
449: describes the data type of each variable or function and the correspondence
450: between source line numbers and addresses in the executable code.
451:
452: To request debugging information, specify the `-g' option when you run
453: the compiler.
454:
455: The Unix C compiler is unable to handle the `-g' and `-O' options
456: together. This means that you cannot ask for optimization if you ask for
457: debugger information.
458:
459: The GNU C compiler supports `-g' with or without `-O', making it
460: possible to debug optimized code. We recommend that you *always* use
461: `-g' whenever you compile a program. You may think the program is
462: correct, but there's no sense in pushing your luck.
463:
464: If you are using the GNU C compiler, the GNU assembler and the GNU linker,
465: you can choose between two formats of debugging information: the standard
466: Unix format, which is what you get with `-g', and GDB's own format,
467: which you request by using `-gg' instead of `-g'. This stores
468: debugging information in the executable file in a format much like that
469: which is used inside GDB. This has these advantages and disadvantages:
470:
471: * GDB can read `-gg' format more than twice as fast as Unix
472: `-g' format.
473:
474: * The `-gg' format uses much more disk space than Unix format.
475:
476: * The Unix debuggers can understand only Unix format, so you cannot use
477: Unix source-level debuggers if you compile with `-gg'. (The
478: `adb' debugger works with either format; it does not use this
479: information in any case.)
480:
481:
482: File: gdb Node: Running, Prev: Compilation, Up: Top, Next: Stopping
483:
484: Running Your Program Under GDB
485: ******************************
486:
487: To start your program under GDB, use the `run' command. The program
488: must already have been specified using the `exec-file' command or with
489: an argument to GDB (*Note Files::); what `run' does is create an
490: inferior process, load the program into it, and set it in motion.
491:
492: The execution of a program is affected by certain information it receives
493: from its superior. GDB provides ways to specify them, which you must do
494: before starting the program. (You can change them after starting the
495: program, but such changes do not affect the program unless you start it
496: over again.)
497:
498: The arguments.
499: You specify the arguments to give the program as the arguments of the
500: `run' command.
501:
502: The environment.
503: The program normally inherits its environment from GDB, but you can
504: use the GDB commands `set-environment' and `unset-environment' to
505: change parts of the environment that will be given to the program.
506:
507: The working directory.
508: The program inherits its working directory from GDB. You can set GDB's
509: working directory with the `cd' command in GDB.
510:
511: After the `run' command, the debugger does nothing but wait for your
512: program to stop. *Note Stopping::.
513:
514: * Menu:
515:
516: * Arguments:: Specifying the arguments for your program.
517: * Environment:: Specifying the environment for your program.
518: * Working Directory:: Specifying the working directory for giving
519: to your program when it is run.
520: * Input/Output:: Specifying the program's standard input and output.
521: * Attach:: Debugging a process started outside GDB.
522:
523:
524: File: gdb Node: Arguments, Prev: Running, Up: Running, Next: Environment
525:
526: Your Program's Arguments
527: ========================
528:
529: You specify the arguments to give the program as the arguments of the
530: `run' command. They are passed to a shell, which expands wildcard
531: characters and performs redirection of I/O, and thence to the program.
532:
533: `run' with no arguments uses the same arguments used by the previous
534: `run'.
535:
536: The command `set-args' can be used to specify the arguments to be used
537: the next time the program is run. If `set-args' has no arguments, it
538: means to use no arguments the next time the program is run. If you have
539: run your program with arguments and want to run it again with no arguments,
540: this is the only way to do so.
541:
542:
543: File: gdb Node: Environment, Prev: Arguments, Up: Running, Next: Working Directory
544:
545: Your Program's Environment
546: ==========================
547:
548: The "environment" consists of a set of "environment variables" and
549: their values. Environment variables conventionally record such things as
550: your user name, your home directory, your terminal type, and your search
551: path for programs to run. Usually you set up environment variables with
552: the shell and they are inherited by all the other programs you run. When
553: debugging, it can be useful to try running the program with different
554: environments without having to start the debugger over again.
555:
556: `info environment VARNAME'
557: Print the value of environment variable VARNAME to be given to
558: your program when it is started. This command can be abbreviated
559: `i env VARNAME'.
560:
561: `info environment'
562: Print the names and values of all environment variables to be given to
563: your program when it is started. This command can be abbreviated
564: `i env'.
565:
566: `set-environment VARNAME VALUE'
567: Sets environment variable VARNAME to VALUE, for your
568: program only, not for GDB itself. VALUE may be any string; the
569: values of environment variables are just strings, and any
570: interpretation is supplied by your program itself. This command
571: can be abbreviated as short as `set-e'.
572:
573: `unset-environment VARNAME'
574: Remove variable VARNAME from the environment to be passed to
575: your program. This is different from `set-env VARNAME ='
576: because `unset-environment' makes a variable not be defined at
577: all, which is distinguishable from an empty value. This command can
578: be abbreviated `unset'.
579:
580:
581: File: gdb Node: Working Directory, Prev: Environment, Up: Running, Next: Input/Output
582:
583: Your Program's Working Directory
584: ================================
585:
586: Each time you start your program with `run', it inherits its working
587: directory from the current working directory of GDB. GDB's working
588: directory is initially whatever it inherited from its superior, but you can
589: specify the working directory for GDB with the `cd' command.
590:
591: The GDB working directory also serves as a default for the commands
592: that specify files for GDB to operate on. *Note Files::.
593:
594: `cd DIRECTORY'
595: Set GDB's working directory to DIRECTORY.
596:
597: `pwd'
598: Print GDB's working directory.
599:
600:
601: File: gdb Node: Input/Output, Prev: Working Directory, Up: Running, Next: Attach
602:
603: Your Program's Input and Output
604: ===============================
605:
606: By default, the program you run under GDB does input and output to the same
607: terminal that GDB uses.
608:
609: You can redirect the program's input and/or output using `sh'-style
610: redirection commands in the `run' command. For example,
611:
612: run > outfile
613:
614: starts the program, diverting its output to the file `outfile'.
615:
616: Another way to specify where the program should do input and output is with
617: the `tty' command. This command accepts a file name as argument, and
618: causes this file to be the default for future `run' commands. For
619: example,
620:
621: tty /dev/ttyb
622:
623: directs that processes started with subsequent `run' commands default
624: to do input and output on the terminal `/dev/ttyb'. An explicit
625: redirection in `run' overrides the `tty' command.
626:
627: When you use the `tty' command or redirect input in the `run'
628: command, the *input for your program* comes from the specified file,
629: but the input for GDB still comes from your terminal. The program's
630: controlling terminal is your (GDB's) terminal, not the terminal that the
631: program is reading from; so if you want to type `C-c' to stop the
632: program, you must type it on your (GDB's) terminal. A `C-c' typed on
633: the program's terminal is available to the program as ordinary input.
634:
635:
636: File: gdb Node: Attach, Prev: Input/Output, Up: Running
637:
638: Debugging an Already-Running Process
639: ====================================
640:
641: Some operating systems (in particular, Sun) allow GDB to begin debugging an
642: already-running process that was started outside of GDB. To do this you
643: must use the `attach' command instead of the `run' command.
644:
645: The `attach' command requires one argument, which is the process-id of
646: the process you want to debug. (The usual way to find out the process-id
647: of the process is with the `ps' utility.)
648:
649: The first thing GDB after arranging to debug the process is to stop it.
650: You can examine and modify an attached process with all the GDB commands
651: that ordinarily available when you start processes with `run'. You
652: can insert breakpoints; you can step and continue; you can modify storage.
653: If you would rather the process continue running, use the `continue'
654: command after attaching.
655:
656: When you are finished debugging the attached process, you can use the
657: `detach' command to release it from GDB's control. Detaching
658: the process continues its execution. After the `detach' command,
659: that process and GDB become completely independent once more, and you
660: are ready to `attach' another process or start one with `run'.
661:
662: If you exit GDB or use the `run' command while you have an attached
663: process, you kill that process. You will be asked for confirmation if you
664: try to do either of these things.
665:
666:
667: File: gdb Node: Stopping, Prev: Running, Up: Top, Next: Stack
668:
669: Stopping and Continuing
670: ***********************
671:
672: When you run a program normally, it runs until exiting. The purpose
673: of using a debugger is so that you can stop it before that point;
674: or so that if the program runs into trouble you can find out why.
675:
676: * Menu:
677:
678: * Signals:: Fatal signals in your program just stop it;
679: then you can use GDB to see what is going on.
680: * Breakpoints:: Breakpoints let you stop your program when it
681: reaches a specified point in the code.
682: * Continuing:: Resuming execution until the next signal or breakpoint.
683: * Stepping:: Stepping runs the program a short distance and
684: then stops it wherever it has come to.
685:
686:
687: File: gdb Node: Signals, Prev: Stopping, Up: Stopping, Next: Breakpoints
688:
689: Signals
690: =======
691:
692: A signal is an asynchronous event that can happen in a program. The
693: operating system defines the possible kinds of signals, and gives each kind
694: a name and a number. For example, `SIGINT' is the signal a program
695: gets when you type `Ctrl-c'; `SIGSEGV' is the signal a program
696: gets from referencing a place in memory far away from all the areas in use;
697: `SIGALRM' occurs when the alarm clock timer goes off (which happens
698: only if the program has requested an alarm).
699:
700: Some signals, including `SIGALRM', are a normal part of the
701: functioning of the program. Others, such as `SIGSEGV', indicate
702: errors; these signals are "fatal" (kill the program immediately) if the
703: program has not specified in advance some other way to handle the signal.
704: `SIGINT' does not indicate an error in the program, but it is normally
705: fatal so it can carry out the purpose of `Ctrl-c': to kill the program.
706:
707: GDB has the ability to detect any occurrence of a signal in the program
708: running under GDB's control. You can tell GDB in advance what to do for
709: each kind of signal.
710:
711: Normally, GDB is set up to ignore non-erroneous signals like `SIGALRM'
712: (so as not to interfere with their role in the functioning of the program)
713: but to stop the program immediately whenever an error signal happens.
714: You can change these settings with the `handle' command. You must
715: specify which signal you are talking about with its number.
716:
717: `info signal'
718: Print a table of all the kinds of signals and how GDB has been told to
719: handle each one. You can use this to see the signal numbers of all
720: the defined types of signals.
721:
722: `handle SIGNALNUM KEYWORDS...'
723: Change the way GDB handles signal SIGNALNUM. The KEYWORDS
724: say what change to make.
725:
726: To use the `handle' command you must know the code number of the
727: signal you are concerned with. To find the code number, type `info
728: signal' which prints a table of signal names and numbers.
729:
730: The keywords allowed by the handle command can be abbreviated. Their full
731: names are
732:
733: `stop'
734: GDB should stop the program when this signal happens. This implies
735: the `print' keyword as well.
736:
737: `print'
738: GDB should print a message when this signal happens.
739:
740: `nostop'
741: GDB should not stop the program when this signal happens. It may
742: still print a message telling you that the signal has come in.
743:
744: `noprint'
745: GDB should not mention the occurrence of the signal at all. This
746: implies the `nostop' keyword as well.
747:
748: `pass'
749: GDB should allow the program to see this signal; the program will be
750: able to handle the signal, or may be terminated if the signal is fatal
751: and not handled.
752:
753: `nopass'
754: GDB should not allow the program to see this signal.
755:
756: When a signal has been set to stop the program, the program cannot see the
757: signal until you continue. It will see the signal then, if `pass' is
758: in effect for the signal in question at that time. In other words,
759: after GDB reports a signal, you can use the `handle' command with
760: `pass' or `nopass' to control whether that signal will be seen by
761: the program when you later continue it.
762:
763: You can also use the `signal' command to prevent the program from
764: seeing a signal, or cause it to see a signal it normally would not see,
765: or to give it any signal at any time. *Note Signaling::.
766:
767:
768: File: gdb Node: Breakpoints, Prev: Signals, Up: Stopping, Next: Continuing
769:
770: Breakpoints
771: ===========
772:
773: A "breakpoint" makes your program stop whenever a certain point in the
774: program is reached. You set breakpoints explicitly with GDB commands,
775: specifying the place where the program should stop by line number, function
776: name or exact address in the program. You can add various other conditions
777: to control whether the program will stop.
778:
779: Each breakpoint is assigned a number when it is created; these numbers are
780: successive integers starting with 1. In many of the commands for controlling
781: various features of breakpoints you use the breakpoint number to say which
782: breakpoint you want to change. Each breakpoint may be "enabled" or
783: "disabled"; if disabled, it has no effect on the program until you
784: enable it again.
785:
786: The command `info break' prints a list of all breakpoints set and not
787: cleared, showing their numbers, where in the program they are, and any
788: special features in use for them. Disabled breakpoints are included in the
789: list, but marked as disabled. `info break' with a breakpoint number
790: as argument lists only that breakpoint. The convenience variable `$_'
791: and the default examining-address for the `x' command are set to the
792: address of the last breakpoint listed (*Note Memory::).
793:
794: * Menu:
795:
796: * Set Breaks:: How to establish breakpoints.
797: * Clear Breaks:: How to remove breakpoints no longer needed.
798: * Disabling:: How to disable breakpoints (turn them off temporarily).
799: * Conditions:: Making extra conditions on whether to stop.
800: * Break Commands:: Commands to be executed at a breakpoint.
801: * Error in Breakpoints:: "Cannot insert breakpoints" error--why, what to do.
802:
803:
804: File: gdb Node: Set Breaks, Prev: Breakpoints, Up: Breakpoints, Next: Clear Breaks
805:
806: Setting Breakpoints
807: -------------------
808:
809: Breakpoints are set with the `break' command (abbreviated `b').
810: You have several ways to say where the breakpoint should go.
811:
812: `break FUNCTION'
813: Set a breakpoint at entry to function FUNCTION.
814:
815: `break LINENUM'
816: Set a breakpoint at line LINENUM in the current source file.
817: That file is the last file whose source text was printed. This
818: breakpoint will stop the program just before it executes any of the
819: code on that line.
820:
821: `break FILENAME:LINENUM'
822: Set a breakpoint at line LINENUM in source file FILENAME.
823:
824: `break FILENAME:FUNCTION'
825: Set a breakpoint at entry to function FUNCTION found in file
826: FILENAME. Specifying a filename as well as a function name is
827: superfluous except when multiple files contain similarly named
828: functions.
829:
830: `break *ADDRESS'
831: Set a breakpoint at address ADDRESS. You can use this to set
832: breakpoints in parts of the program which do not have debugging
833: information or source files.
834:
835: `break'
836: Set a breakpoint at the next instruction to be executed in the
837: selected stack frame (*Note Stack::). This is a silly thing to do in
838: the innermost stack frame because the program would stop immediately
839: after being started, but it is very useful with another stack frame,
840: because it will cause the program to stop as soon as control returns
841: to that frame.
842:
843: `break ... if COND'
844: Set a breakpoint with condition COND; evaluate the expression
845: COND each time the breakpoint is reached, and stop only if the
846: value is nonzero. `...' stands for one of the possible
847: arguments described above (or no argument) specifying where to break.
848: *Note Conditions::, for more information on breakpoint conditions.
849:
850: `tbreak ARGS'
851: Set a breakpoint enabled only for one stop. ARGS are the
852: same as in the `break' command, and the breakpoint is set in the same
853: way, but the breakpoint is automatically "disabled" the first time it
854: is hit.
855:
856: GDB allows you to set any number of breakpoints at the same place in the
857: program. There is nothing silly or meaningless about this. When the
858: breakpoints are conditional, this is even useful (*Note Conditions::).
859:
860:
861: File: gdb Node: Clear Breaks, Prev: Set Breaks, Up: Breakpoints, Next: Disabling
862:
863: Clearing Breakpoints
864: --------------------
865:
866: It is often necessary to eliminate a breakpoint once it has done its job
867: and you no longer want the program to stop there. This is called
868: "clearing" or `deleting' the breakpoint. A breakpoint that
869: has been cleared no longer exists in any sense.
870:
871: With the `clear' command you can clear breakpoints according to where
872: they are in the program. With the `delete' command you can clear
873: individual breakpoints by specifying their breakpoint numbers.
874:
875: It is not necessary to clear a breakpoint to proceed past it. GDB
876: automatically ignores breakpoints in the first instruction to be executed
877: when you continue execution at the same address where the program stopped.
878:
879: `clear'
880: Clear any breakpoints at the next instruction to be executed in the
881: selected stack frame (*Note Selection::). When the innermost frame
882: is selected, this is a good way to clear a breakpoint that the program
883: just stopped at.
884:
885: `clear FUNCTION'
886: `clear FILENAME:FUNCTION'
887: Clear any breakpoints set at entry to the function FUNCTION.
888:
889: `clear LINENUM'
890: `clear FILENAME:LINENUM'
891: Clear any breakpoints set at or within the code of the specified line.
892:
893: `delete BNUMS...'
894: Delete the breakpoints of the numbers specified as arguments.
895: A breakpoint deleted is forgotten completely.
896:
897:
898: File: gdb Node: Disabling, Prev: Clear Breaks, Up: Breakpoints, Next: Conditions
899:
900: Disabling Breakpoints
901: ---------------------
902:
903: Rather than clearing a breakpoint, you might prefer to "disable" it.
904: This makes the breakpoint inoperative as if it had been cleared, but
905: remembers the information on the breakpoint so that you can "enable"
906: it again later.
907:
908: You disable and enable breakpoints with the `enable' and
909: `disable' commands, specifying one or more breakpoint numbers as
910: arguments. Use `info break' to print a list of breakpoints if you
911: don't know which breakpoint numbers to use.
912:
913: A breakpoint can have any of four different states of enablement:
914:
915: * Enabled. The breakpoint will stop the program. A breakpoint made
916: with the `break' command starts out in this state.
917: * Disabled. The breakpoint has no effect on the program.
918: * Enabled once. The breakpoint will stop the program, but
919: when it does so it will become disabled. A breakpoint made
920: with the `tbreak' command starts out in this state.
921: * Enabled for deletion. The breakpoint will stop the program, but
922: immediately after it does so it will be deleted permanently.
923:
924: You change the state of enablement of a breakpoint with the following
925: commands:
926:
927: `disable BNUMS...'
928: Disable the specified breakpoints. A disabled breakpoint has no
929: effect but is not forgotten. All options such as ignore-counts,
930: conditions and commands are remembered in case the breakpoint is
931: enabled again later.
932:
933: `enable BNUMS...'
934: Enable the specified breakpoints. They become effective once again in
935: stopping the program, until you specify otherwise.
936:
937: `enable once BNUMS...'
938: Enable the specified breakpoints temporarily. Each will be disabled
939: again the next time it stops the program (unless you have used one of
940: these commands to specify a different state before that time comes).
941:
942: `enable delete BNUMS...'
943: Enable the specified breakpoints to work once and then die. Each of
944: the breakpoints will be deleted the next time it stops the program
945: (unless you have used one of these commands to specify a different
946: state before that time comes).
947:
948: Aside from the automatic disablement or deletion of a breakpoint when it
949: stops the program, which happens only in certain states, the state of
950: enablement of a breakpoint changes only when one of the commands above
951: is used.
952:
953:
954: File: gdb Node: Conditions, Prev: Disabling, Up: Breakpoints, Next: Break Commands
955:
956: Break Conditions
957: ----------------
958:
959: The simplest sort of breakpoint breaks every time the program reaches a
960: specified place. You can also specify a "condition" for a breakpoint.
961: A condition is just a boolean expression in your programming language.
962: A breakpoint with a condition evaluates the expression each time the
963: program reaches it, and the program stops only if the condition is true.
964:
965: Break conditions may have side effects, and may even call functions in your
966: program. These may sound like strange things to do, but their effects are
967: completely predictable unless there is another enabled breakpoint at the
968: same address. (In that case, GDB might see the other breakpoint first and
969: stop the program without checking the condition of this one.) Note that
970: breakpoint commands are usually more convenient and flexible for the
971: purpose of performing side effects when a breakpoint is reached
972: (*Note Break Commands::).
973:
974: Break conditions can be specified when a breakpoint is set, by using
975: `if' in the arguments to the `break' command. *Note Set Breaks::.
976: They can also be changed at any time with the `condition' command:
977:
978: `condition BNUM EXPRESSION'
979: Specify EXPRESSION as the break condition for breakpoint number
980: BNUM. From now on, this breakpoint will stop the program only if
981: the value of EXPRESSION is true (nonzero, in C). EXPRESSION
982: is not evaluated at the time the `condition' command is given.
983:
984: `condition BNUM'
985: Remove the condition from breakpoint number BNUM. It becomes
986: an ordinary unconditional breakpoint.
987:
988: A special feature is provided for one kind of condition: to prevent the
989: breakpoint from doing anything until it has been reached a certain number
990: of times. This is done with the "ignore count" of the breakpoint.
991: When the program reaches a breakpoint whose ignore count is positive, then
992: instead of stopping, it just decrements the ignore count by one and
993: continues.
994:
995: `ignore BNUM COUNT'
996: Set the ignore count of breakpoint number BNUM to COUNT.
997: The next COUNT times the breakpoint is reached, it will not stop.
998:
999: To make the breakpoint stop the next time it is reached, specify
1000: a count of zero.
1001:
1002: `cont COUNT'
1003: Continue execution of the program, setting the ignore count of the
1004: breakpoint that the program stopped at to COUNT minus one.
1005: Continuing through the breakpoint does not itself count as one of
1006: COUNT. Thus, the program will not stop at this breakpoint until the
1007: COUNT'th time it is hit.
1008:
1009: This command is allowed only when the program stopped due to a
1010: breakpoint. At other times, the argument to `cont' is ignored.
1011:
1012: If a breakpoint has a positive ignore count and a condition, the condition
1013: is not checked. Once the ignore count reaches zero, the condition will
1014: start to be checked.
1015:
1016: Note that you could achieve the effect of the ignore count with a condition
1017: such as `$foo-- <= 0' using a debugger convenience variable that is
1018: decremented each time. That is why the ignore count is considered a
1019: special case of a condition. *Note Convenience Vars::.
1020:
1021:
1022: File: gdb Node: Break Commands, Prev: Conditions, Up: Breakpoints, Next: Error in Breakpoints
1023:
1024: Commands Executed on Breaking
1025: -----------------------------
1026:
1027: You can give any breakpoint a series of commands to execute when the
1028: program stops due to that breakpoint. For example, you might want to
1029: print the values of certain expressions, or enable other breakpoints.
1030:
1031: `commands BNUM'
1032: Specify commands for breakpoint number BNUM. The commands
1033: themselves appear on the following lines. Type a line containing just
1034: `end' to terminate the commands.
1035:
1036: To remove all commands from a breakpoint, use the command
1037: `commands' and follow it immediately by `end'; that is, give
1038: no commands.
1039:
1040: It is possible for breakpoint commands to start the program up again.
1041: Simply use the `cont' command, or `step', or any other command
1042: to resume execution. However, any remaining breakpoint commands are
1043: ignored. When the program stops again, GDB will act according to why
1044: that stop took place.
1045:
1046: If the first command specified is `silent', the usual message about
1047: stopping at a breakpoint is not printed. This may be desirable for
1048: breakpoints that are to print a specific message and then continue.
1049: If the remaining commands too print nothing, you will see no sign that
1050: the breakpoint was reached at all. `silent' is not really a command;
1051: it is meaningful only at the beginning of the commands for a breakpoint.
1052:
1053: The commands `echo' and `output' that allow you to print precisely
1054: controlled output are often useful in silent breakpoints. *Note Output::.
1055:
1056: For example, here is how you could use breakpoint commands to print the
1057: value of `x' at entry to `foo' whenever it is positive. We
1058: assume that the newly created breakpoint is number 4; `break' will
1059: print the number that is assigned.
1060:
1061: break foo if x>0
1062: commands 4
1063: silent
1064: echo x is\040
1065: output x
1066: echo \n
1067: cont
1068: end
1069:
1070: One application for breakpoint commands is to correct one bug so you can
1071: test another. Put a breakpoint just after the erroneous line of code, give
1072: it a condition to detect the case in which something erroneous has been
1073: done, and give it commands to assign correct values to any variables that
1074: need them. End with the `cont' command so that the program does not
1075: stop, and start with the `silent' command so that no output is
1076: produced. Here is an example:
1077:
1078: break 403
1079: commands 5
1080: silent
1081: set x = y + 4
1082: cont
1083: end
1084:
1085: One deficiency in the operation of automatically continuing breakpoints
1086: under Unix appears when your program uses raw mode for the terminal.
1087: GDB options back to its own terminal modes (not raw) before executing
1088: commands, and then must switch back to raw mode when your program is
1089: continued. This causes any pending terminal input to be lost.
1090:
1091: In the GNU system, this will be fixed by changing the behavior of
1092: terminal modes.
1093:
1094: Under Unix, when you have this problem, you might be able to get around
1095: it by putting your actions into the breakpoint condition instead of
1096: commands. For example
1097:
1098: condition 5 (x = y + 4), 0
1099:
1100: is a condition expression that will change `x' as needed, then always
1101: have the value 0 so the program will not stop. Loss of input is avoided
1102: here because break conditions are evaluated without changing the terminal
1103: modes. When you want to have nontrivial conditions for performing the side
1104: effects, the operators `&&', `||' and `? ... :' may be useful.
1105:
1106:
1107: File: gdb Node: Error in Breakpoints, Prev: Break Commands, Up: Breakpoints
1108:
1109: "Cannot Insert Breakpoints" Error
1110: ---------------------------------
1111:
1112: Under Unix, breakpoints cannot be used in a program if any other process
1113: is running that program. Attempting to run or continue the program with
1114: a breakpoint in this case will cause GDB to stop it.
1115:
1116: When this happens, you have two ways to proceed:
1117:
1118: 1. Remove or disable the breakpoints, then continue.
1119:
1120: 2. Suspend GDB, and copy the file containing the program to a new name.
1121: Resume GDB and use the `exec-file' command to specify that GDB
1122: should run the program under that name. Then start the program again.
1123:
1124:
1125: File: gdb Node: Continuing, Prev: Breakpoints, Up: Stopping, Next: Stepping
1126:
1127: Continuing
1128: ==========
1129:
1130: After your program stops, most likely you will want it to run some more if
1131: the bug you are looking for has not happened yet.
1132:
1133: `cont'
1134: Continue running the program at the place where it stopped.
1135:
1136: If the program stopped at a breakpoint, the place to continue running
1137: is the address of the breakpoint. You might expect that continuing would
1138: just stop at the same breakpoint immediately. In fact, `cont'
1139: takes special care to prevent that from happening. You do not need
1140: to clear the breakpoint to proceed through it after stopping at it.
1141:
1142: You can, however, specify an ignore-count for the breakpoint that the
1143: program stopped at, by means of an argument to the `cont' command.
1144: *Note Conditions::.
1145:
1146: If the program stopped because of a signal other than `SIGINT' or
1147: `SIGTRAP', continuing will cause the program to see that signal.
1148: You may not want this to happen. For example, if the program stopped
1149: due to some sort of memory reference error, you might store correct
1150: values into the erroneous variables and continue, hoping to see more
1151: execution; but the program would probably terminate immediately as
1152: a result of the fatal signal once it sees the signal. To prevent this,
1153: you can continue with `signal 0'. *Note Signaling::. You can
1154: also act in advance to prevent the program from seeing certain kinds
1155: of signals, using the `handle' command (*Note Signals::).
1156:
1157:
1158: File: gdb Node: Stepping, Prev: Continuing, Up: Stopping
1159:
1160: Stepping
1161: ========
1162:
1163: "Stepping" means setting your program in motion for a limited time, so
1164: that control will return automatically to the debugger after one line of
1165: code or one machine instruction. Breakpoints are active during stepping
1166: and the program will stop for them even if it has not gone as far as the
1167: stepping command specifies.
1168:
1169: `step'
1170: Proceed the program until control reaches a different line, then stop
1171: it and return to the debugger. This command is abbreviated `s'.
1172:
1173: `step COUNT'
1174: Proceed as in `step', but do so COUNT times. If a breakpoint
1175: or a signal not related to stepping is reached before COUNT steps,
1176: stepping stops right away.
1177:
1178: `next'
1179: Similar to `step', but any function calls appearing within the line of
1180: code are executed without stopping. Execution stops when control reaches a
1181: different line of code at the stack level which was executing when the
1182: `next' command was given. This command is abbreviated `n'.
1183:
1184: An argument is a repeat count, as in `step'.
1185:
1186: `finish'
1187: Continue running until just after the selected stack frame returns
1188: (or until there is some other reason to stop, such as a fatal signal
1189: or a breakpoint).
1190:
1191: Contrast this with the `return' command (*Note Returning::).
1192:
1193: `stepi'
1194: `si'
1195: Proceed one machine instruction, then stop and return to the debugger.
1196:
1197: It is often useful to do `display/i $pc' when stepping by machine
1198: instructions. This will cause the next instruction to be executed to
1199: be displayed automatically at each stop. *Note Auto Display::.
1200:
1201: An argument is a repeat count, as in `step'.
1202:
1203: `nexti'
1204: `ni'
1205: Proceed one machine instruction, but if it is a subroutine call,
1206: proceed until the subroutine returns.
1207:
1208: An argument is a repeat count, as in `next'.
1209:
1210: A typical technique for using stepping is to put a breakpoint
1211: (*Note Breakpoints::) at the beginning of the function or the section of
1212: the program in which a problem is believed to lie, and then step through
1213: the suspect area, examining the variables that are interesting, until the
1214: problem happens.
1215:
1216: The `cont' command can be used after stepping to resume execution
1217: until the next breakpoint or signal.
1218:
1219:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.