[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


GDBの制御

setコマンドによってGDBの操作方法を変更することができます。 GDBによるデータの表示方法を制御するコマンドについては、 表示設定 を参照してください。 この章では、 その他の設定について説明します。

プロンプト

GDBは、 プロンプトと呼ばれる文字列を表示することで、 コマンドを受け付ける用意ができたことを示します。 通常、 この文字列は`(gdb)'です。 set promptコマンドによって、 プロンプトの文字列を変更することができます。 例えば、 GDBを使ってGDB自体をデバッグしているときには、 どちらか一方のGDBセッションのプロンプトを変更して、 どちらのGDBとやりとりしているのか区別できるようにすると便利です。

注:set promptは、 ユーザが設定したプロンプトの後ろに空白を追加しません。 ユーザは、 空白で終わるプロンプト、 空白で終わらないプロンプトのいずれでも設定することができます。

set prompt newprompt
今後はnewpromptをプロンプトとして使用するよう、 GDBに指示します
show prompt
`Gdb's prompt is: your-prompt' という形式の1行を表示します

コマンド編集

GDBは入力コマンドをreadlineインターフェイスによって読み取ります。 このGNUライブラリを使うことで、 ユーザに対してコマンドライン・インターフェイスを提供するプログラムは、 統一された振る舞いをするようになります。 これを使うことの利点としては、 GNU Emacsスタイルまたはviスタイルによるコマンドのインライン編集、 cshスタイルの履歴置換、 複数のデバッグ・セッションにまたがるコマンド履歴の保存と呼び出しができるようになることが挙げられます。

setコマンドによって、 GDBにおけるコマンドライン編集の振る舞いを制御することができます。

set editing
set editing on
コマンドライン編集を使用可能にします (コマンドライン編集は、 デフォルトの状態で使用可能です)。
set editing off
コマンドライン編集を使用不可にします。
show editing
コマンドライン編集が使用可能かどうかを示します。

コマンド履歴

デバッグ・セッション中にユーザが入力したコマンドをGDBに記録させることができるため、 ユーザは実際に何が実行されたかを確実に知ることができます。 以下のコマンドを使って、 GDBのコマンド履歴機能を管理します。

set history filename fname
GDBコマンド履歴ファイルの名前をfnameに設定します。 GDBは、 最初にこのファイルからコマンド履歴リストの初期値を読み取り、 終了時には、 このファイルにセッション中のコマンド履歴を書き込みます。 コマンド履歴リストには、 履歴展開機能、 あるいは、 後に列挙する履歴コマンド編集文字によってアクセスすることができます。 このファイル名は、 デフォルトでは環境変数GDBHISTFILEの値になりますが、 この変数が設定されていない場合には`./.gdb_history' (MS-DOS上では`./_gdb_history') になります。
set history save
set history save on
コマンド履歴をファイルの中に記録します。 ファイルの名前はset history filenameコマンドで指定可能です。 デフォルトでは、 このオプションは使用不可の状態になっています。
set history save off
コマンド履歴をファイルの中に記録するのを停止します。
set history size size
GDBが履歴リストの中に記録するコマンドの数を設定します。 デフォルトでは、 この値は環境変数HISTSIZEの値に設定されますが、 この変数が設定されていない場合は256になります。

履歴展開機能により、 文字!には特別な意味が割り当てられます。

!は、 C言語における論理NOTの演算子でもあるので、 履歴展開機能はデフォルトではoffになっています。 set history expansion onコマンドによって履歴展開を利用できるようにした場合には、 (!を式の中で論理NOTとして使うのであれば) !の後ろに空白かタブを入れることによって、 それが展開されないようにする必要のある場合があります。 履歴展開が有効になっている場合でも、 readlineの履歴機能は、 !=!(という文字列を置き換えようとはしません。

履歴展開を制御するコマンドには、 以下のようなものがあります。

set history expansion on
set history expansion
履歴展開を使用可能にします。 履歴展開はデフォルトでは使用不可です。
set history expansion off
履歴展開を使用不可にします。 readlineのコードには、 履歴編集機能や履歴展開機能に関する、 より完全なドキュメントが付属しています。 GNU Emacsやviのことをよく知らない人は、 このドキュメントを読むとよいでしょう。
show history
show history filename
show history save
show history size
show history expansion
これらのコマンドは、 GDBの履歴パラメータの状態を表示します。 単にshow historyを実行すると、 4つのパラメータの状態がすべて表示されます。
show commands
コマンド履歴中の最後の10個のコマンドを表示します。
show commands n
コマンド番号nのコマンドを中心に、 その前後の10個のコマンドを表示します。
show commands +
最後に表示されたコマンドに続く10個のコマンドを表示します。

画面サイズ

GDBのコマンドは、 大量の情報を画面上に出力することがあります。 大量の情報をすべて読むのを支援するために、 GDBは1ページ分の情報を出力するたびに、 出力を停止してユーザからの入力を求めます。 出力を継続したい場合は RETキーを押し、 残りの出力を破棄したい場合はqを入力します。 また、 画面幅の設定によって、 どこで行を折り返すかが決まります。 GDBは、 単純に次の行に折り返すのではなく、 出力の内容に応じて読みやすいところで折り返すよう試みます。

通常GDBは、 端末ドライバ・ソフトウェアから画面サイズを知ります。 例えばUNIX上においてGDBは、 termcapデータベースとTERM環境変数の値、 さらに、 stty rowsstty colsの設定を使います。 この結果が正しくない場合、 set heightコマンドとset widthコマンドで画面サイズの設定を変更することができます。

set height lpp
show height
set width cpl
show width
これらのsetコマンドは、 画面の高さをlpp行に、 幅をcpl桁に指定します。 対応するshowコマンドが、 現在の設定を表示します。 ゼロ行の高さを指定すると、 GDBは出力がどんなに長くても、 出力途中で一時停止することをしません。 これは、 出力先がファイルやエディタのバッファである場合に便利です。 同様に、 `set width 0'を指定することによって、 GDBに行の折り返しを行わせないようにすることもできます。

数値

GDBに対して8進、 10進、 16進の数値を慣例にしたがって入力することはいつでも可能です。 8進数は`0'で始まります。 10進数は`.'で終わります。 16進数は`0x'で始まります。 このどれにも該当しないものは、 デフォルトで10進数として入力されます。 同様に、 数値を表示するときも、 特定のフォーマットが指定されていなければ、 デフォルトで10進数として表示されます。 set radixコマンドによって、 入力、 出力の両方のデフォルトを変更することができます。

set input-radix base
数値入力のデフォルトの基数を設定します。 サポートされる選択肢は10進数の8、 10、 16です。 base自身はあいまいにならないように指定するか、 あるいは、 現在のデフォルトの基数を使用して指定します。 例えば、
set radix 012
set radix 10.
set radix 0xa
は基数を10進数に設定します。 一方、 `set radix 10'は、 現在の基数を (それがどれであれ) 変更しません。
set output-radix base
数値の表示に使うデフォルトの基数を設定します。 サポートされるbaseの選択肢は 10進数の8、 10、 16です。 base自身はあいまいにならないように指定するか、 あるいは、 現在のデフォルトの基数を使用して指定します。
show input-radix
数値の入力に現在使われているデフォルトの基数を表示します。
show output-radix
数値の表示に現在使われているデフォルトの基数を表示します。

オプションの警告およびメッセージ

デフォルトでは、 GDBは内部の動作に関する情報を表示しません。 性能の遅いマシンで実行している場合には、 set verboseコマンドを使うとよいでしょう。 これによって、 GDBは、 長い内部処理を実行するときにメッセージを出力することで、 クラッシュと勘違いされないようにします。

現在のところ、 set verboseコマンドによって制御されるメッセージは、 ソース・ファイルのシンボル・テーブルを読み込み中であることを知らせるメッセージです。 ファイルを指定するコマンドsymbol-fileを参照してください。

set verbose on
GDBが特定の情報メッセージを出力するようにします。
set verbose off
GDBが特定の情報メッセージを出力しないようにします。
show verbose
set verboseがon、 offのどちらの状態であるかを表示します。

デフォルトでは、 オブジェクト・ファイルのシンボル・テーブルに問題を検出しても、 GDBはメッセージを出力しません。 しかし、 コンパイラをデバッグしているようなときには、 このような情報があると便利かもしれません (シンボル・ファイル読み込み時のエラー参照)。

set complaints limit
異常な型のシンボルを検出するたびにGDBが出力するメッセージの総数をlimit個とします。 limit個のメッセージを表示すると、 その後は問題を検出してもメッセージを表示しないようになります。 メッセージを1つも出力させないようにするには、 limitにゼロを指定してください。 メッセージの出力が抑止されないようにするには、 limitに大きな値を設定してください。
show complaints
GDBが何個までシンボル異常に関するメッセージを出力できるよう設定されているかを表示します。

デフォルトでは、 GDBは慎重に動作し、 コマンドを本当に実行するのか確認するために、 ときには馬鹿げているとさえ思えるような質問を多く尋ねてきます。 例えば、 既に実行中のプログラムを実行しようとすると、 次のように質問してきます。

(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n)

ユーザが、 このようなメッセージを見ても怯むことなく、 実行したコマンドの結果を見てみたいのであれば、 この「機能」を抑止することができます。

set confirm off
確認要求を行わないようにします。
set confirm on
確認要求を行うようにします (デフォルト)。
show confirm
確認要求の現在の設定を表示します。

内部的な事象に関するオプションのメッセージ

set debug arch
gdbarchデバッグ情報の表示を有効あるいは無効にします。 デフォルトでは無効です。
show debug arch
現在、 gdbarchデバッグ情報の表示が有効になっているか無効になっているかを示します。
set debug event
GDBイベント・デバッグ情報の表示を有効あるいは無効にします。 デフォルトでは無効です。
show debug event
現在、 GDBイベント・デバッグ情報の表示が有効になっているか無効になっているかを示します。
set debug expression
GDB式デバッグ情報の表示を有効あるいは無効にします。 デフォルトでは無効です。
show debug expression
現在、 GDB式デバッグ情報の表示が有効になっているか無効になっているかを示します。
set debug overload
GDB C++オーバーロード・デバッグ情報の表示を有効あるいは無効にします。 これには関数のランキングなどのような情報が含まれます。 デフォルトでは無効です。
show debug overload
現在、 GDB C++オーバーロード・デバッグ情報の表示が有効になっているか無効になっているかを示します。
set debug remote
シリアル回線を経由してリモート・マシンとの間で送受信したすべてのパケットに関する報告の表示を有効あるいは無効にします。 情報は、 GDBの標準出力ストリームに表示されます。 デフォルトでは無効です。
show debug remote
現在、 リモート・パケットの表示が有効になっているか無効になっているかを示します。
set debug serial
GDBのシリアル・デバッグ情報の表示を有効あるいは無効にします。 デフォルトでは無効です。
show debug serial
現在、 GDBのシリアル・デバッグ情報の表示が有効になっているか無効になっているかを示します。
set debug target
GDBのターゲット・デバッグ情報の表示を有効あるいは無効にします。 これには、 GDBのターゲット・レベルにおいて発生していることがそのまま情報として含まれています。 デフォルトでは無効です。
show debug target
現在、 GDBのターゲット・デバッグ情報の表示が有効になっているか無効になっているかを示します。
set debug varobj
GDBの変数オブジェクト・デバッグ情報の表示を有効あるいは無効にします。 デフォルトでは無効です。
show debug varobj
現在、 GDBの変数オブジェクト・デバッグ情報の表示が有効になっているか無効になっているかを示します。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]