Debugging with GDB

Node:List, Next:Search, Up:Source

### Printing source lines

To print lines from a source file, use the `list` command (abbreviated `l`). By default, ten lines are printed. There are several ways to specify what part of the file you want to print.

Here are the forms of the `list` command most commonly used:

`list` linenum``
  Print lines centered around line number linenum in the current source file.
`list` function``
  Print lines centered around the beginning of function function.
`list`
  Print more lines. If the last lines printed were printed with a `list` command, this prints lines following the last lines printed; however, if the last line printed was a solitary line printed as part of displaying a stack frame (see Examining the Stack), this prints lines centered around that line.
`list -`
  Print lines just before the lines last printed.

By default, GDB prints ten source lines with any of these forms of the `list` command. You can change this using `set listsize`:

`set listsize` count``
  Make the `list` command display count source lines (unless the `list` argument explicitly specifies some other number).
`show listsize`
  Display the number of lines that `list` prints.

Repeating a `list` command with <RET> discards the argument, so it is equivalent to typing just `list`. This is more useful than listing the same lines again. An exception is made for an argument of `-`; that argument is preserved in repetition so that each repetition moves up in the source file.

In general, the `list` command expects you to supply zero, one or two linespecs. Linespecs specify source lines; there are several ways of writing them, but the effect is always to specify some source line. Here is a complete description of the possible arguments for `list`:

`list` linespec``
  Print lines centered around the line specified by linespec.
`list` first`,`last``
  Print lines from first to last. Both arguments are linespecs.
`list ,`last``
  Print lines ending with last.
`list` first`,`
  Print lines starting with first.
`list +`
  Print lines just after the lines last printed.
`list -`
  Print lines just before the lines last printed.
`list`
  As described in the preceding table.

Here are the ways of specifying a single source line--all the kinds of linespec.

``number``
  Specifies line number of the current source file. When a `list` command has two linespecs, this refers to the same source file as the first linespec.
`+`offset``
  Specifies the line offset lines after the last line printed. When used as the second linespec in a `list` command that has two, this specifies the line offset lines down from the first linespec.
`-`offset``
  Specifies the line offset lines before the last line printed.
``filename`:` number``
  Specifies line number in the source file filename.
``function``
  Specifies the line that begins the body of the function function. For example: in C, this is the line with the open brace.
``filename`:` function``
  Specifies the line of the open-brace that begins the body of the function function in the file filename. You only need the file name with a function name to avoid ambiguity when there are identically named functions in different source files.
`*`address``
  Specifies the line containing the program address address. address may be any expression.