gdbで初期設定をAT&T記法からIntel記法に変更する方法

デバッガであるgdbですが、
disasコマンドでアセンブラコードを表示させることがありますが、
デフォルトではat&t記法になっています。

私はintel記法の方が見やすく感じますし、
多くの書籍はintel記法で説明されているように感じます。

そこで記法を変更したいわけなんですが、
gdb起動中は

set disassembly-flavor att
set disassembly-flavor intel

で変更することができます。

また現在の設定を見るためには

show disassembly-flavor

が使えます。

ただ、毎回この長ったらしいコマンドを入力するのは
かなり面倒です。
ちなみに私はそこそこ長い期間、
この長いコマンドを打ち続けていました。

そろそろ苛立ってきたので、
デフォルトの記法を変更できないものかと調べてみたところ、
あっさりできてしまいましたので、
メモしておきます。

 

デフォルトをIntel記法に変更する

・linuxの場合

ホームディレクトリ直下に
.gdbinit
というファイルを作ります。

としてこの中に

set disassembly-flavor intel

と書き込んで保存しておきます。

これ、、、だけです。
これを行った後にgdbを起動すると
disassembleコマンドを実行すると、
Intel記法に変更されていることが確認できます。

・Windowsの場合
ほとんどやり方は同じですが、
ファイル名が.gdbinitではなく、gdb.iniとなります。

同じように

set disassembly-flavor intel

を書き込んで保存しとくだけです。

 

 

gdbの初期化ファイル

.gdbinitやgdb.iniはgdbの初期化ファイルです。
gdbは起動直後にこのファイルを読みに行ってコマンドを
実行します。

調べてみると面白い使い方ができそうです。
よく使うコマンドを、登録しておけるのです。

例を見てみます。
先程作った初期化ファイルに以下の記述を追加します。

set disassembly-flavor intel

define nix
    ni
    x/4xw $rsp
end

 

ni(アセンブラ単位で一行実行)したあとに、
x/4xw $rsp(スタックの内部をダンプ)するコマンドを
一連のコマンド群として”nix”という名前で定義しています。

そしてgdb起動後

(gdb) nix

のようにコマンドすると、

(gdb) ni
(gdb) x/4xw $rsp

と実行したのと同じ結果となります。

これは色々と作業が捗りそうです。
というより、、、
なぜこんなに簡単なことを早くやらなかったんでしょうか。。。

知らなかったという方はぜひ設定してみて下さい。
煩わしいコマンドから開放されますよ。

 

 

【関連記事】
スタックオーバーフローをやってみた
GDBの基本的な使い方-1
GDBの基本的な使い方-2

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です