web-dev-qa-db-fra.com

Comment installer gdb (débogueur) sous Mac OSX El Capitan?

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.

40
Tauheed Khan Mohd

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.

Alternative 1: signature du 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, 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).

Alternative 2: utilisez l'option héritée pour les tâches

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:

  1. redémarrez en mode de récupération, ouvrez un terminal et exécutez csrutil disable

  2. 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>
    
  3. redémarrez en mode de récupération pour réactiver SIP (csrutil enable)

  4. 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 
    
27
drRobertz

Installez d'abord Homebrew:

/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Puis lancez ceci: brew install gdb

28
Sankalp Singha

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:

  1. 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 .

  2. Installez gdb via Homebrew: brew install gdb

  3. Redémarrez taskgated: Sudo killall taskgated && exit

  4. Rouvrez une fenêtre de terminal et tapez Sudo codesign -vfs gdb.cert /usr/local/bin/gdb

11
ryenus

Cela ne répond pas nécessairement à la question, mais si vous utilisez Mac OS X, vous pouvez probablement utiliser lldbLLDB Homepage . Il ressemble beaucoup à gdb et fournit même un guide d'utilisation des commandes que vous utiliseriez sur gdb.

11
user2074102

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 .

8
Châu Hồng Lĩnh

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!

2
user14241

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é.

0
m.aibin

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.

0
llevar