Mon application fonctionne bien mais gdb ne parvient pas à la déboguer avec l'erreur suivante
(gdb) run
Starting program: /path/to/app
Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).
Je suis sur OS X Lion. La version GDB est
$ 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".
Réponses:
Dans Snow Leopard et les versions ultérieures de Mac OS, il ne suffit pas de coder l'
gdb
exécutable.Vous devez suivre ce guide pour le faire fonctionner: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt
Le guide explique comment le faire pour
lldb
, mais le processus est exactement le même pourgdb
.la source
sudo security add-trust
ligne? Puis-je supprimer le.cer
fichier de mon bureau maintenant?codesign -s gdb_codesign `which gdb`
aide après ce guidesudo codesign -s gdb_codesign `which gdb-apple`
sur macOS sierra.Cela fonctionne quand je passe à
sudo gdb executableFileName
! :)la source
gdb
tant que root? J'étais juste curieux parce que c'est juste un débogueur.rm -rf /
ou quelque chose de similaire destructeur où vous écrasez certaines configurations / binaires sur lesquels votre ordinateur s'appuie pour démarrer et fonctionner normalement.Vous devez créer un certificat et signer gdb:
Enfin, vous pouvez signer gdb:
sudo codesign -s gdb-cert /usr/local/bin/ggdb
sudo ggdb ./myprog
la source
Le problème est que vous n'êtes pas connecté en tant qu'utilisateur root (ce que vous ne voulez pas). Vous devez créer un certificat pour que gdb soit autorisé à accéder. Suivez ce tutoriel et vous devriez être prêt à partir ...
http://sourceware.org/gdb/wiki/BuildingOnDarwin
Si tout le reste échoue, utilisez simplement:
sudo gdb executableFileName
la source
codesign -s gdb-cert $(which gdb)
pour signer l'gdb
application.Ce lien avait l'étape par étape la plus claire et la plus détaillée pour faire disparaître cette erreur pour moi.
Dans mon cas, je devais avoir la clé en tant que clé "Système", sinon cela ne fonctionnait pas (ce que toutes les URL ne mentionnent pas).
Tuer
taskgated
est également une alternative viable (et plus rapide) au redémarrage.J'ai également désinstallé MacPorts avant de commencer ce processus et désinstallé le gdb actuel en utilisant
brew uninstall gdb
.la source
brew
.J'avais besoin de cette commande pour le faire fonctionner sur El Capitan:
la source
J'ai suivi ce tutoriel, et tout va bien.
la source
Sur MacOSX, lldb doit être signé en code. Les versions Debug et Release sont définies sur la signature de code à l'aide d'un certificat de signature de code nommé lldb_codesign.
[Remarque: - lldb est utilisé dans mac comme gdb.]
la source
Voici un guide vraiment utile qui a résolu mon problème (OSX 10.13.6).
codesign -fs gdbc /usr/local/bin/gdb
dans le terminal: cela demande le mot de passe rootla source
Ces instructions fonctionnent pour OSX High Sierra et évitent d'exécuter gdb en tant que root (beurk!). J'ai récemment mis à jour OSX 10.13.2 vers 10.3.3. Je pense que c'est à ce moment que gdb 8.0.1 (installé avec homebrew) a commencé à échouer pour moi.
J'ai eu du mal avec les instructions des autres. Après des instructions différentes, tout était en désordre. Alors j'ai commencé une nouvelle. J'ai plus ou moins suivi ces instructions .
Nettoyez le désordre:
brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
Applications
->Utilities
->Keychain Access
, j'ai supprimé tous les certificats et clés gdb précédents (assurez-vous de savoir ce que vous faites ici!). On ne sait pas si cela est nécessaire, mais comme j'avais essayé de créer ces certificats et clés en utilisant d'autres instructions, je les ai quand même éliminés. J'avais des clés et des certificats à la fois dans la connexion et dans le système.Maintenant, réinstallez gdb.
brew install gdb
Keychain Access
, allez dans le menuKeychain Access
->Certificate Assistant
->Create a Certificate
Sur la 2ème page d'informations sur le certificat, j'ai laissé tous les champs vides sauf ceux déjà remplis.
Sur la page Informations sur la paire de clés, j'ai laissé les valeurs par défaut
Sur la page d'extension des contraintes de base, rien n'a été vérifié (par défaut).
Sur la page Extension de nom alternatif du sujet, j'ai laissé la valeur par défaut cochée et je n'ai rien ajouté d'autre.
J'ai cliqué sur Créer et j'ai été invité à entrer mon mot de passe.
De retour dans l'
Keychain Access
application, je suis alléSystem
et j'ai cliqué avec le bouton droit surgdb-cert
et sous le menu déroulantTrust
, j'ai changé tous les champs enAlways Trust
.Ordinateur redémarré.
Au terminal, j'ai couru
codesign -s gdb-cert /usr/local/bin/gdb
. J'ai entré mon mot de passe à l'invite.Au terminal, j'ai couru
echo "set startup-with-shell off" >> ~/.gdbinit
J'ai couru
gdb myprogram
, puisstart
dans la console gdb. Ici, je crois, cela m'a demandé mon mot de passe. Après cela, toutes les exécutions suivantes, il n'a pas demandé mon mot de passe.la source
C'est une approche étrange mais cela a fonctionné pour moi (MacOs HighSierra 10.13.3). Installez CLion. Il est livré avec gdb. Une fois exécutez le gdb en utilisant Terminal. Copiez le programme gdb dans votre usr / local / bin /. Aucun problème de connexion, sudo etc.
la source
Suivre les instructions ici Codesign gdb sur macOS semblait résoudre ce problème, pour moi, sur macOS High Sierra (10.13.3).
la source