Meine App läuft einwandfrei, aber gdb kann sie nicht mit dem folgenden Fehler debuggen
(gdb) run
Starting program: /path/to/app
Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).
Ich bin auf OS X Lion. GDB-Version ist
$ gdb --version
GNU gdb 6.3.50-20050815 (Apple version gdb-1752) (Sat Jan 28 03:02:46 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".
Antworten:
In Snow Leopard und späteren Mac OS-Versionen reicht es nicht aus, die
gdb
ausführbare Datei zu codieren .Sie müssen diesem Handbuch folgen, damit es funktioniert: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt
In der Anleitung wird erklärt, wie es geht
lldb
, aber der Vorgang ist genau der gleichegdb
.quelle
sudo security add-trust
Leitung tut? Kann ich die.cer
Datei jetzt von meinem Desktop löschen ?codesign -s gdb_codesign `which gdb`
hilft nach dieser Anleitungsudo codesign -s gdb_codesign `which gdb-apple`
auf macOS sierra.Es funktioniert, wenn ich zu wechsle
sudo gdb executableFileName
! :) :)quelle
gdb
als Root zu laufen ? Ich war nur neugierig, weil es nur ein Debugger ist.rm -rf /
oder etwas ähnlich Zerstörerisches, bei dem Sie einige Konfigurationen / Binärdateien überschreiben, auf die sich Ihr Computer stützt, um normal zu starten und zu arbeiten.Sie müssen ein Zertifikat erstellen und gdb signieren:
Endlich können Sie gdb unterschreiben:
sudo codesign -s gdb-cert /usr/local/bin/ggdb
sudo ggdb ./myprog
quelle
Das Problem ist, dass Sie nicht als Root-Benutzer angemeldet sind (was Sie nicht möchten). Sie müssen ein Zertifikat erstellen, damit gdb Zugriff erhält. Folgen Sie diesem Tutorial und Sie sollten bereit sein zu gehen ...
http://sourceware.org/gdb/wiki/BuildingOnDarwin
Wenn alles andere fehlschlägt, verwenden Sie einfach:
sudo gdb executableFileName
quelle
codesign -s gdb-cert $(which gdb)
um diegdb
App zu signieren .Dieser Link hatte die klarste und detaillierteste Schritt-für-Schritt-Anleitung, damit dieser Fehler für mich verschwindet.
In meinem Fall musste ich den Schlüssel als "System" -Schlüssel haben, sonst funktionierte er nicht (was nicht in jeder URL erwähnt wird).
Auch das Töten
taskgated
ist eine praktikable (und schnellere) Alternative zum Neustart.Ich habe auch MacPorts deinstalliert, bevor ich diesen Prozess gestartet und die aktuelle GDB mit deinstalliert habe
brew uninstall gdb
.quelle
brew
.Ich brauchte diesen Befehl, damit er auf El Capitan funktioniert:
quelle
Ich habe dieses Tutorial befolgt und alles ist in Ordnung.
quelle
Unter MacOSX muss lldb mit einem Code signiert sein. Die Builds Debug und Release sind so eingestellt, dass sie ein Codesignaturzertifikat mit dem Namen lldb_codesign signieren.
[Hinweis: - lldb wird in mac als gdb verwendet.]
quelle
Hier ist eine wirklich nützliche Anleitung, die mein Problem gelöst hat (OSX 10.13.6).
codesign -fs gdbc /usr/local/bin/gdb
in Terminal: Das fragt das root - Passwortquelle
Diese Anweisungen funktionieren für OSX High Sierra und vermeiden es, gdb als root auszuführen (yuck!). Ich habe kürzlich von OSX 10.13.2 auf 10.3.3 aktualisiert. Ich denke, dies war der Zeitpunkt, an dem GDB 8.0.1 (installiert mit Homebrew) für mich fehlschlug.
Ich hatte Schwierigkeiten mit den Anweisungen anderer Leute. Nach verschiedenen Anweisungen war alles ein Chaos. Also habe ich einen neuen angefangen. Ich habe diese Anweisungen mehr oder weniger befolgt .
Reinigen Sie das Chaos:
brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
Applications
->Utilities
-> habeKeychain Access
ich alle vorherigen GDB-Zertifikate und -Schlüssel gelöscht (stellen Sie sicher, dass Sie wissen, was Sie hier tun!). Es ist unklar, ob dies notwendig ist, aber da ich versucht hatte, diese Zertifikate und Schlüssel mithilfe anderer Anweisungen zu erstellen, habe ich sie trotzdem beseitigt. Ich hatte Schlüssel und Zertifikate sowohl im Login als auch im System.Installieren Sie jetzt gdb neu.
brew install gdb
Keychain Access
Gehen Sie innerhalb zu MenüKeychain Access
->Certificate Assistant
->Create a Certificate
Auf der zweiten Seite mit den Zertifikatinformationen habe ich alle Felder außer den bereits ausgefüllten leer gelassen.
Auf der Seite Informationen zu Schlüsselpaaren habe ich die Standardeinstellungen beibehalten
Auf der Erweiterungsseite für grundlegende Einschränkungen wurde nichts aktiviert (Standard).
Auf der Seite Betreff Alternative Namenserweiterung habe ich die Standardeinstellung aktiviert und nichts anderes hinzugefügt.
Ich habe auf Erstellen geklickt und wurde zur Eingabe meines Passworts aufgefordert.
Zurück in der
Keychain Access
App ging ich zuSystem
und klickte mit der rechten Maustaste daraufgdb-cert
undTrust
änderte im Dropdown-Menü alle Felder inAlways Trust
.Computer neu gestartet.
Am Terminal rannte ich
codesign -s gdb-cert /usr/local/bin/gdb
. Ich habe mein Passwort eingegeben, als ich dazu aufgefordert wurde.Am Terminal rannte ich
echo "set startup-with-shell off" >> ~/.gdbinit
Ich lief
gdb myprogram
und dannstart
in der GDB-Konsole. Hier, glaube ich, wurde ich aufgefordert, mein Passwort einzugeben. Danach wurde bei allen nachfolgenden Läufen nicht mehr nach meinem Passwort gefragt.quelle
Dies ist ein seltsamer Ansatz, aber er hat bei mir funktioniert (MacOs HighSierra 10.13.3). Installieren Sie CLion. Es kommt mit gdb. Führen Sie die GDB einmal mit Terminal aus. Kopieren Sie das GDB-Programm in Ihre usr / local / bin /. Kein Problem von Anmeldung, Sudo etc.
quelle
Das Befolgen der Anweisungen hier Codesodes gdb unter macOS schien dieses Problem für mich unter macOS High Sierra (10.13.3) zu lösen.
quelle