実行形式プログラムは、 それがコンパイルされたソース・ファイルの名前だけを記録して、 ソース・ファイルの存在するディレクトリ名を記録しないことがあります。 また、 ディレクトリ名が記録された場合でも、 コンパイル時とデバッグ時との間に、 そのディレクトリが移動してしまっている可能性があります。 GDBは、 ソース・ファイルを検索すべきディレクトリの一覧を持っています。 これは、 ソース・パスと呼ばれます。 GDBは、 ソース・ファイルが必要なときにはいつでも、 それが見つかるまで、 このリストの中のすべてのディレクトリを、 リストの中に記述されている順に探します。 実行ファイルのサーチ・パスは、 この目的では使用されないことに気をつけてください。 またカレントな作業ディレクトリも、 それがたまたまソース・パスの中にある場合を除けば、 この目的で使用されることはありません。
GDBがソース・パスの中でソース・ファイルを見つけることができない場合、 プログラムがディレクトリ名を記録してあれば、 そのディレクトリも検索されます。 ソース・パスにディレクトリの指定がなく、 コンパイルされたディレクトリの名前も記録されていない場合、 GDBは最後の手段としてカレント・ディレクトリを探します。
ソース・パスを空にした場合、 または、 再調整した場合、 ソース・ファイルを見つけた場所や個々の行のファイル内の位置のような、 GDBが内部でキャッシュしている情報は消去されます。
GDBを起動した時点では、
ソース・パスにはディレクトリの指定がありません。
ディレクトリをソース・パスに追加するには、
directory
コマンドを使用してください。
directory
dirname ...
dir
dirname ...
(コンパイル時のディレクトリが記録されていれば)
それを指すのに文字列‘$cdir’を使うことができます。
また、
カレントな作業ディレクトリを指すには、
文字列‘$cwd’を使うことができます。
‘$cwd’と‘.’
(ピリオド)
とは同じではありません。
前者は、
GDBセッション内においてカレントな作業ディレクトリが変更された場合、
変更されたディレクトリを指します。
これに対して後者は、
ソース・パスへの追加を行ったときに、
その時点におけるカレント・ディレクトリに展開されてしまいます。
directory
show directories
ソース・パスの中に、 不要となってしまったディレクトリが混在していると、 GDBが誤ったバージョンのソースを見つけてしまい、 混乱をもたらすことがあります。 以下の手順によって、 正常な状態にすることができます。
directory
コマンドを引数なしで実行します。
directory
コマンドに適切な引数を指定して実行します。
すべてのディレクトリを、
1回のコマンド実行で追加することができます。