Mon application fonctionne correctement, 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".
Dans Snow Leopard et les versions ultérieures de Mac OS, il ne suffit pas de coder l'exécutable gdb
.
Vous devez suivre ce guide pour que cela fonctionne: http://www.opensource.Apple.com/source/lldb/lldb-69/docs/code-signing.txt
Le guide explique comment procéder pour lldb
, mais le processus est exactement le même pour gdb
.
Cela fonctionne quand je change pour Sudo gdb executableFileName
! :)
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
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 échoue, utilisez simplement: Sudo gdb executableFileName
Ce lien a eu le plus clair et le plus détaillé, étape par étape, pour que cette erreur disparaisse pour moi.
Dans mon cas, je devais avoir la clé en tant que clé "Système", sinon cela ne fonctionnait pas (toutes les adresses URL ne le mentionnent pas).
Tuer taskgated
est également une alternative viable (et plus rapide) au redémarrage.
J'ai également désinstallé MacPorts avant de démarrer ce processus et désinstallé le gdb actuel à l'aide de brew uninstall gdb
.
J'avais besoin de cette commande pour que cela fonctionne sur El Capitan:
Sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer
Voici un guide vraiment utile qui a résolu mon problème (OSX 10.13.6).
codesign -fs gdbc /usr/local/bin/gdb
in terminal: demande le mot de passe rootSur MacOSX, lldb doit être signé avec un code. Les versions Debug et Release sont définies pour signer le code à l'aide d'un certificat de signature de code nommé lldb_codesign.
If you don't have one yet you will need to:
- Launch /Applications/Utilities/Keychain Access.app
- In Keychain Access select the "login" keychain in the "Keychains"
list in the upper left hand corner of the window.
- Select the following menu item:
Keychain Access->Certificate Assistant->Create a Certificate...
- Set the following settings
Name = lldb_codesign
Identity Type = Self Signed Root
Certificate Type = Code Signing
- Click Continue
- Click Continue
- Click Done
- Click on the "My Certificates"
- Double click on your new lldb_codesign certificate
- Turn down the "Trust" disclosure triangle
Change:
When using this certificate: Always Trust
- Enter your login password to confirm and make it trusted
The next steps are necessary on SnowLeopard, but are probably because of a bug
how Keychain Access makes certificates.
- Option-drag the new lldb_codesign certificate from the login keychain to
the System keychain in the Keychains pane of the main Keychain Access window
to make a copy of this certificate in the System keychain. You'll have to
authorize a few more times, set it to be "Always trusted" when asked.
- Switch to the System keychain, and drag the copy of lldb_codesign you just
made there onto the desktop.
- Switch to Terminal, and run the following:
Sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer
- Right click on the "lldb_codesign" certificate in the "System" keychain (NOT
"login", but the one in "System"), and select "Delete" to delete it from
the "System" keychain.
- Reboot
- Clean and rebuild lldb and you should be able to debug.
That should do it.
[Note: - lldb est utilisé dans mac comme gdb.]
J'ai suivi ceci tutoriel, et tout va bien.
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 à 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 je m'étais égaré en essayant de créer ces certificats et ces clés en utilisant d'autres instructions, je les ai quand même éliminés. J'ai eu des clés et des certificats dans la connexion et le système.Maintenant, réinstallez gdb.
brew install gdb
Keychain Access
, allez au menu Keychain Access
-> Certificate Assistant
-> Create a Certificate
Name : gdb-cert Identity Type: Self Signed Root Certificate Type : Code Signing [X] Let me override defaults
Serial Number : 1 Validity Period (days): 3650
Sur la page 2nd Certificate Information, j’ai laissé tous les champs vides, à l’exception de ceux déjà remplis.
Sur la page Informations sur la paire de clés, j'ai laissé les valeurs par défaut.
Key Size : 2048 Algorithm : RSA
[X] Include Key Usage Extension [X] This extension is critical Capabilities: [X] Signature
[X] Include Extended Key Usage Extension [X] This extension is critical Capabilities: [X] Code Signing
Sur la page d’extension Basic Constraints, rien n’était coché (par défaut).
Sur la page Sujet Autre nom, vous avez coché la case par défaut sans rien ajouter d'autre.
[X] Include Subject Alternate Name Extension
Keychain: System
J'ai cliqué sur Créer et on m'a demandé mon mot de passe.
De retour dans l'application Keychain Access
, je suis allé à System
et un clic droit sur gdb-cert
et sous le menu déroulant Trust
, j'ai changé tous les champs en Always Trust
.
Ordinateur redémarré.
Au terminal, j'ai exécuté codesign -s gdb-cert /usr/local/bin/gdb
. J'ai entré mon mot de passe lorsque vous y êtes invité.
Au terminal, j'ai couru echo "set startup-with-Shell off" >> ~/.gdbinit
J'ai exécuté gdb myprogram
puis start
dans la console gdb. Ici, je crois, cela m’a demandé mon mot de passe. Après cela, toutes les exécutions ultérieures, il n'a pas demandé mon mot de passe.
C'est une approche étrange mais qui a fonctionné pour moi (MacOs HighSierra 10.13.3). Installez CLion. Il vient avec gdb. Une fois, lancez gdb en utilisant Terminal. Copiez le programme gdb dans votre répertoire/local/bin /. Pas de problème de connexion, Sudo etc.
Suivre les instructions ici Codesign gdb sur macOS semblait résoudre ce problème, pour moi, sous macOS High Sierra (10.13.3).