アライメントされていないデータは、プログラムの実行速度を低下させる場合があります。アライメントされていないデータの原因を判断し、必要に応じてソースコードを修正して、プログラムを再コンパイルおよび再リンクします。
プログラムがランタイムでアライメントされていないデータに遭遇した場合、そのプログラムのデバッグを簡単にするには、-fpen オプションを使用して再コンパイルおよび再リンクし、例外の処理方法を制御します。
idb を使用してアライメントされていないデータの原因を判断するには、次の手順に従います:
アライメントされていないデータがあるプログラムを指定し、デバッガを実行します (次の例では、testprog を指定します): idb testprog
プログラムを実行する前に catch unaligned コマンドを入力します。
(idb) catch unaligned
プログラムを実行します:
(idb) run
Unaligned access pid=28413 <testprog> va=140000154 pc=3ff80805d60
ra=1200017e8 type=stl
Thread received signal BUS
stopped at [oops:13 0x120001834]
13 end
list コマンドを入力し、12 行目のソースコードを表示します:
(idb) list 12
12 i4 = 1
> 13 end
where コマンドを入力し、アライメントされていない位置を見つけます:
(idb) where
up、 list、および down などの他の適切なデバッガコマンドを使用して、アライメントされていないデータの原因だけを追求します。
アライメントされていないデータが報告される他の部分に対しても、これらの手順を繰返します。 rerun コマンドを使用して、デバッガを終了する代わりに、シェル・プロンプトからプログラムを再実行します。
アライメントされていないデータの原因を修正した後、プログラムを再度コンパイルしリンクします。