【发布时间】:2010-10-16 09:56:39
【问题描述】:
我尝试在 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
【问题讨论】:
标签: linux debugging gdb virtual-machine