我正在尝试使用GDB进行调试(以找到一个恼人的分段错误)。当我跑步时:
gdb ./filename
在命令行中,我得到以下错误:
This GDB was configured as "i686-pc-linux-
gnu"..."/path/exec": not in executable
format: File format not recognized
当我执行:
file /path/executable/
我得到以下信息:
ELF 64-bit LSB executable, AMD x86-64,
version 1 (SYSV), for GNU/Linux 2.4.0,
dynamically linked (uses shared libs), not stripped
我正在使用GDB6.1,可执行文件是用gcc版本3.4.6编译的。
就使用gdb而言,我有点不知所措,但据我所知,它应该在这种情况下起作用。有什么问题吗?
发布于 2008-11-09 01:26:59
可执行文件是64位(x86-64),调试器是32位(i 686-pc-linux)构建的。您可能需要安装调试器的64位(x86-64)版本。
发布于 2008-11-09 11:35:10
我不知道这是不是你的问题,但我经常面对这种情况。在构建树中,build /automake中的可执行文件不是二进制文件,而是脚本,因此您不能在其中使用gdb。尝试安装应用程序并更改目录,因为否则gdb将尝试调试脚本。
发布于 2008-11-09 09:18:44
这个问题指的是"./filename“和”/path/可执行文件“。这是同一个文件吗?
如果您正在进行尸检分析,您将运行:
gdb executable-file core-file
如果要忽略核心文件,可以运行:
gdb executable-file
在这两种情况下,“executable-file
”都是指要调试的二进制文件的路径名。通常情况下,这实际上是当前目录中的一个简单文件名,因为您在那里有来自调试构建的源代码。
在Solaris上,64位构建的GDB应该能够同时调试32位和64位可执行文件(尽管我最近的GDB版本有一些问题)。我不确定是否一个32位的GDB可以调试64位的可执行文件。
https://stackoverflow.com/questions/275471
复制相似问题