我试图在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:12345 Remote debugging using :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 10月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 1月21日13:29:51 UTC 2008 x86_64 x86_64 x86_64 GNU/Linux
两台机器都在虚拟机中运行(VMWare).gdbserver二进制文件从客户端计算机复制到服务器计算机.
(我进行远程调试,因为调试服务器上的运行时环境类似于生产环境,并且不包含任何开发工具,访问源代码等)
欢迎任何建议.
更新:通过在gdb中发出以下命令,这对我有用:
设置架构i386:x86-64