Как установить gdb (отладчик) в Mac OSX El Capitan?
Как установить gdb (отладчик) в Mac OSX El Capitan? Я попытался установить gdb, но не смог выполнить пару раз.
Я следил за этим URL-адресом: http://ntraft.com/installing-gdb-on-os-x-mavericks/, MAC не позволяет устанавливать MacPorts.
Может ли кто-нибудь помочь мне в этом отношении.
Ответы
Ответ 1
Есть два решения проблемы, и они оба упоминаются в других ответах на этот вопрос и Как заставить gdb работать с использованием macports под OSX 10.11 El Capitan?, но для устранения некоторой путаницы здесь приводится мое резюме (как ответ, так как он получил немного длинный комментарий):
Какая альтернатива более безопасна, я думаю, сводится к выбору между 1) доверяющими самоподписанными сертификатами и 2) предоставлением пользователям более привилегий.
Альтернатива 1: подписание двоичного файла
Если используется альтернатива подписи, отключение SIP для добавления опции -p в taskgated
не требуется.
Однако, обратите внимание, что с этой альтернативой отладка разрешена только для пользователей в группе _developer
.
Использование кода для подписывания с использованием сертификата с именем gdb-cert
:
codesign -s gdb-cert /opt/local/bin/ggdb
(используя стандартный путь MacPorts, при необходимости примите)
Для получения подробных рецептов подписи кода (включая создание сертификата), см.
https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html или
https://sourceware.org/gdb/wiki/BuildingOnDarwin
Обратите внимание, что вам нужно перезагрузить приложение для связывания ключей и службу с запросами во время и после процесса (самый простой способ - перезагрузка).
Альтернатива 2: используйте устаревший вариант для задания
В соответствии с ответом на @user14241 отключением SIP и добавлением опции -p к taskgated
является опция. Обратите внимание, что при использовании этой опции подписание двоичного файла не требуется, а также обходит диалоговое окно для проверки подлинности как члена группы инструментов разработчика (_developer
).
После добавления опции -p (разрешить группы procmod и procview) вам также необходимо добавить пользователей, которым должно быть разрешено использовать gdb для группы procmod.
Рецепт:
-
перезапустите в режиме восстановления, откройте терминал и запустите csrutil disable
-
перезагрузите компьютер и отредактируйте /System/Library/LaunchDaemons/com.apple.taskgated.plist
, добавив
-p
opion:
<array>
<string>/usr/libexec/taskgated</string>
<string>-sp</string>
</array>
-
перезагрузка в режиме восстановления для повторного использования SIP (csrutil enable
)
-
перезагрузите компьютер и добавьте пользователя USERNAME
в группу procmod
:
sudo dseditgroup -o edit -a USERNAME -t user procmod
Альтернативный, который не включает добавление пользователей в группы, - это сделать исполняемый setgid procmod, поскольку это также делает procmod
эффективным идентификатором группы любого пользователя, выполняющего двоичный файл setgid (предложенный в https://apple.stackexchange.com/a/112132)
sudo chgrp procmod /path/to/gdb
sudo chmod g+s /path/to/gdb
Ответ 2
Сначала установите Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Затем запустите это: brew install gdb
Ответ 3
Здесь сообщение в блоге объясняет это очень хорошо:
http://panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/
И как я его работаю:
-
Создайте сертификат подписи кода KeyChain Access:
1.1 В меню выберите KeyChain Access > Certificate Assistant > Создать сертификат...
1.2 Следуйте указаниям мастера создания сертификата и дайте ему имя gdb.cert
, тип идентификации Self Signed Root, а тип сертификата Подпись кода и выберите Позвольте мне переопределить значения по умолчанию.
1.3 Несколько раз нажмите "Продолжить", пока не перейдете к экрану Укажите местоположение для сертификата, затем установите Брелок на Система.
-
Установите gdb через Homebrew: brew install gdb
-
Перезагрузите taskgated
: sudo killall taskgated && exit
-
Откройте окно терминала и введите sudo codesign -vfs gdb.cert /usr/local/bin/gdb
Ответ 4
Это не обязательно касается вопроса, но если вы используете Mac OS X, то вы, вероятно, можете использовать lldb
домашнюю страницу LLDB. Он очень похож на gdb
и даже дает руководство по использованию команд, которые вы использовали бы на gdb
.
Ответ 5
В моей Mac OS X El Capitan я использую homebrew для установки gdb:
brew install gdb
Затем я следую инструкции здесь: https://sourceware.org/gdb/wiki/BuildingOnDarwin, в разделе 2.1. Метод для Mac OS X 10.5 (Leopard) и более поздний.
Ответ 6
После установки версии macports версии gdb
вам необходимо отключить SIP, чтобы внести правильные изменения в /System/Library/LaunchDaemons/com.apple.taskgated.plist
. Чтобы отключить SIP, вам необходимо перезапустить в режиме восстановления и выполнить следующую команду:
csrutil disable
Затем перезапустите. Затем вам нужно будет отредактировать нижнюю часть com.apple.taskgated.plist
следующим образом:
<array>
<string>/usr/libexec/taskgated</string>
<string>-sp</string>
</array>
Затем вам придется перезапустить, чтобы изменения вступили в силу. Затем вы должны повторно использовать SIP. Команда gdb
для установки macports на самом деле ggdb
. Вам нужно будет ввести знак ggdb
в соответствии с инструкциями здесь:
https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html
Единственный способ, с помощью которого я могу получить код подписи, - это запустить ggdb
с помощью sudo
. Удачи!
Ответ 7
Кажется, что MacPorts можно было установить в El Capitan прямо сейчас:
https://www.macports.org/install.php
Тогда вы, вероятно, сможете установить gdb по ссылке, которую вы упомянули.