Previous: Source Path, Up: Source
info line
コマンドを使用してソース行をプログラム・アドレスに
(あるいは、
プログラム・アドレスをソース行に)
対応付けすることができます。
また、
disassemble
コマンドを使用して、
あるアドレス範囲をマシン命令として表示することもできます。
gnu Emacsモードで実行されている場合、
現在のinfo line
コマンドは、
指定された行を示す矢印を表示します。
また、
info line
コマンドは、
アドレスを16進形式だけではなくシンボリック形式でも表示します。
info line
linespeclist
コマンド
(see Printing source lines)
が理解できる任意の形式によってソース行を指定することができます。
例えば、
info line
コマンドによって、
関数m4_changequote
の最初の行に対応するオブジェクト・コードの位置を知ることができます。
(gdb) info line m4_changecom Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
また、
(linespecの形式として*
addrを使用することで)
ある特定のアドレスがどのソース行に含まれているのかを問い合わせることができます。
(gdb) info line *0x63ff Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
info line
の実行後、
x
コマンドのデフォルト・アドレスは、
その行の先頭アドレスに変更されます。
これにより、
マシン・コードの調査を開始するには‘x/i’を実行するだけで十分となります
(see Examining memory)。
また、
このアドレスはコンビニエンス変数$_
の値として保存されます
(see Convenience variables)。
disassemble
以下の例は、 あるアドレス範囲のHP PA-RISC 2.0コードを逆アセンブルした結果を示しています。
(gdb) disas 0x32c4 0x32e4 Dump of assembler code from 0x32c4 to 0x32e4: 0x32c4 <main+204>: addil 0,dp 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26 0x32cc <main+212>: ldil 0x3000,r31 0x32d0 <main+216>: ble 0x3f8(sr4,r31) 0x32d4 <main+220>: ldo 0(r31),rp 0x32d8 <main+224>: addil -0x800,dp 0x32dc <main+228>: ldo 0x588(r1),r26 0x32e0 <main+232>: ldil 0x3000,r31 End of assembler dump.
アーキテクチャによっては、 一般に使用される命令ニーモニックを複数持つものや、 異なる構文を持つものがあります。
set assembly-language
instruction-setdisassemble
コマンドまたはx/i
コマンドによってプログラムの逆アセンブルを行う際に使用する
命令セットを選択します。
現在のところ、
このコマンドは、
Intel x86ファミリに対してのみ定義されています。
instruction-setは、
i386
とi8086
のいずれかにセットすることができます。
デフォルトはi386
です。