Ubuntu 16.04で単純な「hello world」C++プログラムをデバッグしようとしていますが、gdbは実行可能ファイル形式を認識できません。ただし、コマンドラインで実行可能ファイルを正常に実行できます。これがコードです
#include <iostream>
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
コマンドを使用してプログラムファイルTestProject.cppをコンパイルします
g++ -g TestProject.cpp -o hello
次にデバッグするために、私はコマンドを与えます
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仮想マシンで同じプログラムをデバッグできるからです。
ほぼ ks1322のコメントが正しいことは確かです。
./hello
は64ビットバイナリです(確認するにはfile ./hello
を使用してください)。x86_64
バイナリのデバッグ方法がわかりません。修正は簡単です。64ビットGDB(32ビットと64ビットの両方のバイナリをデバッグできます)をインストールしますor 32ビットモードでhello
をビルドします(g++ -m32 ...
)。
Mac OSでも同じ問題がありました。 gdbにバグがあります: https://sourceware.org/bugzilla/show_bug.cgi?id=23746 彼らのgitリポジトリはすでに修正されています。残念ながら、自作のビンにはまだそれがありません。そのため、私はgit clone git://sourceware.org/git/binutils-gdb.gitをgit cloneしてコンパイルし、readmeファイルに記述されているとおりにインストールする必要がありました。私はこれがubuntuであなたを修正すると信じています。
追伸それは私のマシンで動作しますが、ルートとしてEclipseを実行する必要があります:Sudo /.../MacOS/Eclipse。それ以外の場合、 起動:GDBの構成GDBの構成の中止 があります。私はそれを修正する方法がわからない原因(