|
|
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: Stack, Prev: Stopping, Up: Top, Next: Source
28:
29: Examining the Stack
30: *******************
31:
32: When your program has stopped, the first thing you need to know is where it
33: stopped and how it got there.
34:
35: Each time your program performs a function call, the information about
36: where in the program the call was made from is saved in a block of data
37: called a "stack frame". The frame also contains the arguments of the
38: call and the local variables of the function that was called. All the
39: stack frames are allocated in a region of memory called the "call
40: stack".
41:
42: When your program stops, the GDB commands for examining the stack allow you
43: to see all of this information.
44:
45: One of the stack frames is "selected" by GDB and many GDB commands
46: refer implicitly to the selected frame. In particular, whenever you ask
47: GDB for the value of a variable in the program, the value is found in the
48: selected frame. There are special GDB commands to select whichever frame
49: you are interested in.
50:
51: When the program stops, GDB automatically selects the currently executing
52: frame and describes it briefly as the `frame' command does
53: (*Note Info: Frame Info.).
54:
55: * Menu:
56:
57: * Frames:: Explanation of stack frames and terminology.
58: * Backtrace:: Summarizing many frames at once.
59: * Selection:: How to select a stack frame.
60: * Info: Frame Info, Commands to print information on stack frames.
61:
62:
63: File: gdb Node: Frames, Prev: Stack, Up: Stack, Next: Backtrace
64:
65: Stack Frames
66: ============
67:
68: The call stack is divided up into contiguous pieces called "frames";
69: each frame is the data associated with one call to one function. The frame
70: contains the arguments given to the function, the function's local
71: variables, and the address at which the function is executing.
72:
73: When your program is started, the stack has only one frame, that of the
74: function `main'. This is called the "initial" frame or the
75: "outermost" frame. Each time a function is called, a new frame is
76: made. Each time a function returns, the frame for that function invocation
77: is eliminated. If a function is recursive, there can be many frames for
78: the same function. The frame for the function in which execution is
79: actually occurring is called the "innermost" frame. This is the most
80: recently created of all the stack frames that still exist.
81:
82: Inside your program, stack frames are identified by their addresses. A
83: stack frame consists of many bytes, each of which has its own address; each
84: kind of computer has a convention for choosing one of those bytes whose
85: address serves as the address of the frame. Usually this address is kept
86: in a register called the "frame pointer register" while execution is
87: going on in that frame.
88:
89: GDB assigns numbers to all existing stack frames, starting with zero for
90: the innermost frame, one for the frame that called it, and so on upward.
91: These numbers do not really exist in your program; they are to give you a
92: way of talking about stack frames in GDB commands.
93:
94: Many GDB commands refer implicitly to one stack frame. GDB records a stack
95: frame that is called the "selected" stack frame; you can select any
96: frame using one set of GDB commands, and then other commands will operate
97: on that frame. When your program stops, GDB automatically selects the
98: innermost frame.
99:
100:
101: File: gdb Node: Backtrace, Prev: Frames, Up: Stack, Next: Selection
102:
103: Backtraces
104: ==========
105:
106: A backtrace is a summary of how the program got where it is. It shows one
107: line per frame, for many frames, starting with the currently executing
108: frame (frame zero), followed by its caller (frame one), and on up the
109: stack.
110:
111: `backtrace'
112: `bt'
113: Print a backtrace of the entire stack: one line per frame for all
114: frames in the stack.
115:
116: You can stop the backtrace at any time by typing the system interrupt
117: character, normally `Control-C'.
118:
119: `backtrace N'
120: `bt N'
121: Similar, but stop after N frames.
122:
123: Each line in a backtrace shows the frame number, the program counter, the
124: function and its arguments, and the source file name and line number (if
125: known). The program counter is omitted if is the beginning of the code for
126: the source line. This is the same as the first of the two lines printed
127: when you select a frame.
128:
129:
130: File: gdb Node: Selection, Prev: Backtrace, Up: Stack, Next: Frame Info
131:
132: Selecting a Frame
133: =================
134:
135: Most commands for examining the stack and other data in the program work on
136: whichever stack frame is selected at the moment. Here are the commands for
137: selecting a stack frame; all of them finish by printing a brief description
138: of the stack frame just selected.
139:
140: `frame N'
141: Select frame number N. Recall that frame zero is the innermost
142: (currently executing) frame, frame one is the frame that called the
143: innermost one, and so on. The highest-numbered frame is `main''s
144: frame.
145:
146: `frame ADDR'
147: Select the frame at address ADDR. This is useful mainly if the
148: chaining of stack frames has been damaged by a bug, making it
149: impossible for GDB to assign numbers properly to all frames. In
150: addition, this can be useful when the program has multiple stacks and
151: options between them.
152:
153: `up N'
154: Select the frame N frames up from the frame previously selected.
155: For positive numbers N, this advances toward the outermost
156: frame, to higher frame numbers, to frames that have existed longer.
157: N defaults to one.
158:
159: `down N'
160: Select the frame N frames down from the frame previously
161: selected. For positive numbers N, this advances toward the
162: innermost frame, to lower frame numbers, to frames that were created
163: more recently. N defaults to one.
164:
165: All of these commands end by printing some information on the frame that
166: has been selected: the frame number, the function name, the arguments, the
167: source file and line number of execution in that frame, and the text of
168: that source line. For example:
169:
170: #3 main (argc=3, argv=??, env=??) at main.c, line 67
171: 67 read_input_file (argv[i]);
172:
173: After such a printout, the `list' command with no arguments will print
174: ten lines centered on the point of execution in the frame. *Note List::.
175:
176:
177: File: gdb Node: Frame Info, Prev: Selection, Up: Stack
178:
179: Information on a Frame
180: ======================
181:
182: There are several other commands to print information about the selected
183: stack frame.
184:
185: `frame'
186: This command prints a brief description of the selected stack frame.
187: It can be abbreviated `f'. With an argument, this command is
188: used to select a stack frame; with no argument, it does not change
189: which frame is selected, but still prints the same information.
190:
191: `info frame'
192: This command prints a verbose description of the selected stack frame,
193: including the address of the frame, the addresses of the next frame in
194: (called by this frame) and the next frame out (caller of this frame),
195: the address of the frame's arguments, the program counter saved in it
196: (the address of execution in the caller frame), and which registers
197: were saved in the frame. The verbose description is useful when
198: something has gone wrong that has made the stack format fail to fit
199: the usual conventions.
200:
201: `info frame ADDR'
202: Print a verbose description of the frame at address ADDR,
203: without selecting that frame. The selected frame remains unchanged by
204: this command.
205:
206: `info args'
207: Print the arguments of the selected frame, each on a separate line.
208:
209: `info locals'
210: Print the local variables of the selected frame, each on a separate
211: line. These are all variables declared static or automatic within all
212: program blocks that execution in this frame is currently inside of.
213:
214:
215: File: gdb Node: Source, Prev: Stack, Up: Top, Next: Data
216:
217: Examining Source Files
218: **********************
219:
220: GDB knows which source files your program was compiled from, and
221: can print parts of their text. When your program stops, GDB
222: spontaneously prints the line it stopped in. Likewise, when you
223: select a stack frame (*Note Selection::), GDB prints the line
224: which execution in that frame has stopped in. You can also
225: print parts of source files by explicit command.
226:
227: * Menu:
228:
229: * List:: Using the `list' command to print source files.
230: * Search:: Commands for searching source files.
231: * Source Path:: Specifying the directories to search for source files.
232:
233:
234: File: gdb Node: List, Prev: Source, Up: Source, Next: Search
235:
236: Printing Source Lines
237: =====================
238:
239: To print lines from a source file, use the `list' command
240: (abbreviated `l'). There are several ways to specify what part
241: of the file you want to print.
242:
243: Here are the forms of `list' command most commonly used:
244:
245: `list LINENUM'
246: Print ten lines centered around line number LINENUM in the
247: current source file.
248:
249: `list FUNCTION'
250: Print ten lines centered around the beginning of function
251: FUNCTION.
252:
253: `list'
254: Print ten more lines. If the last lines printed were printed with a
255: `list' command, this prints ten lines following the last lines
256: printed; however, if the last line printed was a solitary line printed
257: as part of displaying a stack frame (*Note Stack::), this prints ten
258: lines centered around that line.
259:
260: `list -'
261: Print ten lines just before the lines last printed.
262:
263: Repeating a `list' command with RET discards the argument,
264: so it is equivalent to typing just `list'. This is more useful
265: than listing the same lines again. An exception is made for an
266: argument of `-'; that argument is preserved in repetition so that
267: each repetition moves up in the file.
268:
269: In general, the `list' command expects you to supply zero, one or two
270: "linespecs". Linespecs specify source lines; there are several ways
271: of writing them but the effect is always to specify some source line.
272: Here is a complete description of the possible arguments for `list':
273:
274: `list LINESPEC'
275: Print ten lines centered around the line specified by LINESPEC.
276:
277: `list FIRST,LAST'
278: Print lines from FIRST to LAST. Both arguments are
279: linespecs.
280:
281: `list ,LAST'
282: Print ten lines ending with LAST.
283:
284: `list FIRST,'
285: Print ten lines starting with FIRST.
286:
287: `list +'
288: Print ten lines just after the lines last printed.
289:
290: `list -'
291: Print ten lines just before the lines last printed.
292:
293: `list'
294: As described in the preceding table.
295:
296: Here are the ways of specifying a single source line---all the
297: kinds of linespec.
298:
299: LINENUM
300: Specifies line LINENUM of the current source file.
301: When a `list' command has two linespecs, this refers to
302: the same source file as the first linespec.
303:
304: +OFFSET
305: Specifies the line OFFSET lines after the last line printed.
306: When used as the second linespec in a `list' command that has
307: two, this specifies the line OFFSET lines down from the
308: first linespec.
309:
310: -OFFSET
311: Specifies the line OFFSET lines before the last line printed.
312:
313: FILENAME:LINENUM
314: Specifies line LINENUM in the source file FILENAME.
315:
316: FUNCTION
317: Specifies the line of the open-brace that begins the body of the
318: function FUNCTION.
319:
320: FILENAME:FUNCTION
321: Specifies the line of the open-brace that begins the body of the
322: function FUNCTION in the file FILENAME. The file name is
323: needed with a function name only for disambiguation of identically
324: named functions in different source files.
325:
326: *ADDRESS
327: Specifies the line containing the program address ADDRESS.
328: ADDRESS may be any expression.
329:
330: One other command is used to map source lines to program addresses.
331:
332: `info line LINENUM'
333: Print the starting and ending addresses of the compiled code for
334: source line LINENUM.
335:
336: The default examine address for the `x' command is changed to the
337: starting address of the line, so that `x/i' is sufficient to
338: begin examining the machine code (*Note Memory::). Also, this address
339: is saved as the value of the convenience variable `$_'
340: (*Note Convenience Vars::).
341:
342:
343: File: gdb Node: Search, Prev: List, Up: Source, Next: Source Path
344:
345: Searching Source Files
346: ======================
347:
348: There are two commands for searching through the current source file for a
349: regular expression.
350:
351: The command `forward-search REGEXP' checks each line, starting
352: with the one following the last line listed, for a match for REGEXP.
353: It lists the line that is found. You can abbreviate the command name
354: as `fo'.
355:
356: The command `reverse-search REGEXP' checks each line, starting
357: with the one before the last line listed and going backward, for a match
358: for REGEXP. It lists the line that is found. You can abbreviate
359: this command with as little as `rev'.
360:
361:
362: File: gdb Node: Source Path, Prev: Search, Up: Source
363:
364: Specifying Source Directories
365: =============================
366:
367: Executable programs do not record the directories of the source files they
368: were compiled from, just the names. GDB remembers a list of directories to
369: search for source files; this is called the "source path". Each time
370: GDB wants a source file, it tries all the directories in the list, in the
371: order they are present in the list, until it finds a file with the desired
372: name.
373:
374: When you start GDB, its source path contains just the current working
375: directory. To add other directories, use the `directory' command.
376: Note that the search path for executable files and the working directory
377: are not used for finding source files.
378:
379: `directory DIRNAME'
380: Add directory DIRNAME to the end of the source path.
381:
382: `directory'
383: Reset the source path to just the current working directory of GDB.
384: This requires confirmation.
385:
386: `directory' with no argument can cause source files previously
387: found by GDB to be found in a different directory. To make this work
388: correctly, this command also clears out the tables GDB maintains
389: about the source files it has already found.
390:
391: `info directories'
392: Print the source path: show which directories it contains.
393:
394: Because the `directory' command adds to the end of the source path,
395: it does not affect any file that GDB has already found. If the source
396: path contains directories that you do not want, and these directories
397: contain misleading files with names matching your source files, the
398: way to correct the situation is as follows:
399:
400: 1. Choose the directory you want at the beginning of the source path.
401: Use the `cd' command to make that the current working directory.
402:
403: 2. Use `directory' with no argument to reset the source path to just
404: that directory.
405:
406: 3. Use `directory' with suitable arguments to add any other
407: directories you want in the source path.
408:
409:
410: File: gdb Node: Data, Prev: Source, Up: Top, Next: Symbols
411:
412: Examining Data
413: **************
414:
415: The usual way of examining data in your program is with the `print'
416: command (abbreviated `p'). It evaluates and prints the value of any
417: valid expression of the language the program is written in (for now, C).
418: You type
419:
420: print EXP
421:
422: where EXP is any valid expression, and the value of EXP
423: is printed in a format appropriate to its data type.
424:
425: A more low-level way of examining data is with the `x' command.
426: It examines data in memory at a specified address and prints it in a
427: specified format.
428:
429: * Menu:
430:
431: * Expressions:: Expressions that can be computed and printed.
432: * Variables:: Using your program's variables in expressions.
433: * Assignment:: Setting your program's variables.
434: * Arrays:: Examining part of memory as an array.
435: * Formats:: Specifying formats for printing values.
436: * Memory:: Examining memory explicitly.
437: * Auto Display:: Printing certain expressions whenever program stops.
438: * Value History:: Referring to values previously printed.
439: * Convenience Vars:: Giving names to values for future reference.
440: * Registers:: Referring to and storing in machine registers.
441:
442:
443: File: gdb Node: Expressions, Prev: Data, Up: Data, Next: Variables
444:
445: Expressions
446: ===========
447:
448: Many different GDB commands accept an expression and compute its value.
449: Any kind of constant, variable or operator defined by the programming
450: language you are using is legal in an expression in GDB. This includes
451: conditional expressions, function calls, casts and string constants.
452:
453: Casts are supported in all languages, not just in C, because it is so
454: useful to cast a number into a pointer so as to examine a structure
455: at that address in memory.
456:
457: GDB supports three kinds of operator in addition to those of programming
458: languages:
459:
460: `@'
461: `@' is a binary operator for treating parts of memory as arrays.
462: *Note Arrays::, for more information.
463:
464: `::'
465: `::' allows you to specify a variable in terms of the file or
466: function it is defined in. *Note Variables::.
467:
468: `{TYPE} ADDR'
469: Refers to an object of type TYPE stored at address ADDR in memory.
470: ADDR may be any expression whose value is an integer or pointer (but
471: parentheses are required around nonunary operators, just as in a
472: cast). This construct is allowed regardless of what kind of data is
473: officially supposed to reside at ADDR.
474:
475:
476: File: gdb Node: Variables, Prev: Expressions, Up: Data, Next: Arrays
477:
478: Program Variables
479: =================
480:
481: The most common kind of expression to use is the name of a variable
482: in your program.
483:
484: Variables in expressions are understood in the selected stack frame
485: (*Note Selection::); they must either be global (or static) or be visible
486: according to the scope rules of the programming language from the point of
487: execution in that frame. This means that in the function
488:
489: foo (a)
490: int a;
491: {
492: bar (a);
493: {
494: int b = test ();
495: bar (b);
496: }
497: }
498:
499: the variable `a' is usable whenever the program is executing
500: within the function `foo', but the variable `b' is visible
501: only while the program is executing inside the block in which `b'
502: is declared.
503:
504:
505: File: gdb Node: Arrays, Prev: Variables, Up: Data, Next: Formats
506:
507: Artificial Arrays
508: =================
509:
510: It is often useful to print out several successive objects of the
511: same type in memory; a section of an array, or an array of
512: dynamically determined size for which only a pointer exists in the
513: program.
514:
515: This can be done by constructing an "artificial array" with the
516: binary operator `@'. The left operand of `@' should be
517: the first element of the desired array, as an individual object.
518: The right operand should be the length of the array. The result is
519: an array value whose elements are all of the type of the left argument.
520: The first element is actually the left argument; the second element
521: comes from bytes of memory immediately following those that hold the
522: first element, and so on. Here is an example. If a program says
523:
524: int *array = (int *) malloc (len * sizeof (int));
525:
526: you can print the contents of `array' with
527:
528: p *array@len
529:
530: The left operand of `@' must reside in memory. Array values made
531: with `@' in this way behave just like other arrays in terms of
532: subscripting, and are coerced to pointers when used in expressions.
533: (It would probably appear in an expression via the value history,
534: after you had printed it out.)
535:
536:
537: File: gdb Node: Formats, Prev: Arrays, Up: Data, Next: Memory
538:
539: Formats
540: =======
541:
542: GDB normally prints all values according to their data types. Sometimes
543: this is not what you want. For example, you might want to print a number
544: in hex, or a pointer in decimal. Or you might want to view data in memory
545: at a certain address as a character string or an instruction. These things
546: can be done with "output formats".
547:
548: The simplest use of output formats is to say how to print a value
549: already computed. This is done by starting the arguments of the
550: `print' command with a slash and a format letter. The format
551: letters supported are:
552:
553: `x'
554: Regard the bits of the value as an integer, and print the integer in
555: hexadecimal.
556:
557: `d'
558: Print as integer in signed decimal.
559:
560: `u'
561: Print as integer in unsigned decimal.
562:
563: `o'
564: Print as integer in octal.
565:
566: `a'
567: Print as an address, both absolute in hex and then relative
568: to a symbol defined as an address below it.
569:
570: `c'
571: Regard as an integer and print it as a character constant.
572:
573: `f'
574: Regard the bits of the value as a floating point number and print
575: using typical floating point syntax.
576:
577: For example, to print the program counter in hex (*Note Registers::), type
578:
579: p/x $pc
580:
581: Note that no space is required before the slash; this is because command
582: names in GDB cannot contain a slash.
583:
584: To reprint the last value in the value history with a different format,
585: you can use the `print' command with just a format and no
586: expression. For example, `p/x' reprints the last value in hex.
587:
588:
589: File: gdb Node: Memory, Prev: Formats, Up: Data, Next: Auto Display
590:
591: Examining Memory
592: ----------------
593:
594: The command `x' (for `examine') can be used to examine memory under
595: explicit control of formats, without reference to the program's data types.
596:
597: `x' is followed by a slash and an output format specification,
598: followed by an expression for an address. The expression need not have
599: a pointer value (though it may); it is used as an integer, as the
600: address of a byte of memory.
601:
602: The output format in this case specifies both how big a unit of memory
603: to examine and how to print the contents of that unit. It is done
604: with one or two of the following letters:
605:
606: These letters specify just the size of unit to examine:
607:
608: `b'
609: Examine individual bytes.
610:
611: `h'
612: Examine halfwords (two bytes each).
613:
614: `w'
615: Examine words (four bytes each).
616:
617: Many assemblers and cpu designers still use `word' for a 16-bit quantity,
618: as a holdover from specific predecessor machines of the 1970's that really
619: did use two-byte words. But more generally the term `word' has always
620: referred to the size of quantity that a machine normally operates on and
621: stores in its registers. This is 32 bits for all the machines that GNU
622: runs on.
623:
624: `g'
625: Examine giant words (8 bytes).
626:
627: These letters specify just the way to print the contents:
628:
629: `x'
630: Print as integers in unsigned hexadecimal.
631:
632: `d'
633: Print as integers in signed decimal.
634:
635: `u'
636: Print as integers in unsigned decimal.
637:
638: `o'
639: Print as integers in unsigned octal.
640:
641: `a'
642: Print as an address, both absolute in hex and then relative
643: to a symbol defined as an address below it.
644:
645: `c'
646: Print as character constants.
647:
648: `f'
649: Print as floating point. This works only with sizes `w' and
650: `g'.
651:
652: `s'
653: Print a null-terminated string of characters. The specified unit size
654: is ignored; instead, the unit is however many bytes it takes to reach
655: a null character (including the null character).
656:
657: `i'
658: Print a machine instruction in assembler syntax (or nearly). The
659: specified unit size is ignored; the number of bytes in an instruction
660: varies depending on the type of machine, the opcode and the addressing
661: modes used.
662:
663: If either the manner of printing or the size of unit fails to be specified,
664: the default is to use the same one that was used last. If you don't want
665: to use any letters after the slash, you can omit the slash as well.
666:
667: You can also omit the address to examine. Then the address used is
668: just after the last unit examined. This is why string and instruction
669: formats actually compute a unit-size based on the data: so that the
670: next string or instruction examined will start in the right place.
671: The `print' command sometimes sets the default address for
672: the `x' command; when the value printed resides in memory, the
673: default is set to examine the same location. `info line' also
674: sets the default for `x', to the address of the start of the
675: machine code for the specified line and `info breakpoints' sets
676: it to the address of the last breakpoint listed.
677:
678: When you use RET to repeat an `x' command, it does not repeat
679: exactly the same: the address specified previously (if any) is ignored, so
680: that the repeated command examines the successive locations in memory
681: rather than the same ones.
682:
683: You can examine several consecutive units of memory with one command by
684: writing a repeat-count after the slash (before the format letters, if any).
685: The repeat count must be a decimal integer. It has the same effect as
686: repeating the `x' command that many times except that the output may
687: be more compact with several units per line.
688:
689: x/10i $pc
690:
691: Prints ten instructions starting with the one to be executed next in the
692: selected frame. After doing this, you could print another ten following
693: instructions with
694:
695: x/10
696:
697: in which the format and address are allowed to default.
698:
699: The addresses and contents printed by the `x' command are not put in
700: the value history because there is often too much of them and they would
701: get in the way. Instead, GDB makes these values available for subsequent
702: use in expressions as values of the convenience variables `$_' and
703: `$__'.
704:
705: After an `x' command, the last address examined is available for use
706: in expressions in the convenience variable `$_'. The contents of that
707: address, as examined, are available in the convenience variable `$__'.
708:
709: If the `x' command has a repeat count, the address and contents saved
710: are from the last memory unit printed; this is not the same as the last
711: address printed if several units were printed on the last line of output.
712:
713:
714: File: gdb Node: Auto Display, Prev: Memory, Up: Data, Next: Value History
715:
716: Automatic Display
717: =================
718:
719: If you find that you want to print the value of an expression frequently
720: (to see how it changes), you might want to add it to the "automatic
721: display list" so that GDB will print its value each time the program stops.
722: Each expression added to the list is given a number to identify it;
723: to remove an expression from the list, you specify that number.
724: The automatic display looks like this:
725:
726: 2: foo = 38
727: 3: bar[5] = (struct hack *) 0x3804
728:
729: showing item numbers, expressions and their current values.
730:
731: `display EXP'
732: Add the expression EXP to the list of expressions to display
733: each time the program stops.
734:
735: `display/FMT EXP'
736: For FMT specifying only a display format and not a size or
737: count, add the expression EXP to the auto-display list but
738: arranges to display it each time in the specified format FMT.
739:
740: `display/FMT ADDR'
741: For FMT `i' or `s', or including a unit-size or a
742: number of units, add the expression ADDR as a memory address to
743: be examined each time the program stops. Examining means in effect
744: doing `x/FMT ADDR'. *Note Memory::.
745:
746: `undisplay N'
747: Remove item number N from the list of expressions to display.
748:
749: `display'
750: Display the current values of the expressions on the list, just as is
751: done when the program stops.
752:
753: `info display'
754: Print the list of expressions to display automatically, each one
755: with its item number, but without showing the values.
756:
757:
758: File: gdb Node: Value History, Prev: Auto Display, Up: Data, Next: Convenience Vars
759:
760: Value History
761: =============
762:
763: Every value printed by the `print' command is saved for the entire
764: session in GDB's "value history" so that you can refer to it in
765: other expressions.
766:
767: The values printed are given "history numbers" for you to refer to them
768: by. These are successive integers starting with 1. `print' shows you
769: the history number assigned to a value by printing `$N = '
770: before the value; here N is the history number.
771:
772: To refer to any previous value, use `$' followed by the value's
773: history number. The output printed by `print' is designed to remind
774: you of this. Just `$' refers to the most recent value in the history,
775: and `$$' refers to the value before that.
776:
777: For example, suppose you have just printed a pointer to a structure and
778: want to see the contents of the structure. It suffices to type
779:
780: p *$
781:
782: If you have a chain of structures where the component `next' points
783: to the next one, you can print the contents of the next one with
784:
785: p *$.next
786:
787: It might be useful to repeat this command many times by typing RET.
788:
789: Note that the history records values, not expressions. If the value of
790: `x' is 4 and you type
791:
792: print x
793: set x=5
794:
795: then the value recorded in the value history by the `print' command
796: remains 4 even though `x''s value has changed.
797:
798: `info history'
799: Print the last ten values in the value history, with their item
800: numbers. This is like `p $$9' repeated ten times, except that
801: `info history' does not change the history.
802:
803: `info history N'
804: Print ten history values centered on history item number N.
805:
806:
807: File: gdb Node: Convenience Vars, Prev: Value History, Up: Data, Next: Registers
808:
809: Convenience Variables
810: =====================
811:
812: GDB provides "convenience variables" that you can use within GDB to
813: hold on to a value and refer to it later. These variables exist entirely
814: within GDB; they are not part of your program, and setting a convenience
815: variable has no effect on further execution of your program. That's why
816: you can use them freely.
817:
818: Convenience variables have names starting with `$'. Any name starting
819: with `$' can be used for a convenience variable, unless it is one of
820: the predefined set of register names (*Note Registers::).
821:
822: You can save a value in a convenience variable with an assignment
823: expression, just as you would set a variable in your program. Example:
824:
825: set $foo = *object_ptr
826:
827: would save in `$foo' the value contained in the object pointed to by
828: `object_ptr'.
829:
830: Using a convenience variable for the first time creates it; but its value
831: is `void' until you assign a new value. You can alter the value with
832: another assignment at any time.
833:
834: Convenience variables have no fixed types. You can assign a convenience
835: variable any type of value, even if it already has a value of a different
836: type. The convenience variable as an expression has whatever type its
837: current value has.
838:
839: `info convenience'
840: Print a list of convenience variables used so far, and their values.
841: Abbreviated `i con'.
842:
843: One of the ways to use a convenience variable is as a counter to be
844: incremented or a pointer to be advanced. For example:
845:
846: set $i = 0
847: print bar[$i++]->contents
848: ...repeat that command by typing RET.
849:
850: Some convenience variables are created automatically by GDB and given
851: values likely to be useful.
852:
853: `$_'
854: The variable `$_' is automatically set by the `x' command to
855: the last address examined (*Note Memory::). Other commands which
856: provide a default address for `x' to examine also set `$_'
857: to that address; these commands include `info line' and `info
858: breakpoint'.
859:
860: `$__'
861: The variable `$__' is automatically set by the `x' command
862: to the value found in the last address examined.
863:
864:
865: File: gdb Node: Registers, Prev: Convenience Vars, Up: Data
866:
867: Registers
868: =========
869:
870: Machine register contents can be referred to in expressions as variables
871: with names starting with `$'. The names of registers are different
872: for each machine; use `info registers' to see the names used on your
873: machine. The names `$pc' and `$sp' are used on all machines for
874: the program counter register and the stack pointer. Often `$fp' is
875: used for a register that contains a pointer to the current stack frame.
876:
877: GDB always considers the contents of an ordinary register as an integer
878: when the register is examined in this way. Programs can store floating
879: point values in registers also, but there is currently no GDB command
880: to examine a specified register in floating point. (However, if the
881: variable in your program which is stored in the register is a floating
882: point variable, you can see the floating point value by examining
883: the variable.)
884:
885: Some machines have special floating point registers. GDB considers these
886: registers' values as floating point when you examine them explicitly.
887:
888: Some registers have distinct "raw" and "virtual" data formats. This
889: means that the data format in which the register contents are saved by the
890: operating system is not the same one that your program normally sees. For
891: example, the registers of the 68881 floating point coprocessor are always
892: saved in "extended" format, but all C programs expect to work with
893: "double" format. In such cases, GDB normally works with the virtual
894: format only (the format that makes sense for your program), but the
895: `info registers' command prints the data in both formats.
896:
897: Register values are relative to the selected stack frame
898: (*Note Selection::). This means that you get the value that the register
899: would contain if all stack frames farther in were exited and their saved
900: registers restored. In order to see the real contents of all registers,
901: you must select the innermost frame (with `frame 0').
902:
903: Some registers are never saved (typically those numbered zero or one)
904: because they are used for returning function values; for these registers,
905: relativization makes no difference.
906:
907: `info registers'
908: Print the names and relativized values of all registers.
909:
910: `info registers REGNAME'
911: Print the relativized value of register REGNAME. REGNAME
912: may be any register name valid on the machine you are using, with
913: or without the initial `$'.
914:
915:
916: Examples
917: --------
918:
919: You could print the program counter in hex with
920:
921: p/x $pc
922:
923: or print the instruction to be executed next with
924:
925: x/i $pc
926:
927: or add four to the stack pointer with
928:
929: set $sp += 4
930:
931: The last is a way of removing one word from the stack, on machines where
932: stacks grow downward in memory (most machines, nowadays). This assumes
933: that the innermost stack frame is selected. Setting `$sp' is
934: not allowed when other stack frames are selected.
935:
936:
937: File: gdb Node: Symbols, Prev: Data, Up: Top, Next: Altering
938:
939: Examining the Symbol Table
940: **************************
941:
942: The commands described in this section allow you to make inquiries for
943: information about the symbols (names of variables, functions and types)
944: defined in your program. This information is found by GDB in the symbol
945: table loaded by the `symbol-file' command; it is inherent in the text
946: of your program and does not change as the program executes.
947:
948: `whatis EXP'
949: Print the data type of expression EXP. EXP is not
950: actually evaluated, and any side-effecting operations (such as
951: assignments or function calls) inside it do not take place.
952:
953: `whatis'
954: Print the data type of `$', the last value in the value history.
955:
956: `info address SYMBOL'
957: Describe where the data for SYMBOL is stored. For register
958: variables, this says which register. For other automatic variables,
959: this prints the stack-frame offset at which the variable is always
960: stored. Note the contrast with `print &SYMBOL', which does
961: not work at all for register variables and for automatic variables
962: prints the exact address of the current instantiation of the variable.
963:
964: `ptype TYPENAME'
965: Print a description of data type TYPENAME. TYPENAME may be the name
966: of a type, or for C code it may have the form `struct STRUCT-TAG',
967: `union UNION-TAG' or `enum ENUM-TAG'.
968:
969: `info sources'
970: Print the names of all source files in the program for which there
971: is debugging information.
972:
973: `info functions'
974: Print the names and data types of all defined functions.
975:
976: `info functions REGEXP'
977: Print the names and data types of all defined functions
978: whose names contain a match for regular expression REGEXP.
979: Thus, `info fun step' finds all functions whose names
980: include `step'; `info fun ^step' finds those whose names
981: start with `step'.
982:
983: `info variables'
984: Print the names and data types of all variables that are declared
985: outside of functions.
986:
987: `info variables REGEXP'
988: Print the names and data types of all variables, declared outside of
989: functions, whose names contain a match for regular expression
990: REGEXP.
991:
992: `info types'
993: Print all data types that are defined in the program.
994:
995: `info types REGEXP'
996: Print all data types that are defined in the program whose names
997: contain a match for regular expression REGEXP.
998:
999: `printsyms FILENAME'
1000: Write a complete dump of the debugger's symbol data into the
1001: file FILENAME.
1002:
1003:
1004: File: gdb Node: Altering, Prev: Symbols, Up: Top, Next: Sequences
1005:
1006: Altering Execution
1007: ******************
1008:
1009: There are several ways to alter the execution of your program with GDB
1010: commands.
1011:
1012: * Menu:
1013:
1014: * Assignment:: Altering variable values or memory contents.
1015: * Jumping:: Altering control flow.
1016: * Signaling:: Making signals happen in the program.
1017: * Returning:: Making a function return prematurely.
1018:
1019:
1020: File: gdb Node: Assignment, Prev: Altering, Up: Altering, Next: Jumping
1021:
1022: Assignment to Variables
1023: =======================
1024:
1025: To alter the value of a variable, evaluate an assignment expression.
1026: For example,
1027:
1028: print x=4
1029:
1030: would store the value 4 into the variable `x', and then print
1031: the value of the assignment expression (which is 4).
1032:
1033: If you are not interested in seeing the value of the assignment, use the
1034: `set' command instead of the `print' command. `set' is
1035: really the same as `print' except that the expression's value is not
1036: printed and is not put in the value history (*Note Value History::). The
1037: expression is evaluated only for side effects.
1038:
1039: GDB allows more implicit conversions in assignments than C does; you can
1040: freely store an integer value into a pointer variable or vice versa, and
1041: any structure can be converted to any other structure that is the same
1042: length or shorter.
1043:
1044: In C, all the other assignment operators such as `+=' and `++'
1045: are supported as well.
1046:
1047: To store into arbitrary places in memory, use the `{...}'
1048: construct to generate a value of specified type at a specified address
1049: (*Note Expressions::). For example,
1050:
1051: set {int}0x83040 = 4
1052:
1053:
1054: File: gdb Node: Jumping, Prev: Assignment, Up: Altering, Next: Signaling
1055:
1056: Continuing at a Different Address
1057: =================================
1058:
1059: `jump LINENUM'
1060: Resume execution at line number LINENUM. Execution may stop
1061: immediately if there is a breakpoint there.
1062:
1063: The `jump' command does not change the current stack frame, or
1064: the stack pointer, or the contents of any memory location or any
1065: register other than the program counter. If line LINENUM is in
1066: a different function from the one currently executing, the results may
1067: be wild if the two functions expect different patterns of arguments or
1068: of local variables. For his reason, the `jump' command requests
1069: confirmation if the specified line is not in the function currently
1070: executing. However, even wild results are predictable based on
1071: changing the program counter.
1072:
1073: `jump *ADDRESS'
1074: Resume execution at the instruction at address ADDRESS.
1075:
1076: A similar effect can be obtained by storing a new value into the register
1077: `$pc', but not exactly the same.
1078:
1079: set $pc = 0x485
1080:
1081: specifies the address at which execution will resume, but does not resume
1082: execution. That does not happen until you use the `cont' command or a
1083: stepping command (*Note Stepping::).
1084:
1085:
1086: File: gdb Node: Signaling, Prev: Jumping, Up: Altering, Next: Returning
1087:
1088: Giving the Program a Signal
1089: ===========================
1090:
1091: `signal SIGNALNUM'
1092: Resume execution where the program stopped, but give it immediately
1093: the signal number SIGNALNUM.
1094:
1095: Alternatively, if SIGNALNUM is zero, continue execution and give
1096: no signal. This may be useful when the program has received a signal
1097: and the `cont' command would allow the program to see that
1098: signal.
1099:
1100:
1101: File: gdb Node: Returning, Prev: Signaling, Up: Altering
1102:
1103: Returning from a Function
1104: =========================
1105:
1106: You can make any function call return immediately, using the `return'
1107: command.
1108:
1109: First select the stack frame that you wish to return from
1110: (*Note Selection::). Then type the `return' command. If you wish to
1111: specify the value to be returned, give that as an argument.
1112:
1113: This pops the selected stack frame (and any other frames inside of it),
1114: leaving its caller as the innermost remaining frame. That frame becomes
1115: selected. The specified value is stored in the registers used for
1116: returning values of functions.
1117:
1118: The `return' command does not resume execution; it leaves the program
1119: stopped in the state that would exist if the function had just returned.
1120: Contrast this with the `finish' command (*Note Stepping::), which
1121: resumes execution until the selected stack frame returns naturally.
1122:
1123:
1124: File: gdb Node: Sequences, Prev: Altering, Up: Top, Next: Emacs
1125:
1126: Canned Sequences of Commands
1127: ****************************
1128:
1129: GDB provides two ways to store sequences of commands for execution as a
1130: unit: user-defined commands and command files.
1131:
1132: * Menu:
1133:
1134: * Define:: User-defined commands.
1135: * Command Files:: Command files.
1136: * Output:: Controlled output commands useful in
1137: user-defined commands and command files.
1138:
1139:
1140: File: gdb Node: Define, Prev: Sequences, Up: Sequences, Next: Command Files
1141:
1142: User-Defined Commands
1143: =====================
1144:
1145: A "user-defined command" is a sequence of GDB commands to which you
1146: assign a new name as a command. This is done with the `define'
1147: command.
1148:
1149: `define COMMANDNAME'
1150: Define a command named COMMANDNAME. If there is already a command
1151: by that name, you are asked to confirm that you want to redefine it.
1152:
1153: The definition of the command is made up of other GDB command lines,
1154: which are given following the `define' command. The end of these
1155: commands is marked by a line containing `end'.
1156:
1157: `document COMMANDNAME'
1158: Give documentation to the user-defined command COMMANDNAME. The
1159: command COMMANDNAME must already be defined. This command reads
1160: lines of documentation just as `define' reads the lines of the
1161: command definition. After the `document' command is finished,
1162: `help' on command COMMANDNAME will print the documentation
1163: you have specified.
1164:
1165: You may use the `document' command again to change the
1166: documentation of a command. Redefining the command with `define'
1167: does not change the documentation.
1168:
1169: User-defined commands do not take arguments. When they are executed, the
1170: commands of the definition are not printed. An error in any command
1171: stops execution of the user-defined command.
1172:
1173: Commands that would ask for confirmation if used interactively proceed
1174: without asking when used inside a user-defined command. Many GDB commands
1175: that normally print messages to say what they are doing omit the messages
1176: when used in user-defined command.
1177:
1178:
1179: File: gdb Node: Command Files, Prev: Define, Up: Sequences, Next: Output
1180:
1181: Command Files
1182: =============
1183:
1184: A command file for GDB is a file of lines that are GDB commands. Comments
1185: (lines starting with `#') may also be included. An empty line in a
1186: command file does nothing; it does not mean to repeat the last command, as
1187: it would from the terminal.
1188:
1189: When GDB starts, it automatically executes its "init files", command
1190: files named `.gdbinit'. GDB reads the init file (if any) in your home
1191: directory and then the init file (if any) in the current working
1192: directory. (The init files are not executed if the `-nx' option
1193: is given.) You can also request the execution of a command file with the
1194: `source' command:
1195:
1196: `source FILENAME'
1197: Execute the command file FILENAME.
1198:
1199: The lines in a command file are executed sequentially. They are not
1200: printed as they are executed. An error in any command terminates execution
1201: of the command file.
1202:
1203: Commands that would ask for confirmation if used interactively proceed
1204: without asking when used in a command file. Many GDB commands that
1205: normally print messages to say what they are doing omit the messages
1206: when used in a command file.
1207:
1208:
1209: File: gdb Node: Output, Prev: Command Files, Up: Sequences
1210:
1211: Commands for Controlled Output
1212: ==============================
1213:
1214: During the execution of a command file or a user-defined command, the only
1215: output that appears is what is explicitly printed by the commands of the
1216: definition. This section describes three commands useful for generating
1217: exactly the output you want.
1218:
1219: `echo TEXT'
1220: Print TEXT. Nonprinting characters can be included in
1221: TEXT using C escape sequences, such as `\n' to print a
1222: newline. No newline will be printed unless you specify one.
1223:
1224: A backslash at the end of TEXT is ignored. It is useful for
1225: outputting a string ending in spaces, since trailing spaces are
1226: trimmed from all arguments. A backslash at the beginning preserves
1227: leading spaces in the same way, because `\ ' as an escape
1228: sequence stands for a space. Thus, to print ` and foo = ', do
1229:
1230: echo \ and foo = \
1231:
1232: `output EXPRESSION'
1233: Print the value of EXPRESSION and nothing but that value: no
1234: newlines, no `$NN = '. The value is not entered in the
1235: value history either.
1236:
1237: `output/FMT EXPRESSION'
1238: Print the value of EXPRESSION in format FMT.
1239: *Note Formats::, for more information.
1240:
1241: `printf STRING, EXPRESSIONS...'
1242: Print the values of the EXPRESSIONS under the control of
1243: STRING. The EXPRESSIONS are separated by commas and may
1244: be either numbers or pointers. Their values are printed as specified
1245: by STRING, exactly as if the program were to execute
1246:
1247: printf (STRING, EXPRESSIONS...);
1248:
1249: For example, you can print two values in hex like this:
1250:
1251: printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
1252:
1253: The only backslash-escape sequences that you can use in the string are
1254: the simple ones that consist of backslash followed by a letter.
1255:
1256:
1257: File: gdb Node: Emacs, Prev: Sequences, Up: Top, Next: Remote
1258:
1259: Using GDB under GNU Emacs
1260: *************************
1261:
1262: A special interface allows you to use GNU Emacs to view (and
1263: edit) the source files for the program you are debugging with
1264: GDB.
1265:
1266: To use this interface, use the command `M-x gdb' in Emacs.
1267: Give the executable file you want to debug as an argument. This
1268: command starts a GDB process as a subprocess of Emacs, with input
1269: and output through a newly created Emacs buffer.
1270:
1271: Using this GDB process is just like using GDB normally except for two things:
1272:
1273: * All "terminal" input and output goes through the Emacs buffer. This
1274: applies both to GDB commands and their output, and to the input and
1275: output done by the program you are debugging.
1276:
1277: This is useful because it means that you can copy the text of previous
1278: commands and input them again; you can even use parts of the output
1279: in this way.
1280:
1281: All the facilities of Emacs's Shell mode are available for this purpose.
1282:
1283: * GDB displays source code through Emacs. Each time GDB displays a
1284: stack frame, Emacs automatically finds the source file for that frame
1285: and puts an arrow (`=>') at the left margin of the current line.
1286:
1287: Explicit GDB `list' or search commands still produce output as
1288: usual, but you probably will have no reason to use them.
1289:
1290: In the GDB I/O buffer, you can use these special Emacs commands:
1291:
1292: `M-s'
1293: Execute to another source line, like the GDB `step' command.
1294:
1295: `M-n'
1296: Execute to next source line in this function, skipping all function
1297: calls, like the GDB `next' command.
1298:
1299: `M-i'
1300: Execute one instruction, like the GDB `stepi' command.
1301:
1302: `M-u'
1303: Move up one stack frame (and display that frame's source file in
1304: Emacs), like the GDB `up' command.
1305:
1306: `M-d'
1307: Move down one stack frame (and display that frame's source file in
1308: Emacs), like the GDB `down' command. (This means that you cannot
1309: delete words in the usual fashion in the GDB buffer; I am guessing you
1310: won't often want to do that.)
1311:
1312: `C-c C-f'
1313: Execute until exit from the selected stack frame, like the GDB
1314: `finish' command.
1315:
1316: In any source file, the Emacs command `C-x SPC' (`gdb-break')
1317: tells GDB to set a breakpoint on the source line point is on.
1318:
1319: The source files displayed in Emacs are in ordinary Emacs buffers
1320: which are visiting the source files in the usual way. You can edit
1321: the files with these buffers if you wish; but keep in mind that GDB
1322: communicates with Emacs in terms of line numbers. If you add or
1323: delete lines from the text, the line numbers that GDB knows will cease
1324: to correspond properly to the code.
1325:
1326:
1327: File: gdb Node: Remote, Prev: Emacs, Up: Top, Next: Commands
1328:
1329: Remote Kernel Debugging
1330: ***********************
1331:
1332: GDB has a special facility for debugging a remote machine via a serial
1333: connection. This can be used for kernel debugging.
1334:
1335: The program to be debugged on the remote machine needs to contain a
1336: debugging device driver which talks to GDB over the serial line using the
1337: protocol described below. The same version of GDB that is used ordinarily
1338: can be used for this.
1339:
1340: * Menu:
1341:
1342: * Remote Commands:: Commands used to start and finish remote debugging.
1343:
1344: For details of the communication protocol, see the comments in the GDB
1345: source file `remote.c'.
1346:
1347:
1348: File: gdb Node: Remote Commands, Prev: Remote, Up: Remote
1349:
1350: Commands for Remote Debugging
1351: =============================
1352:
1353: To start remote debugging, first run GDB and specify as an executable file
1354: the program that is running in the remote machine. This tells GDB how
1355: to find the program's symbols and the contents of its pure text. Then
1356: establish communication using the `attach' command with a device
1357: name rather than a pid as an argument. For example:
1358:
1359: attach /dev/ttyd
1360:
1361: if the serial line is connected to the device named `/dev/ttyd'. This
1362: will stop the remote machine if it is not already stopped.
1363:
1364: Now you can use all the usual commands to examine and change data and to
1365: step and continue the remote program.
1366:
1367: To resume the remote program and stop debugging it, use the `detach'
1368: command.
1369:
1370:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.