作業言語を制御する方法は2つあります。
GDBに自動的に設定させる方法と、
ユーザが手作業で選択する方法です。
どちらの目的でも、
set language
コマンドを使用することができます。
起動時のデフォルトでは、
GDBが言語を自動的に設定するようになっています。
作業言語は、
ユーザの入力する式がどのように解釈されるか、
あるいは、
値がどのように表示されるかを決定します。
この作業言語とは別に、
GDBの認識しているすべてのソース・ファイルには、
それ自体の作業言語があります。
オブジェクト・ファイルのフォーマットによっては、
ソース・ファイルの記述言語を示す情報を、
コンパイラが書き込んでいることがあるかもしれません。
しかし、
ほとんどの場合、
GDBはファイル名から言語を推定します。
ソース・ファイルの言語の種類が、
C++シンボル名がデコード
(demangle)
されるか否かを制御します。
これによりbacktrace
は、
個々のフレームを、
その対応する言語にしたがって適切に表示することができます。
GDBの中から、
ソース・ファイルの言語を設定することはできません。
他の言語で記述されたソースからCのソースを生成する、
cfront
やf2c
のようなプログラムをユーザが使用する場合には、
このことが問題となるでしょう。
このような場合には、
生成されるCの出力に#line
指示子を使用するよう、
そのプログラムを設定してください。
こうすることによって、
GDBは、
元になったプログラムのソース・コードが記述された言語を正しく知ることができ、
生成されたCのコードではなく、
元になったソース・コードを表示します。