x86_64 suse linuxで32ビットアプリケーションをリモートデバッグしようとしましたが、この「リモートレジスタのフォーマットが正しくありません」というエラーが発生します。
ポート12345(gdbserver localhost:12345 my_prog)でリッスンしているようにgdbserverを起動します
そしてこれはエラーです:
$ gdb
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
(gdb) target remote <ip>:12345
Remote debugging using <ip>:12345
Remote register badly formatted: T0506:0000000000000000;07:80b8bcff00000000;10:4028f0f700000000;
here: 0000000;07:80b8bcff00000000;10:4028f0f700000000;
(gdb)
これはデバッグサーバーマシン(uname -a)です:
Linuxサーバー2.6.16.60-0.31-smp#1 SMP Tue Oct 7 16:16:29 UTC 2008 x86_64 x86_64 x86_64 GNU / Linux
そして、これはデバッグクライアントマシン(uname -a)です:
Linuxクライアント2.6.16.54-0.2.5-デフォルト#1 Mon Jan 21 13:29:51 UTC 2008 x86_64 x86_64 x86_64 GNU / Linux
ただし、両方のマシンは仮想マシン(VMWare)で実行されています。gdbserverバイナリは、クライアントマシンからサーバーマシンにコピーされます。
(デバッグサーバーのランタイム環境は本番環境に似ており、開発ツールやソースコードへのアクセスなどが含まれていないため、リモートデバッグします。)
どんな提案でも大歓迎です。
更新:これは、gdbで次のコマンドを発行することで機能しました:
アーキテクチャi386:x86-64を設定します