我试图在 x86_64 suse linux 上远程调试一个 32 位应用程序,但得到这个“远程寄存器格式错误”的错误。
我启动 gdbserver 作为监听端口 12345 (gdbserver localhost:12345 my_prog)
这是错误:
$ 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-default #1 Mon Jan 21 13:29:51 UTC 2008 x86_64 x86_64 x86_64 GNU/Linux
两台机器都在虚拟机中运行(VMWare)。gdbserver 二进制文件从客户端机器复制到服务器机器。
(我远程调试是因为调试服务器上的运行时环境类似于生产环境,并且不包含任何开发工具、对源代码的访问等)
欢迎任何建议。
更新:通过在 gdb 中发出以下命令,这对我有用:
设置架构 i386:x86-64