13.3. Specifying Source Directories

Executable programs sometimes do not record the directories of the source files from which they were compiled, just the names. Even when they do, the directories could be moved between the compilation and your debugging session. The debugger has a list of directories to search for source files; this is called the source path. Each time the debugger wants 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 the debugger cannot find a source file in the source path, and the object program records a directory, the debugger tries that directory too. If the source path is empty, and there is no record of the compilation directory, the debugger looks in the current directory as a last resort.

Whenever you reset or rearrange the source path, the debugger clears out any information it has cached about where source files are found and where each line is in the file.

When you start the debugger, its source path is empty. To add other directories, 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 : or whitespace. You may specify a directory that is already in the source path; this moves it forward, so the debugger 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 the debugger 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.

show directories

Print the source path: show which directories it contains.

If your source path is cluttered with directories that are no longer of interest, the debugger may sometimes cause confusion by finding the wrong versions of source. You can correct the situation as follows:

  1. Use directory with no argument 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.