Je suis sous osx 10.8.4 et j'ai installé gdb 7.5.1 avec homebrew (la motivation obtient un nouveau gdb avec de nouvelles fonctionnalités telles que --with-python etc ...)
En bref, lorsque j'exécute le débogage dans un projet C ++ Eclipse, j'obtiens:
Error in final launch sequence
Failed to execute MI command:
-exec-run
Error message from debugger back end:
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
J'ai suivi diverses suggestions pour la signature de code
- https://sourceware.org/gdb/wiki/BuildingOnDarwin
- en partie http://www.noktec.be/archives/1251 avec divers ajustements
Alors j'ai fait:
- Configurer le certificat
- Signez le gdb -> codesign -s gdb-cert / usr / local / bin / gdb
Quand je relance le débogage dans Eclipse, j'obtiens la même erreur que ci-dessus "(veuillez vérifier que gdb est codé - voir taskgated (8))".
Si je remets le gdb à l'ancien gdb (dans les préférences gdb d'Eclipse) / usr / libexec / gdb / gdb-i386-apple-darwin, le débogage se déroule comme prévu.
Des solutions / astuces là-bas?
THX
Pelle
Réponses:
Cette erreur se produit car OSX implémente une politique d'accès pid qui nécessite une signature numérique pour les binaires pour accéder à d'autres processus pids. Pour activer l'accès gdb à d'autres processus, nous devons d'abord signer le code binaire. Cette signature dépend d'un certificat particulier, que l'utilisateur doit créer et enregistrer auprès du système.
Pour créer un certificat de signature de code, ouvrez l'application Keychain Access. Choisissez le menu Accès au trousseau -> Assistant de certificat -> Créer un certificat…
Choisissez un nom pour le certificat (par exemple, gdb-cert), définissez Type d'identité sur Racine auto-signée, définissez Type de certificat sur Signature de code et sélectionnez les valeurs par défaut Permettez-moi de remplacer. Cliquez plusieurs fois sur Continuer jusqu'à ce que vous arriviez à l'écran Spécifier un emplacement pour le certificat, puis définissez Trousseau sur Système.
Double-cliquez sur le certificat, ouvrez la section Trust et définissez Code Signing sur Always Trust. Quittez l'application Keychain Access.
Redémarrez le service géré par tâches et signez le binaire.
source http://andresabino.com/2015/04/14/codesign-gdb-on-mac-os-x-yosemite-10-10-2/
Sur macOS 10.12 (Sierra) et versions ultérieures, vous devez également
Utiliser gdb 7.12.1 ou version ultérieure Empêchez également gdb d'utiliser un shell pour démarrer le programme à déboguer. Vous pouvez utiliser la commande suivante pour cela dans gdb:
Vous pouvez également placer cette dernière commande dans un fichier appelé .gdbinit dans votre répertoire personnel, auquel cas elle sera appliquée automatiquement à chaque fois que vous démarrez gdb
SOURCE: https://sourceware.org/gdb/wiki/BuildingOnDarwin
la source
macOS Sierra
avec les certificats auto-signés.sudo killall taskgated
est la clé pour résoudre mon problèmeJ'ai fait fonctionner gdb sur OSX 10.9 sans code de cette façon (décrit ici ):
Installez gdb avec macports. (peut-être que vous pouvez le sauter)
sudo nano /System/Library/LaunchDaemons/com.apple.taskgated.plist
changer la chaîne d'option de
-s
à-sp
à la ligne 22, col 27.Redémarrez l'ordinateur.
Utilisez gdb. Si vous l'avez installé avec des ports mac, vous devez utiliser la
ggdb
commande. Ou créez un alias dans votre fichier de configuration:alias gdb='ggdb'
et utilisez ensuite la commande 'gdb'.
la source
gdb
commesudo
. Cela semble être un risque de sécurité inutile.J'ai mis à niveau
gdb 8.3
et je n'ai pas pu faire fonctionner les choses. Cela m'a aidé:Où le contenu de
gdb.xml
est:J'ai trouvé cette solution ici: https://timnash.co.uk/getting-gdb-to-semi-reliably-work-on-mojave-macos/
Remarque: sans le droit, je ne pouvais courir
gdb
qu'avecsudo
.la source
error: The specified item could not be found in the keychain.
J'ai rencontré le même problème avec GDB. Je cours sous
Mac OS X 10.8.5
aka Mountain Lion. J'utilise la version GDB7.7.1
.J'ai compilé mon programme de test avec la commande suivante:
Si j'ai entré la commande
gdb sample.out
, j'obtiens le même message d'erreur cryptique:Ce message d'erreur est cependant un hareng rouge.
La solution que j'ai trouvée et qui fonctionnait pour moi était d'appeler simplement GDB en utilisant le compte de superutilisateur:
Cela fonctionne bien pour moi.
Et qu'à partir de là, je pourrais exécuter GDB example.out sans utiliser sudo.
J'espère que cela aide et fonctionne pour les autres. RSVP si ce n'est pas le cas.
la source
Rien de tout cela n'a fonctionné pour moi et j'ai dû faire un long parcours. Voici une liste complète des étapes que j'ai effectuées pour le faire fonctionner.
Malheureusement, le certificat système m'a donné ce
Unknown Error = -2,147,414,007
qui est très utile, j'ai donc dû aller avec une solution de contournement.KeyChain Assistant -> Create certificate ->
Choisissez
login
,gdb-cert
,Code Signing
Copier / déplacer le certificat vers le trousseau système (saisir le mot de passe)
gdb-cert
) cliquez surGet info
->Trust Always
startup-with-shell
Entrez dans la console:
set startup-with-shell off
Souvenez-vous de la configuration:
echo "set startup-with-shell off" >> ~/. gdbinit
Allez à
System Preferences
->Users & Groups
->Unlock it
->Login Options
->Network Account Server
->Join
->Unlock it
->Edit
(menu) ->Enable Root User
sudo killall taskgated
codesign -fs gdb-cert "$(which gdb)"
PS. Je finis par utiliser
lldb
parce que ça marche ( tutoriel )la source
Pour tous ceux qui utilisent Sierra 10.12.6 (et plus) et Homebrew,
/usr/local/bin/gdb
un lien symbolique vers/usr/local/Cellar/gdb/8.0/bin/gdb
(ou n'importe quelle version, par exemple8.0.1
).Vous devez coder à la fois le lien et la cible:
Ou, si vous avez
greadlink
(installé viabrew install coreutils
):la source
Je me demande si le changement global de la réponse la plus votée ici a des conséquences involontaires.
Plutôt que d'activer l'ancienne convention Tiger, taskgated autorise l'exécution du code signé. Il serait donc préférable d'obtenir simplement un certificat signé pour gdb, similaire à la réponse ici .
Après cela, j'ai pu
sudo
utiliser gdb. Si vous avez besoin d'utiliser gdb sans sudo, ce lien vous aidera peut- être, avertissement, je ne l'ai pas encore essayé car l'utilisationsudo
est une solution correcte pour le moment.la source
Cela peut ne pas être lié. Vous pouvez utiliser lldb sur macos au lieu de gdb. Vous n'avez pas besoin de ces tracas pour installer gdb.
lldb ( http://lldb.llvm.org ) est déjà installé par défaut dans High Sierra
la source
Je peux recommander de suivre cet essentiel: https://gist.github.com/gravitylow/fb595186ce6068537a6e9da6d8b5b96d#file-codesign_gdb-md
Avec astuce à surmonter:
unknown error = -2,147,414,007
lors de la création du certificat décrit ici: https://apple.stackexchange.com/a/309123Remarques:
Le chemin pour gdb installé en tant que
homebrew
package devrait être quelque chose comme:/usr/local/Cellar/gdb/9.2/bin/gdb
Et
csrutil enable --without debug
provoquera un message surrequesting unsupported configuration
, comme ici: https://totalfinder.binaryage.com/system-integrity-protectionTester:
la source
gdb 8,3;
Mon problème est le même que le gars ci-dessus, résolu par
la source