Отладка приложения Mac OS X под root
По умолчанию Xcode не позволяет запускать на отладку приложения с правами root и для основной массы приложений это не создает никаких проблем. Тем не менее, в ряде случаев для работы приложения права root просто необходимы.
Самый простой вариант решения этой проблемы — запуск самого Xcode с правами root.
sudo /Developer/Applications/Xcode.app/Contents/MacOS/Xcode
Хотя на мой взгляд это самый плохой вариант который только можно придумать. Можно пойти по Unix way, запустить под root отладчик gdb и уже в нем отлаживать приложение… Тоже не красивое решение, все же отладка в Xcode куда удобнее.
Итак, запусить приложение на отладку с правами root в Xcode все же можно. Для этого необходимо проделать следующие действия.
Разблокировать пользователя root на локальной машине
1. Запустить Directory Utility (находится в папке /System/Library/CoreServices/Directory Utility.app).
2. Зайти в Edit→Enable Root User и задать пароль для пользователя root.
Разблокировать удаленное соедининиие с компьютером
В System Preferences→Sharing выбирается пункт Remote Loging. Данная опция активирует на компьютере ssh демон.
Создать ключи и скопировать их в нужную папку
1. Открыть терминал и ввести ssh-keygen -t rsa
2. Принять расположение по умолчанию и задать пароль.
3. Зайти под пользователем root и создать папку ~/.ssh (~ == /var/root)
4. Скопировать публичные ключи в папку root:
cat ~/.ssh/id_rsa.pub | ssh root@localhost "cat ->> ~/.ssh/authorized_keys"
5. Проверить что все нормально
ssh root@localhost
Включить удаленную отладку при помощи ssh в Xcode
1. Выбрать Get Info для выполнимого файла.
2. В настройках Debugging выбрать Debug executable remotely via ssh и в поле Connect to указать root@localhost.
Можно приступать к отладке :)