Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux gdb错误-文件不是可执行格式:无法识别文件格式_Linux_Ubuntu_Debugging_Gdb - Fatal编程技术网

Linux gdb错误-文件不是可执行格式:无法识别文件格式

Linux gdb错误-文件不是可执行格式:无法识别文件格式,linux,ubuntu,debugging,gdb,Linux,Ubuntu,Debugging,Gdb,我试图用gdb调试一个名为xdf的特定程序,但当我运行gdb xdf时,出现以下错误: "/home/nealtitusthomas/X-ray_astronomy/heasoft-6.24/x86_64-pc-linux-gnu-libc2.27/bin/xdf": not in executable format: File format not recognized 程序以符号方式链接,文件/home/nealtitusthomas/X-ray_astronomy/heasoft-6.2

我试图用gdb调试一个名为xdf的特定程序,但当我运行gdb xdf时,出现以下错误:

"/home/nealtitusthomas/X-ray_astronomy/heasoft-6.24/x86_64-pc-linux-gnu-libc2.27/bin/xdf": not in executable format: File format not recognized
程序以符号方式链接,文件/home/nealtitusthomas/X-ray_astronomy/heasoft-6.24/x86_64-pc-linux-gnu-libc2.27/bin/xdf的输出为:

/home/nealtitusthomas/X-ray_astronomy/heasoft-6.24/x86_64-pc-linux-gnu-libc2.27/bin/xdf: symbolic link to ../../ftools/x86_64-pc-linux-gnu-libc2.27/bin/xdf
这里给出的解决方案说,这是因为安装的gdb是32位版本,程序是64位的。然而,我的gdb安装是64位的。这一点得到以下方面的证实:

This GDB was configured as "x86_64-linux-gnu". 

您正在尝试在shell脚本上使用GDB。就像它试图告诉你的那样,GDB不知道该怎么办

file/home/nealti…

通常,您几乎总是应该使用
file-L/home/…
——该命令将取消对任何符号链接的引用,并在解析所有符号链接后告诉您该文件是什么

POSIX外壳脚本,ASCII文本可执行文件

您正在尝试调试shell脚本。GDB不知道如何做到这一点

您需要查看shell脚本内部(使用您选择的编辑器),找出它最终调用的实际二进制文件,并进行调试

包装器外壳脚本通常如下所示:

 #!/bin/sh
... some code to figure out installation directory (e.g. INSTALL_DIR)
export LD_LIBRARY_PATH="$INSTALL_DIR/lib64:..."

# Now invoke the binary:
exec "$INSTALL_DIR/bin/xdf.exe" "$@"
您要做的是将最后一行替换为:

exec /usr/bin/gdb --args "$INSTALL_DIR/bin/xdf.exe" "$@"

并正常运行
xdf
shell脚本。它现在将神奇地调用gdb auto。

并且。。。什么格式是
。/../ftools/x86_64-pc-linux-gnu-libc2.27/bin/xdf
?它是一个POSIX外壳脚本,ASCII文本可执行。我发现原始脚本是一个tcl脚本,位于/home/nealtitustomas/X-ray_astronomy/heasoft-6.24/ftools/BLD/x86_64-pc-linux-gnu-libc2.27/lib/xtcl/.frc中。但是,我无法让gdb运行它。我得到一个非可执行格式错误。