gdb 8.2 nicht erkannt ausführbare Datei auf macOS Mojave-10.14
Bekomme ich den gdb von brew install gdb
.
Die Quelle für die Datei-Inhalte:
#include <cstdio>
int main(){
int a = 10;
for(int i = 0; i< 10; i++){
a += i;
}
printf("%d\n",a);
return 0;
}
Hier ist die ausführbare Datei mit dem Namen 'demo':
https://pan.baidu.com/s/1wg-ffGCYzPGDI77pRxhyaw
Ich kompilieren der Quellcode-Datei wie diese:
c++ -g -o demo demo.cpp
Und gdb
gdb ./demo
Aber, es kann nicht funktionieren. Es kann nicht erkannt, die ausführbare Datei.
GNU gdb (GDB) 8.2
Copyright (C) 2018 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 "x86_64-apple-darwin18.0.0".
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"...
BFD: /Users/xxx/Codes/demo: unknown load command 0x32
BFD: /Users/xxx/Codes/demo: unknown load command 0x32
"/Users/xxx/Codes/demo": not in executable format: file format not recognized
Benutze ich file demo
,dessen Ausgang demo: Mach-O 64-bit executable x86_64
Benutze ich file ./demo
ist,ist der output ./demo: Mach-O 64-bit executable x86_64
Typ c++ -v
, Ausgabe :
Apple LLVM version 10.0.0 (clang-1000.10.44.2)
Target: x86_64-apple-darwin18.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
laufen ./demo
ist,ist der output 55
geben Sie show configuration
im gdb,es zeigt:
This GDB was configured as follows:
configure --host=x86_64-apple-darwin18.0.0 --target=x86_64-apple-darwin18.0.0
--with-auto-load-dir=:${prefix}/share/auto-load
--with-auto-load-safe-path=:${prefix}/share/auto-load
--with-expat
--with-gdb-datadir=/usr/local/Cellar/gdb/8.2/share/gdb (relocatable)
--with-jit-reader-dir=/usr/local/Cellar/gdb/8.2/lib/gdb (relocatable)
--without-libunwind-ia64
--without-lzma
--without-babeltrace
--without-intel-pt
--disable-libmcheck
--without-mpfr
--with-python=/System/Library/Frameworks/Python.framework/Versions/2.7
--without-guile
--with-separate-debug-dir=/usr/local/Cellar/gdb/8.2/lib/debug (relocatable)
Kann mir wer helfen ? Ich danke Ihnen sehr !!!
- Was
gdb
verwenden Sie? Wie hast du es bekommen? Haben Sie heruntergeladen haben, seinen source-code von sourceware.org/gdb/download und kompiliert es? Wenn ja, wie hast du es konfiguriert? Wenn Nein, zeigen Sie die Ausgabe desshow configuration
imgdb
. Ebenfalls für Ihrec++
(ist es GCC, Geräusch, ....)? Die Ausgabe vonc++ -v
. Sind Sie in der Lage zu laufen./demo
im gleichen terminal ? Was ist die Ausgabe vonfile ./demo
? - Zeigen Sie vielleicht die Quelle
demo.cpp
(oder machen es zu einem kleinen minimale reproduzierbare Beispiel). Versuch erstmal mit einem Hallo-Welt-Beispiel wie - Dies klingt wie eine Menge, sourceware.org/bugzilla/show_bug.cgi?id=13157, außer das wurde behoben, 8.2. Beachten Sie auch, dass es einige macOS-Updates, die nur auf dem git master --, und Sie werden benötigt, beginnend zumindest mit High Sierra.
- Auch denke ich nicht, dass jemand die Arbeit auf gdb hat versucht Mojave-noch. Die Einreichung einer gdb bug wäre toll. Noch besser wäre das anbringen eines "hello world"-Typ executable, wo es scheitert.
- Versucht, sowohl die gdb 8.0 und 8.2, gleiche problem
- Ich traf das gleiche problem auf meinem mac auch. Sie könnten versuchen
lldb
(was gut funktioniert), bis jemand das problem beheben können. - Ich habe versucht zu deinstallieren gdb mit homebrew und installieren Sie es von der folgenden Quellen BuildingOnDarwin Anleitung, aber gleiche problem
- Gemeldet ich hab diesen Fehler #23746, sourceware.
- Ich zog in der Nähe der anderen Frage, weil ich glaubte, es sei ein Duplikat. Aber wie Sie sehen können, hat die Gemeinde nicht geschlossen, die andere Frage als Duplikat. Daher, so Verschieden Sie auch sind Fragen, die in diesem moment in der Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass
clang-1000.11.45.2
verteilt mitApple LLVM version 10.0.0
fügen Sie einen neuen Befehl load o-mach ausführbaren Dateien namensLC_BUILD_VERSION
.Aus der apple Quelle:
Also derzeit
bfd
(Programm von gdb zu manipulieren Programme) ist nicht in der Lage diese zu interpretieren Befehl ein, und gibt den Fehler zurück.Die temporäre Lösung, die ich fand ist direkt Bearbeiten
bfd
Quellen bieten mitgdb
.Ich habe nur test mit
gdb-8.0.1
.Ersten, download
gdb-8.0.1
Quellen aus Spiegel. Dann fügen Siegdb-8.0.1/bfd/mach-o.c
Sie den folgenden code in Zeile4649
:Und schließlich fügen int
gdb-8.0.1/include/mach-o/loader.h
:in Zeile
189
(vergessen Sie nicht, fügen Sie ein,
am Ende der Linie 188 nachBFD_MACH_O_LC_VERSION_MIN_WATCHOS = 0x30
).Nach diesen Anweisungen, die Sie Folgen können, eine klassische
gdb
Zusammenstellung als angeben, innerhalb der README :Vergessen Sie nicht zu Unterschreiben
gdb
erklären,hier.Wenn Sie immer noch den (os/kern) - Fehler (0x5) Fehler, führen Sie einfach
sudo gdb
.Dies ist eine temporäre Lösung warten, für das GNU-team lösen Sie das problem direkt an der repo.
BEARBEITEN
Binutils-gdb
aktualisiert wurde, sind diese änderungen nun umgesetzt Begehen fc7b364.Hoffe, Es wird hilfreich sein.
bfd
nicht direktgdb
,bfd
befindet sich im inneren derbinutils
Paket. Erhalten Siebinutils
über gitgit clone git://sourceware.org/git/binutils-gdb.git
. Folgen Sie der readme-Datei zu kompilieren und zu installierenbinutils
ich bin mit gdb 8.0.1 um Kompatibilitätsprobleme zu vermeiden.brew
dieses update? UPDATE: ja, Diskurs.brauen.sh/t/...Veröffentlichte ich eine temporäre brauen Formel, die zu funktionieren scheint, während Sie darauf warten, für die amtliche brauen Formel aktualisiert werden:
brew installieren https://raw.githubusercontent.com/timotheecour/homebrew-timutil/master/gdb_tim.rb
Upgrade auf GDB version 8.3. Siehe auch Problem 23728, binutils nicht auf macOS 10.14 (Mojave) aufgrund unimpl in den Binutils bug-tracker.
Aus der bug-report:
Habe ich für mich eine gute Lösung von stack overflow und ich weiß nicht, warum es funktioniert.
Hier ist die link.
Ich bin neu auf macOS, und ich Tue das folgende:
BFD: /Users/xxx/Codes/demo: unknown load command 0x32
Unknown Error -2,147,414,007
.ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". Unable to find Mach task port for process-id 1510: (os/kern) failure (0x5).
nach gewusst wie: Rückgängigmachen von codesign, etwas falsch, noch existiert, und die Antwort sagt mir zu(please check gdb is codesigned - see taskgated(8))
brew reinstall gdb
, aber es funktioniert immer noch nicht, ich nannte es ein Tag gestern.Hoffe, meine Lösung hilft.
Bekam ich gdb arbeiten Mojave-von:
a) immer die neuesten gdb Quellcode-Archiv (zum Zeitpunkt des Schreibens, ftp://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-8.2.50.20190212.tar.xz) unter anderem, es fügt Handhabung für das erkennen von ausführbaren Dateien auf dem Mac.
b) build-gdb. Ich habe Fehler für variable shadowing im darwin-nat.c, so dass ich die Datei bearbeitet und wieder aufgebaut.
c) führen Sie die Schritte in https://forward-in-code.blogspot.com/2018/11/mojave-vs-gdb.html
Voila.
(Quelle: GDB auf Mac/Mojave: Während startup-Programm beendet mit signal ?, Unbekannte signal)
gdb 8.2 Installation von Homebrew ist nicht kompatibel mit Mac mojave.
Ich habe ein upgrade auf 8.2.1. Das Problem sollte behoben sein.
Habe ich hinter dieses Problem auf Mojave durch die Ausdünnung der app. GDB nicht verstehen universal binaries. Also, wenn
file myapp
sagt Sie myapp ist ein universal binary, versuchen Sie dies:Dann