Comment faire pour installer gdb (debugger) sous Mac OSX El Capitan?
Comment installer gdb (debugger) sous Mac OSX El Capitan ? J'ai essayé d'installer gdb, mais a échoué plusieurs fois.
J'ai été suite à cette URL : http://ntraft.com/installing-gdb-on-os-x-mavericks/ , MAC n'est pas de permettre à installer MacPorts.
Quelqu'un pourrait-il m'aider à cet égard.
Vous devez vous connecter pour publier un commentaire.
Veuillez noter que cette réponse a été écrite pour Mac OS El Capitan. Pour les versions plus récentes, méfiez-vous qu'il ne peut plus s'appliquer. En particulier, l'option legacy est peut-être obsolète.
Il y a deux solutions à ce problème, et ils sont tous les deux mentionné dans d'autres réponses à cette question et à Comment obtenir gdb pour le travail à l'aide de macports sous OS x 10.11 El Capitan?, mais à dissiper une certaine confusion voici mon résumé (comme une réponse depuis, c'est devenu un peu long pour un commentaire):
Alternative qui est plus sûr, je suppose que revient le choix entre 1) la confiance des certificats auto-signés et 2) en donnant aux utilisateurs plus de privilèges.
Variante 1: la signature de l'binaire
Si la signature de remplacement est utilisé, la désactivation de la SIP pour ajouter l'option-p pour
taskgated
n'est pas nécessaire.Cependant, à noter qu'avec cette alternative, de débogage est uniquement autorisée pour les utilisateurs dans le
_developer
groupe.À l'aide de codesign de signer à l'aide d'un cert nommé
gdb-cert
:codesign -s gdb-cert /opt/local/bin/ggdb
(à l'aide de la MacPorts chemin d'accès standard, adopter, si nécessaire)
Pour le détail de la signature du code des recettes (incl cert création), 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 de redémarrer le trousseau d'accès de l'application et de la taskgated service pendant et après le processus (la façon la plus simple est de redémarrer).
Solution 2: utiliser l'option legacy pour taskgated
Que par la réponse par @user14241, la désactivation de la SIP et en ajoutant l'option-p pour
taskgated
est une option. Notez que si vous utilisez cette option, la signature de l'binaire n'est pas nécessaire, et il contourne également la boîte de dialogue de l'authentification en tant que membre du les Outils de développement du groupe (_developer
).Après l'ajout de l'option-p (permettre à des groupes procmod et procview) à taskgated vous devez également ajouter les utilisateurs qui devraient être autorisés à utiliser gdb pour le procmod groupe.
La recette est:
redémarrer en mode de récupération, ouvrez un terminal et exécutez
csrutil disable
redémarrer la machine et modifier
/System/Library/LaunchDaemons/com.apple.taskgated.plist
, l'ajout d'le
-p
opion:redémarrer en mode de récupération pour réactiver SIP (
csrutil enable
)redémarrer la machine et ajouter un utilisateur
USERNAME
pour le groupeprocmod
:sudo dseditgroup -o edit -a USERNAME -t user procmod
Une alternative qui ne nécessitent pas l'ajout d'utilisateurs à des groupes est de rendre le fichier exécutable setgid procmod, comme ce qui le rend d'
procmod
le groupe efficace id de tout utilisateur qui exécute le setgid binaire (suggéré dans https://apple.stackexchange.com/a/112132)Unable to find Mach task port for process-id 576: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8))
. b. la situation est plus complexe par la suite - la méthode 2 a fait un travail aussi loin que gdb, MAIS sérieusement foiré mon système de sorte qu'aucun tiers (à l'exclusion intégré dans mac os X apps) de les lancer plus (tous signalé une exception pertinents pour la signature de code) - je n'ai trouvé aucun moyen de revenir à d'autres qu'à l'aide de time machine et après cela, j'ai vérifié que c'était la méthode 2 qui a causé le problème - l'ensemble de ces avec un MacBook pro 10.11.3id
a un204(_developer)
entrée, et quand j'ai réessayercodesign
il me ditgdb
est déjà codesigned.taskgated
a été redémarré (nouveau pid). pas sûr de ce que j'ai pu vérifier de nouveau. va essayer la méthode 2. merci pour documenter vos processus.brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/gdb.rb
Installer Homebrew première :
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Puis exécutez ce :
brew install gdb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/gdb.rb
Ce n'est pas nécessairement répondre à la question, mais si vous utilisez Mac OS X, vous pouvez probablement utiliser
lldb
LLDB page d'Accueil . C'est très similaire àgdb
et offre même un guide à l'aide de commandes que vous pouvez utiliser surgdb
.Voici un post de blog, il 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 du codage via Trousseau d'Accès:
1.1 à Partir du Menu, sélectionnez Trousseau d'Accès > Certificat d'Assistant - > Créer un Certificat...
1.2 Suivez l'assistant pour créer un certificat et de laisser son nom il
gdb.cert
, le Type d'Identité est Auto-Signé Racine, et le Type de Certificat est de Signature de Code et sélectionnez l'Permettez-moi de remplacer les valeurs par défaut.1.3 Cliquez plusieurs fois sur jusqu'à ce que vous obtenez à la Spécifier un Emplacement Pour L'écran du Certificat, puis définissez Trousseau à Système.
Installer gdb via Homebrew:
brew install gdb
Redémarrer
taskgated
:sudo killall taskgated && exit
Rouvrir une fenêtre de Terminal et tapez
sudo codesign -vfs gdb.cert /usr/local/bin/gdb
Sur mon Mac OS X El Capitan, je utiliser homebrew installer gdb:
Puis-je suivre les instructions 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 obtenez le macports version de
gdb
installé, vous devez désactiver le SIP afin de faire le bon modifications à/System/Library/LaunchDaemons/com.apple.taskgated.plist
. Pour désactiver SIP, vous devez redémarrer en mode de récupération et d'exécuter la commande suivante:Puis sur redémarrer. Ensuite, vous devrez modifier la partie inférieure de
com.apple.taskgated.plist
comme ceci:Ensuite, vous devrez redémarrer pour que les modifications prennent effet. Ensuite, vous devez réactiver le protocole SIP. Le
gdb
de commande pour l'installer macports est en faitggdb
. Vous aurez besoin de code signerggdb
en suivant les instructions ici:https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html
Le seul moyen que j'ai été en mesure d'obtenir la signature du code du travail est en cours d'exécution
ggdb
avecsudo
. Bonne chance!procmod
groupe.Il semble que MacPorts pourrait être installé dans El Capitan dès maintenant:
https://www.macports.org/install.php
Ensuite, vous pouvez probablement installer gdb par le lien que vous avez mentionné.
Viens de passer quelques jours à essayer d'obtenir que cela fonctionne sur la High Sierra 10.13.1. Le gdb 8.1 version de homebrew ne serait pas du travail, peu importe ce que j'ai essayé. Fini par installer gdb 8.0.1 via macports, et ce miraculeusement travaillé (après un saut de tous les autres cerceaux liées à codesigning etc).
Un autre problème est que, dans Eclipse, vous obtiendrez étrangères des guillemets simples autour de l'ensemble de vos arguments de programme qui peut être contourné en fournissant les arguments à l'intérieur .gdbinit à la place.