set
コマンドによってGDBの操作方法を変更することができます。
GDBによるデータの表示方法を変更するコマンドについては、
表示設定を参照。
この章では、
その他の設定について説明します。
GDBは、
プロンプトと呼ばれる文字列を表示することで、
コマンドを受け付ける用意ができたことを示します。
通常、
この文字列は`(gdb)'です。
set prompt
コマンドによって、
プロンプトの文字列を変更することができます。
例えば、
GDBを使ってGDB自体をデバッグしているときには、
どちらか一方のGDBセッションのプロンプトを変更して、
どちらのGDBとやりとりしているのか区別できるようにすると便利です。
注: 以前のバージョンとは異なり、
現在のset prompt
は、
ユーザが設定したプロンプトの後ろに空白を追加しません。
ユーザは、
空白で終わるプロンプト、
空白で終わらないプロンプトのいずれでも設定することができます。
set prompt newprompt
show prompt
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
GDBHISTFILE
の値になりますが、
この変数が設定されていない場合には`./.gdb_history'になります。
set history save
set history save on
set history filename
コマンドで指定可能です。
デフォルトでは、
このオプションは使用不可の状態になっています。
set history save off
set history size size
HISTSIZE
の値に設定されますが、
この変数が設定されていない場合は256になります。
ヒストリ展開機能により、
文字!には特別な意味が割り当てられます。
!は、
C言語における論理NOTの演算子でもあるので、
ヒストリ展開機能はデフォルトではoffになっています。
set history expansion on
コマンドによってヒストリ展開を利用できるようにした場合には、
(!を式の中で論理NOTとして使うのであれば)
!の後ろに空白かタブを入れることによって、
それが展開されないようにする必要のある場合があります。
ヒストリ展開が有効になっている場合でも、
readlineのヒストリ機能は、
!=や!(という文字列を置き換えようとはしません。
ヒストリ展開を制御するコマンドには、
以下のようなものがあります。
set history expansion on
set history expansion
set history expansion off
vi
のことをよく知らない人は、
このドキュメントを読むとよいでしょう。
show history
show history filename
show history save
show history size
show history expansion
show history
を実行すると、
4つのパラメータの状態がすべて表示されます。
show commands
show commands n
show commands +
GDBのコマンドは、
大量の情報を画面上に出力することがあります。
大量の情報をすべて読むのを支援するために、
GDBは1ページ分の情報を出力するたびに、
出力を停止してユーザからの入力を求めます。
出力を継続したい場合は
RETキーを押し、
残りの出力を破棄したい場合はqを入力します。
また、
画面幅の設定によって、
どこで行を折り返すかが決まります。
GDBは、
単純に次の行に折り返すのではなく、
出力の内容に応じて読みやすいところで折り返すよう試みます。
通常GDBは、
termcapデータベースとTERM
環境変数の値、
さらに、
stty rows
、
stty 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
set radix 012 set radix 10. set radix 0xaは基数を10進数に設定します。 一方、 `set radix 10'は、 現在の基数を (それがどれであれ) 変更しません。
set output-radix base
show input-radix
show output-radix
デフォルトでは、
GDBは内部の動作に関する情報を表示しません。
性能の遅いマシンで実行している場合には、
set verbose
コマンドを使うとよいでしょう。
これによって、
GDBは、
長い内部処理を実行するときにメッセージを出力することで、
クラッシュと勘違いされないようにします。
現在のところ、
set verbose
コマンドによって制御されるメッセージは、
ソース・ファイルのシンボル・テーブルを読み込み中であることを知らせるメッセージです。
ファイルを指定するコマンドのsymbol-file
を参照してください。
set verbose on
set verbose off
show verbose
set verbose
がon、
offのどちらの状態であるかを表示します。
デフォルトでは、 オブジェクト・ファイルのシンボル・テーブルに問題を検出しても、 GDBはメッセージを出力しません。 しかし、 コンパイラをデバッグしているようなときには、 このような情報があると便利かもしれません (シンボル・ファイル読み込み時のエラーを参照)。
set complaints limit
show complaints
デフォルトでは、 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