Debugging with GDB (February 2008)

Table Of Contents
Chapter 7: Examining Source Files 59
reverse-search regexp
The command reverse-search regexp checks each line, starting with the
one before the last line listed and going backward, for a match for the regexp.
It lists the line(s) that is found. You can abbreviate this command as rev.
7.3 Specifying source directories
Executable programs sometimes do not record the directories of the source files from
which they were compiled. Even when they do, the directories can be moved between the
compilation and your debugging session. GDB has a list of directories to search for source
files; this is called the source path. Each time GDB looks for a source file, it tries all the
directories in the list, in the order they are present in the list, until it finds a file with the
desired name. Note that the executable search path is not used for this purpose. Neither
is the current working directory, unless it happens to be in the source path.
If GDB cannot find a source file in the source path, and the object program records a
directory, GDB tries that directory too. If the source path is empty, and there is no record
of the compilation directory, GDB looks in the current directory as a last resort.
Whenever you reset or rearrange the source path, GDB clears out any information it has
cached about where the source files are located and where each line is in the respective file.
When you start GDB, its source path includes only cdir and cwd’, in that order.
To add other directories, you can use the directory command.
directory dirname ...
dir dirname ...
Add directory dirname to the front of the source path. Several directory names
may be given to this command, separated by : (‘; on MS-DOS and MS-
Windows, where : usually appears as part of absolute file names) or a white-
space. You can specify a directory that is already in the source path; this moves
it forward, so GDB searches it sooner.
You can use the string $cdir to refer to the compilation directory (if one
is recorded), and $cwd to refer to the current working directory. $cwd is
not the same as .’. The former tracks the current working directory as it
changes during your GDB session, while the latter is immediately expanded to
the current directory at the time you add an entry to the source path.
directory
Reset the source path to empty again. This requires confirmation from the
user.
show directories
Print the source path and display the directories it contains.
If your source path is cluttered with directories that are no longer of interest, GDB can
end up detecting the wrong version of the source. To correct this situation, follow these
steps:
1. Use directory with no arguments to reset the source path to empty.
2. Use directory with suitable arguments to reinstall the directories you want in the
source path. You can add all the directories in one command.