Мое приложение работает нормально, но GDB не может его отладить со следующей ошибкой
(gdb) run
Starting program: /path/to/app
Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).
Я использую OS X Lion. Версия GDB
$ gdb --version
GNU gdb 6.3.50-20050815 (Apple version gdb-1752) (Sat Jan 28 03:02:46 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".
Ответы:
В Snow Leopard и более поздних версиях Mac OS кодовой подписи
gdb
исполняемого файла недостаточно .Вы должны следовать этому руководству, чтобы оно работало: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt
В руководстве объясняется, как это сделать для
lldb
, но процесс точно такой же дляgdb
.источник
sudo security add-trust
делает линия? Могу я сейчас удалить.cer
файл со своего рабочего стола?codesign -s gdb_codesign `which gdb`
помогает после этого гайдаsudo codesign -s gdb_codesign `which gdb-apple`
на macOS sierra.Работает, когда меняю на
sudo gdb executableFileName
! :)источник
gdb
с root? Мне было просто любопытно, потому что это всего лишь отладчик.rm -rf /
или что-то похожее разрушительное, когда вы перезаписываете некоторые конфигурации / двоичные файлы, которые ваш компьютер использует для запуска и нормальной работы.Вам необходимо создать сертификат и подписать gdb:
Наконец, вы можете подписать gdb:
sudo codesign -s gdb-cert /usr/local/bin/ggdb
sudo ggdb ./myprog
источник
Проблема в том, что вы не вошли в систему как пользователь root (что вам не нужно). Вам необходимо создать сертификат для доступа к GDB. Следуйте этому руководству, и все будет хорошо ...
http://sourceware.org/gdb/wiki/BuildingOnDarwin
Если ничего не помогает, просто используйте:
sudo gdb executableFileName
источник
codesign -s gdb-cert $(which gdb)
чтобы подписатьgdb
приложение.Эта ссылка содержит самые четкие и подробные пошаговые инструкции, чтобы эта ошибка исчезла для меня.
В моем случае я должен был использовать ключ как «Системный» ключ, иначе он не работал (что не во всех URL-адресах).
Также убийство
taskgated
- жизнеспособная (и более быстрая) альтернатива перезапуску.Я также удалил MacPorts перед тем, как начать этот процесс, и удалил текущий gdb, используя
brew uninstall gdb
.источник
brew
.Мне нужна была эта команда, чтобы она работала на El Capitan:
источник
Я последовал этому руководству, и все в порядке.
источник
В MacOSX lldb должен быть подписан кодом. Сборки отладки и выпуска настроены для подписи кода с использованием сертификата подписи кода с именем lldb_codesign.
[Примечание: - lldb используется в Mac как gdb.]
источник
Вот действительно полезное руководство, которое решило мою проблему (OSX 10.13.6).
codesign -fs gdbc /usr/local/bin/gdb
в терминале: запрашивается пароль rootисточник
Эти инструкции работают для OSX High Sierra и избегают запуска gdb от имени пользователя root (фу!). Недавно я обновился с OSX 10.13.2 до 10.3.3. Думаю, именно тогда у меня начал выходить gdb 8.0.1 (установленный с домашним пивом).
У меня были трудности с инструкциями других людей. После разных инструкций все было в беспорядке. Итак, я начал все сначала. Я более-менее следовал этим инструкциям .
Убери беспорядок:
brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
Applications
->Utilities
->Keychain Access
я удалил все предыдущие сертификаты и ключи gdb (убедитесь, что вы знаете, что делаете здесь!). Неясно, необходимо ли это, но поскольку я ошибся, пытаясь создать эти сертификаты и ключи с помощью других инструкций, я все равно удалил их. У меня были ключи и сертификаты как в логине, так и в системе.Теперь переустановите gdb.
brew install gdb
Keychain Access
перейдите в менюKeychain Access
->Certificate Assistant
->Create a Certificate
На 2-й странице информации о сертификате я оставил все поля пустыми, кроме уже заполненных.
На странице информации о паре ключей я оставил значения по умолчанию
На странице расширения базовых ограничений ничего не проверялось (по умолчанию).
На странице «Расширение альтернативного имени субъекта» я оставил установленный по умолчанию флажок и больше ничего не добавил.
Я нажал «Создать», и мне было предложено ввести пароль.
Вернувшись в
Keychain Access
приложение, я зашелSystem
и щелкнул правой кнопкой мыши поgdb-cert
раскрывающемуся менюTrust
и изменил все поля наAlways Trust
.Перезагрузил компьютер.
Я сбежал от Терминала
codesign -s gdb-cert /usr/local/bin/gdb
. Я ввел свой пароль при появлении запроса.В Терминале я побежал
echo "set startup-with-shell off" >> ~/.gdbinit
Я запустил,
gdb myprogram
а затемstart
в консоли gdb. Здесь, я полагаю, меня попросили ввести пароль. После этого при всех последующих запусках мой пароль не запрашивался.источник
Это странный подход, но у меня он сработал (MacOs HighSierra 10.13.3). Установите CLion. Поставляется с gdb. После запуска gdb с помощью Terminal. Скопируйте программу gdb в ваш usr / local / bin /. Нет проблем с входом, sudo и т. Д.
источник
Следуя приведенным здесь инструкциям, Codesign gdb на macOS, похоже, решило эту проблему для меня на macOS High Sierra (10.13.3).
источник