Подтвердить что ты не робот

Как установить gdb (отладчик) в Mac OSX El Capitan?

Как установить gdb (отладчик) в Mac OSX El Capitan? Я попытался установить gdb, но не смог выполнить пару раз.

Я следил за этим URL-адресом: http://ntraft.com/installing-gdb-on-os-x-mavericks/, MAC не позволяет устанавливать MacPorts.

Может ли кто-нибудь помочь мне в этом отношении.

4b9b3361

Ответ 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 по ссылке, которую вы упомянули.