Next: , Previous: Arrays, Up: Data


8.4 出力フォーマット

デフォルトでは、 GDBはデータの型にしたがって値を表示します。 ときには、 これが望ましくない場合もあります。 例えば、 数値を16進で表示したい場合やポインタを10進で表示したい場合があるでしょう。 あるいは、 メモリ内のある特定のアドレスのデータを文字列や命令として表示させたい場合もあるでしょう。 このようなことをするためには、 値を表示するときに出力フォーマットを指定します。

出力フォーマットの最も単純な使用方法は、 既に評価済みの値の表示方法を指定することです。 これは、 printコマンドの最初の引数をスラッシュとフォーマット文字で開始することで行います。 サポートされているフォーマット文字は、 以下のとおりです。

x
値を整数値とみなし、 16進で表示します。
d
値を符号付き10進の整数値として表示します。
u
値を符号なし10進の整数値として表示します。
o
値を8進の整数値として表示します。
t
値を2進の整数値として表示します。 ‘t’はtwoを省略したものです。 1
a
値を、 16進の絶対アドレス、 および、 そのアドレスより前にあるシンボルのうち最も近い位置にあるものからのオフセット・アドレスとして表示します。 このフォーマットを使用することで、 未知のアドレスがどこに (どの関数の中に) あるのかを知ることができます。
          (gdb) p/a 0x54320
          $3 = 0x54320 <_initialize_vx+396>

c
値を整数値とみなし、 文字定数として表示します。
f
値を浮動小数点数値とみなし、 典型的な浮動小数点の構文で出力します。

例えば、 プログラム・カウンタの値を16進数で表示する (see Registers) には、 以下を実行してください。

     p/x $pc

スラッシュの前にはスペースが必要ではないことに注意してください。 これは、 GDBのコマンド名にはスラッシュを含めることができないからです。

値ヒストリの最後の値を異なる形式で再表示するには、 printコマンドに対して式を指定せずにフォーマットだけを指定して実行します。 例えば、 ‘p/x’を実行すると最後の値を16進で再表示します。


Footnotes

[1] 原注:フォーマット文字‘b’は使用できません。 フォーマット文字はxコマンドでも共通して使用されますが、 xコマンドでは、 ‘b’はbyteの省略形として使用されているためです。 See Examining memory