Comment installer gdb (debugger) dans Mac OSX El Capitan?
comment installer gdb (debugger) dans Mac OSX El Capitan ? J'ai essayé d'installer gdb, mais a échoué plusieurs fois.
j'ai suivi cette URL: http://ntraft.com/installing-gdb-on-os-x-mavericks / , MAC ne permet pas D'installer MacPorts.
quelqu'un Pourrait-il m'aider à cet égard.
8 réponses
il y a deux solutions au problème, et elles sont toutes les deux mentionnées dans d'autres réponses à cette question et à Comment faire fonctionner gdb en utilisant macports sous OSX 10.11 El Capitan? , mais pour clarifier une certaine confusion voici mon résumé (comme une réponse car il a obtenu un peu long pour un commentaire):
quelle alternative est la plus sûre je suppose se résume au choix entre 1) Les certificats auto-signés de confiance et 2) donner aux utilisateurs plus privilège.
Alternative 1: signer le binaire
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, débogage est seulement autorisé pour les utilisateurs dans le _developer
groupe .
utilisant codesign pour signer à l'aide d'un cert intitulé gdb-cert
:
codesign -s gdb-cert /opt/local/bin/ggdb
(en utilisant le chemin Standard MacPorts, adoptez si nécessaire)
pour des recettes de signature de code détaillées (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 besoin pour redémarrer l'application Porte-clés et le service taskgated pendant et après le processus (la manière la plus simple est de redémarrer).
variante 2: utiliser l'option legacy pour les tâches
selon la réponse de @user14241, désactiver SIP et ajouter l'option-p à taskgated
est une option. Notez que si vous utilisez cette option, signer le binaire n'est pas nécessaire , et il court-circuite également la boîte de dialogue pour l'authentification en tant que membre du groupe Developer Tools ( _developer
).
après l'ajout de l'option-p (allow groups procmod and procview), vous devez aussi ajouter les utilisateurs qui devraient être autorisés à utiliser gdb au groupe procmod .
la recette est:
-
redémarrer en mode récupération, ouvrir un terminal et exécuter
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émarrer en mode de récupération pour permettre SIP (
csrutil enable
) -
redémarrer la machine et ajouter l'utilisateur
USERNAME
au groupeprocmod
:sudo dseditgroup -o edit -a USERNAME -t user procmod
une alternative qui n'implique pas ajouter des utilisateurs aux groupes est à rendre l'exécutable setgid procmod , car cela fait également
procmod
l'identifiant de groupe efficace 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
installer la première tire-lait:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
puis lancez ceci: brew install gdb
cela ne répond pas nécessairement à la question mais si vous utilisez Mac OS X alors vous pouvez probablement utiliser lldb
LLDB Homepage . Il est très similaire à gdb
et fournit même un guide d'utilisation des commandes que vous utiliseriez sur gdb
.
voici un billet de blog qui 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 faire fonctionner:
-
créer un certificat de signature codant via accès au porte-clés :
1.1 À partir du Menu, sélectionnez Porte-Clés accès > Assistant de certificat > créer un Certificat...
1.2 suivez l'assistant pour créer un certificat et nommez-le
gdb.cert
, le Type D'identité est auto signé Root , et le type de certificat est signature de Code et sélectionnez la commande par défaut.1.3 Cliquez plusieurs fois sur Continuer jusqu'à ce que vous arriviez au spécifiez un emplacement pour L'écran de certificat , puis définissez Porte-clés à système .
-
Install gdb via Homebrew:
brew install gdb
-
redémarrage
taskgated
:sudo killall taskgated && exit
-
rouvrir une fenêtre de Terminal et dactylographier
sudo codesign -vfs gdb.cert /usr/local/bin/gdb
sur mon Mac OS X El Capitan, j'utilise homebrew pour installer gdb:
brew install gdb
alors je suis l'instruction ici: https://sourceware.org/gdb/wiki/BuildingOnDarwin , dans la section 2.1. Méthode pour Mac OS X 10.5 (Leopard) et plus tard .
une fois que vous aurez installé la version macports de gdb
, vous devrez désactiver SIP pour effectuer les modifications appropriées de /System/Library/LaunchDaemons/com.apple.taskgated.plist
. Pour désactiver SIP, vous devez redémarrer en mode 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>
, Alors vous devrez redémarrer pour que les modifications prennent effet. Alors vous devriez reenable SIP. La commande gdb
pour l'installation de macports est en fait ggdb
. Vous devez coder le signe ggdb
en suivant les instructions ici:
https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html
la seule façon dont j'ai pu faire fonctionner la signature de code est d'exécuter ggdb
avec sudo
. Bonne chance!
il semble que MacPorts pourrait être installé à El Capitan en ce moment: https://www.macports.org/install.php Alors vous pouvez probablement installer gdb par lien que vous avez mentionné.
vient de passer quelques jours à essayer de faire marcher ça sur High Sierra 10.13.1. La version gdb 8.1 de homebrew ne fonctionnerait pas, peu importe ce que j'ai essayé. A fini par installer gdb 8.0.1 via macports et cela a fonctionné miraculeusement (après avoir sauté à travers tous les autres cerceaux nécessaires liés à la co-conception etc).
un problème supplémentaire est que dans Eclipse vous obtiendrez des citations simples étrangères autour de tous vos arguments de programme qui peuvent être travaillés autour de fournir les arguments à l'intérieur .gdbinit à la place.