Comment installer gdb (débogueur) sous Mac OSX El Capitan? J'ai essayé d'installer gdb mais j'ai échoué quelques fois.
Je suivais l'URL suivante: http://ntraft.com/installing-gdb-on-os-x-mavericks/ , le MAC ne permet pas d'installer MacPorts.
Quelqu'un pourrait-il m'aider s'il vous plaît à cet égard.
Veuillez noter que cette réponse a été écrite pour Mac OS El Capitan. Pour les versions plus récentes, prenez garde que cela ne s'appliquera plus. En particulier, l'option héritée est très probablement obsolète.
Il y a deux solutions au problème, et elles sont toutes deux mentionnées dans d'autres réponses à cette question et à Comment faire en sorte que gdb fonctionne avec macports sous OSX 10.11 El Capitan? , mais pour dissiper une certaine confusion, cliquez ici Voici mon résumé (en guise de réponse car il a pris un peu de temps pour un commentaire):
L’alternative la plus sûre, c’est le choix entre 1) faire confiance à des certificats auto-signés et 2) donner plus de privilèges aux utilisateurs.
Si l'option de signature est utilisée, il n'est pas nécessaire de désactiver SIP pour ajouter l'option -p à taskgated
.
Cependant , notez qu'avec cette alternative, le débogage n'est autorisé que pour les utilisateurs du _developer
groupe .
Utilisation de codesign pour vous connecter à l'aide d'un certificat nommé gdb-cert
:
codesign -s gdb-cert /opt/local/bin/ggdb
(en utilisant le chemin standard de MacPorts, adoptez-le si nécessaire)
Pour des recettes détaillées sur la signature de code (y compris la création de cert), voir: https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html ou - https://sourceware.org/gdb/wiki/BuildingOnDarwin
Notez que vous devez redémarrer l'application trousseau et le service à tâches pendant et après le processus (le moyen le plus simple consiste à redémarrer).
Conformément à la réponse de @ utilisateur14241, désactiver SIP et ajouter l'option -p à taskgated
est une option. Notez que si vous utilisez cette option , la signature du fichier binaire n’est pas nécessaire et contourne également la boîte de dialogue permettant de s’authentifier en tant que membre du groupe Outils du développeur (_developer
).
Après avoir ajouté l’option -p (autoriser les groupes procmod et procview) à taskgated, vous devez également ajouter les utilisateurs qui devraient être autorisés à utiliser gdb dans le groupe procmod .
La recette est:
redémarrez en mode de récupération, ouvrez un terminal et exécutez csrutil disable
redémarrez la machine et éditez /System/Library/LaunchDaemons/com.Apple.taskgated.plist
, en ajoutant le -p
opion:
<array>
<string>/usr/libexec/taskgated</string>
<string>-sp</string>
</array>
redémarrez en mode de récupération pour réactiver SIP (csrutil enable
)
redémarrez la machine et ajoutez l'utilisateur USERNAME
au groupe procmod
:
Sudo dseditgroup -o edit -a USERNAME -t user procmod
Une alternative qui n'implique pas l'ajout d'utilisateurs à des groupes consiste à l'exécutable setgid procmod , car cela fait également de procmod
l'identifiant effectif du groupe de tout utilisateur exécutant le binaire setgid (suggéré dans https://Apple.stackexchange.com/a/112132) )
Sudo chgrp procmod /path/to/gdb
Sudo chmod g+s /path/to/gdb
Installez d'abord Homebrew:
/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Puis lancez ceci: brew install gdb
Voici un article de blog l'explique très bien:
http://panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/
Et la façon dont je le fais fonctionner:
Créez un certificat de signature de codage via KeyChain Access :
1.1 Dans le menu, sélectionnez Accès KeyChain> Assistant de certification> Créer un certificat ...
1.2 Suivez l’assistant pour créer un certificat et nommez-le gdb.cert
, le type d’identité est la racine auto-signée et le type de certificat est Code Signing et sélectionnez l'option Permettez-moi de remplacer les valeurs par défaut.
1.3 Cliquez plusieurs fois sur Continuer jusqu'à ce que vous arriviez à l'écran Spécifiez un emplacement pour le certificat , puis définissez le trousseau à Système .
Installez gdb via Homebrew: brew install gdb
Redémarrez taskgated
: Sudo killall taskgated && exit
Rouvrez une fenêtre de terminal et tapez Sudo codesign -vfs gdb.cert /usr/local/bin/gdb
Cela ne répond pas nécessairement à la question, mais si vous utilisez Mac OS X, vous pouvez probablement utiliser lldb
LLDB Homepage . Il ressemble beaucoup à gdb
et fournit même un guide d'utilisation des commandes que vous utiliseriez sur gdb
.
Sur mon Mac OS X El Capitan, j'utilise homebrew pour installer gdb:
brew install gdb
Ensuite, je suis les instructions ici: https://sourceware.org/gdb/wiki/BuildingOnDarwin , dans la section 2.1. Méthode pour Mac OS X 10.5 (Leopard) et ultérieur .
Une fois que vous avez installé la version macports de gdb
, vous devrez désactiver SIP afin d’apporter les modifications appropriées à /System/Library/LaunchDaemons/com.Apple.taskgated.plist
. Pour désactiver SIP, vous devez redémarrer en mode de récupération et exécuter la commande suivante:
csrutil disable
Puis redémarrez. Ensuite, vous devrez éditer la partie inférieure de com.Apple.taskgated.plist
comme ceci:
<array>
<string>/usr/libexec/taskgated</string>
<string>-sp</string>
</array>
Ensuite, vous devrez redémarrer pour que les modifications prennent effet. Ensuite, vous devez réactiver SIP. La commande gdb
pour l'installation de macports est en fait ggdb
. Vous devrez coder le signe ggdb
en suivant les instructions ci-dessous:
https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html
Le seul moyen de faire fonctionner la signature de code est de lancer ggdb
avec Sudo
. Bonne chance!
Il semble que MacPorts pourrait être installé à El Capitan maintenant: https://www.macports.org/install.php Ensuite, vous pouvez probablement installer gdb avec le lien que vous avez mentionné.
Je viens de passer quelques jours à essayer de faire fonctionner cela sur High Sierra 10.13.1. La version gdb 8.1 de homebrew ne fonctionnerait pas, peu importe ce que j'ai essayé. Nous avons fini par installer gdb 8.0.1 via macports et cela a fonctionné miraculeusement (après avoir sauté dans tous les autres cercles nécessaires liés à la codification, etc.).
Un problème supplémentaire est que dans Eclipse, vous obtiendrez des guillemets simples superflus autour de tous les arguments de votre programme, qui peuvent être contournés en fournissant les arguments à l'intérieur de .gdbinit.