gdb错误不是可执行格式:无法识别文件格式 [英] gdb error not in executable format: File format not recognized
问题描述
我正在尝试在Ubuntu 16.04上调试一个简单的 hello world C ++程序,但gdb无法识别可执行文件格式。但是,我能够在命令行上成功运行可执行文件。
这是代码
I am trying to debug a simple "hello world" C++ program on Ubuntu 16.04 but gdb is not able to recognize the executable file format. However, I am able to successfully run the executable on the command line. Here is the code
#include <iostream>
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
我使用命令
g++ -g TestProject.cpp -o hello
然后进行调试,我给出命令
Then to debug, I give the command
gdb ./hello
我收到以下错误消息
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
"/home/<home>/./hello": not in executable format: File format not recognized
Ubuntu计算机似乎已损坏。因为我能够在另一台Ubuntu 16.04虚拟机上调试相同的程序。
Something seems to be corrupt with the Ubuntu machine. Because I am able to debug the same program on another Ubuntu 16.04 virtual machine.
推荐答案
它几乎是 确保ks1322的注释是正确的:
It is almost certain that ks1322's comment is correct one:
- 您已经安装了64位GCC,因此您的
。 / hello
是64位二进制文件(使用文件./hello
进行确认)。 - 您已经安装了仅32位的GDB,所以它不知道如何调试
x86_64
二进制文件。
- You've installed a 64-bit GCC, so your
./hello
is a 64-bit binary (usefile ./hello
to confirm). - You've installed a 32-bit only GDB, so it doesn't know how to debug
x86_64
binaries.
修复很简单:安装64位GDB(能够调试32位和64位二进制文件),或 build hello
在32位模式下(使用 g ++ -m32 ...
)。
The fix is simple: install 64-bit GDB (which is capable of debugging both 32 and 64-bit binaries), or build hello
in 32-bit mode (with g++ -m32 ...
).
这篇关于gdb错误不是可执行格式:无法识别文件格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!