次: , 前: Languages, 上: Languages


9.1 ソース言語の切り替え

作業言語を制御する方法は2つあります。 GDBに自動的に設定させる方法と、 ユーザが手作業で選択する方法です。 どちらの目的でも、 set languageコマンドを使用することができます。 起動時のデフォルトでは、 GDBが言語を自動的に設定するようになっています。 作業言語は、 ユーザの入力する式がどのように解釈されるか、 あるいは、 値がどのように表示されるかを決定します。

この作業言語とは別に、 GDBの認識しているすべてのソース・ファイルには、 それ自体の作業言語があります。 オブジェクト・ファイルのフォーマットによっては、 ソース・ファイルの記述言語を示す情報を、 コンパイラが書き込んでいることがあるかもしれません。 しかし、 ほとんどの場合、 GDBはファイル名から言語を推定します。 ソース・ファイルの言語の種類が、 C++シンボル名がデコード (demangle) されるか否かを制御します。 これによりbacktraceは、 個々のフレームを、 その対応する言語にしたがって適切に表示することができます。 GDBの中から、 ソース・ファイルの言語を設定することはできません。

他の言語で記述されたソースからCのソースを生成する、 cfrontf2cのようなプログラムをユーザが使用する場合には、 このことが問題となるでしょう。 このような場合には、 生成されるCの出力に#line指示子を使用するよう、 そのプログラムを設定してください。 こうすることによって、 GDBは、 元になったプログラムのソース・コードが記述された言語を正しく知ることができ、 生成されたCのコードではなく、 元になったソース・コードを表示します。