Next: , Previous: Checks, Up: Checks


9.3.1 型チェックの概要

いくつかの言語、 例えばModula-2などは、 強く型付けされています。 これは、 演算子や関数への引数は正しい型でなくてはならず、 そうでない場合にはエラーが発生するということを意味しています。 このようなチェックは、 型の不一致のエラーが実行時に問題を発生させるのを防いでくれます。 例えば、 1+2は

     1 + 2  3

ですが、1+2.3は
error--> 1 + 2.3

のようにエラーになります。

第2の例がエラーになるのは、 CARDINAL型の1はREAL型の2.3と型の互換性がないからです。

GDBコマンドの中で使われる式については、 ユーザがGDBの型チェック機能に対して、 以下のような指示を出すことができます。

最後の指示が選択された場合、 GDBは上記の第2の(エラー)例のような式でも評価しますが、 その際には警告メッセージを出力します。

型チェックをしないよう指示した場合でも、 型に関係のある原因によってGDBが式の評価ができなくなる場合がありえます。 例えば、 GDBはintの値とstruct fooの値を加算する方法を知りません。 こうした特定の型エラーは、 使用されている言語に起因するものではなく、 この例のように、 そもそも評価することが意味をなさないような式に起因するものです。

個々の言語は、 それが型に関してどの程度厳密であるかを定義しています。 例えば、 Modula-2とCはいずれも、 算術演算子への引数としては数値を要求します。 Cでは、 列挙型とポインタは数値として表わすことができますので、 これらは算術演算子への正当な引数となります。 特定の言語に関する詳細については、 See Supported languages

GDBは、 型チェック機能を制御するためのコマンドをさらにいくつか提供しています。

set check type auto
カレントな作業言語に応じて、 型チェックを実行する、 または、 実行しないよう設定します。 個々の言語のデフォルトの設定については、 See Supported languages
set check type on
set check type off
カレントな作業言語のデフォルトの設定を無視して、 型チェックを実行する、 または、 実行しないよう設定します。 その設定が言語のデフォルトと一致しない場合は、 警告メッセージが出力されます。 型チェックを実行するよう設定されているときの式の評価において型の不一致が発生した場合には、 GDBはメッセージを出力して式の評価を終了させます。
set check type warn
型チェック機能に警告メッセージを出力させますが、 式の評価自体は常に実行するよう試みさせます。 式の評価は、 他の原因のために不可能になる場合もあります。 例えば、 GDBには数値と構造体の加算はできません。
show type
型チェック機能のカレントな設定と、 GDBがそれを自動的に設定しているか否かを表示します。