<p>小島さん</p>
<p>アドバイスありがとうございます。<br>
GDB本体のターゲットアーキテクチャを確認したところi386系だったため、<br>
armにビルドし直すことで無事解決いたしました。大変助かりました。</p>
<p>以下の通り実施しました。</p>
<p>●GDBで使用できるアーキテクチャの確認<br>
(参考:<a href="https://sourceware.org/gdb/onlinedocs/gdb/Targets.html">https://sourceware.org/gdb/onlinedocs/gdb/Targets.html</a>)</p>
<p>$ ddd ~/android/goldfish/vmlinux    #DDD起動</p>
<p>GNU DDD 3.3.12 (x86_64-pc-linux-gnu), by Dorothea LReading symbols from /home/ksky/android/goldfish/vmlinux...done.<br>
(gdb) set arch<br>
Requires an argument. Valid arguments are i386, i386:x86-64, i386:x64-32, i8086, i386:intel, i386:x86-64:intel, i386:x64-32:intel, i386:nacl, i386:x86-64:nacl, i386:x64-32:nacl, auto.   #一覧の中に"arm"が入っていない<br>
(gdb)<br></p>
<p>●GDBをクロスデバッガとしてビルドし直す<br>
cd /tmp<br>
wget <a href="http://ftp.gnu.org/gnu/gdb/gdb-7.7.1.tar.bz2">http://ftp.gnu.org/gnu/gdb/gdb-7.7.1.tar.bz2</a><br>
tar xjvf gdb-7.7.1.tar.bz2</p>
<p>cd gdb-7.7.1/<br>
./configure --prefix=/opt/gdb/arm --target=arm-eabi   #ターゲットにarm-eabiを指定<br>
make -j8<br>
sudo make install</p>
<p>export PATH=/opt/gdb/arm/bin:$PATH       #arm-eabi-gdbコマンドにパスを通す</p>
<p>●arm-eabi-gdbを指定してDDD起動<br>
ddd ~/android/goldfish/vmlinux --debugger arm-eabi-gdb</p>
<p>●アーキテクチャにarmが含まれていることを確認<br>
GNU DDD 3.3.12 (x86_64-pc-linux-gnu), by Dorothea LReading symbols from /home/ksky/android/goldfish/vmlinux...done.<br>
(gdb) set arch<br>
Requires an argument. Valid arguments are arm, armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5te, xscale, ep9312, iwmmxt, iwmmxt2, auto.</p>
<p>●エミュレータに接続、ブレイクポイントを設定して続行<br>
(gdb) b start_kernel<br>
Breakpoint 1 at 0xc00086a4: file init/main.c, line 531.<br>
(gdb) target remote localhost:1234<br>
Remote debugging using localhost:1234<br>
warning: Can not parse XML target description; XML support was disabled at compile time<br>
0x00000000 in ?? ()<br>
(gdb) continue<br>
Continuing.</p>
<p>Breakpoint 1, start_kernel () at init/main.c:531<br>
(gdb) <br>
</p>
<div class="gmail_quot<blockquote class=" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">柳原光佑 <<a href="mailto:yanagihara.kosuke@gmail.com">yanagihara.kosuke@gmail.com</a>> wrote:<br>
> (gdb) target remote localhost:1234<br>
> Remote debugging using localhost:1234<br>
> warning: Architecture rejected target-supplied description<br>
> Could not fetch register "st2"; remote failure reply 'E14'<br>
> 0x00000000 in ?? ()<br>
<br>
このgdbの警告はQEMU内蔵のgdbserverとgdb本体とでターゲットにしている<br>
アーキテクチャがあっていないために出ているように見えます。<br>
(gdb) show arch<br>
で本体側のターゲットアーキテクチャの設定がわかります。 このケースだとarm<br>
系になってないといけないと思います。<br>
十分新しいgdbとgdbserverだとその間でアーキテクチャの情報を交換してうまく<br>
やってくれると思うのですがそのあたりに問題があるのかもしれません。<br>
とりあえずgdb本体の方がarmアーキテクチャに対応してさえいれば<br>
(gdb) set arch arm<br>
などと手で設定することもできます。 gdb本体が対応しているアーキテクチャは<br>
(gdb) set arch<br>
でリストしてくれるはずです。<br>
<br>
何かヒントになれば幸いです。<br>
<br>
--<br>
小島 一元  <<a href="mailto:kkojima@rr.iij4u.or.jp">kkojima@rr.iij4u.or.jp</a>><br>
</div>