Сегодня я впервые попытался — и потерпел неудачу — символизировать журнал сбоев на недавно купленном MacBook (назовем эту машину MB1). MB1 поставляется с предустановленной Mac OS X 10.9. Я отследил проблему сбойной символизации вплоть до того, что Spotlight не индексирует ни один из моих пакетов .dSYM
(без индекса Spotlight сценарий Apple symbolicatecrash
не может найти пакет .dSYM
, соответствующий журналу сбоев). Я пришел к такому выводу, потому что
mdfind "com_apple_xcode_dsym_uuids == *"
ничего не печатает, хотя у меня в папке ~/Library/Developer/Xcode/Archives
есть несколько пакетов .xcarchive
, и они определенно содержат подпакеты .dSYM
, UUID которых я могу распечатать с dwarfdump --uuid
. У меня также есть пара пакетов .dSYM
в папке сборки моего проекта (DerivedData
), но ни один из них также не проиндексирован.
Таким образом, возникает короткий и простой вопрос: как я могу указать Spotlight индексировать мои пакеты .dSYM?
Если на этот простой вопрос нет простого ответа, вот что я уже пробовал на MB1:
- Проверить права доступа к файлам и папкам в
~/Library/Developer/Xcode/Archives
(все в порядке, 755 для папок, 644 для файлов) - Выполнить
mdimport ~/Library/Developer/Xcode/Archives
(не действует) - В «Системные настройки> Spotlight> Конфиденциальность» сначала добавьте, а затем удалите папку
~/Library/Developer/Xcode/Archives
(тоже не имеет никакого эффекта) - Проверьте с помощью
mdutil -s /
, включена ли индексация для тома (так и есть) - Сотрите и перестройте весь индекс
mdutil -E /
(занимает 10-15 минут, но все равно не дает никакого эффекта)
Чтобы вдаваться в подробности: у меня есть более старый MacBook (назовем эту машину MB2), который был моей машиной для разработки до того, как я переключился на MB1. На MB2 у меня никогда не было проблем с символизацией. На MB2 была установлена Mac OS X 10.8, когда я все еще активно работал над ней, но недавно я обновил MB2 до Mac OS X 10.9.
Сегодня запуск mdfind
на MB2 по-прежнему дает мне множество пакетов .dSYM
как из папки Archives
, так и из папки сборки проекта DerivedData
. Все это старые файлы из Mac OS X 10.8 дней, но, по-видимому, Spotlight сохраняет свой индекс при обновлении ОС. Я подумал, что было бы интересно посмотреть, как Spotlight ведет себя при создании новых файлов, поэтому я сделал следующее:
- Запустите Xcode на MB2, создайте новый архив и запустите
mdfind
. Это находит промежуточный пакет.dSYM
внутри папки сборкиDerivedData
. - Удалите промежуточный пакет
.dSYM
и снова запуститеmdfind
. На этот раз никаких результатов, т.е. пакет.dSYM
внутри папкиArchives
НЕ найден! - Сделайте копию пакета
.xcarchive
, созданного на шаге 1, и поместите копию в корень домашнего каталога пользователя. Выполнитьmdfind
. Это находит подпакет.dSYM
в скопированном пакете.xcarchive
!
В этот момент я пришел к выводу, что, поскольку ~/Library
является скрытой папкой, именно это не позволяет Spotlight индексировать содержимое в ней. В этом легко убедиться, создав обычный файл внутри ~/Library
и выполнив его поиск (нет совпадений), затем переместив файл за пределы ~/Library
и повторив поиск (1 совпадение). К сожалению, эта теория терпит крах по двум причинам:
~/Library
уже был скрыт в версиях Mac OS X до 10.9, но это никогда не мешало Spotlight индексировать файлы.dSYM
- «Скрытый» флаг — это не все, что мешает Spotlight индексировать содержимое в
~/Library
: если я покажу папку с помощьюchflags nohidden ~/Library
, это не сделает обычный файл видимым для Spotlight.
Вернемся к MB1: я попытался повторить шаг 3 сверху, т.е. сделать копию пакета .xcarchive
в корне домашнего каталога пользователя, затем запустить mdfind
. Удивительно, но на MB1 результат отличается от MB2: mdfind
по-прежнему не находит никаких пакетов .dSYM
!
На данный момент я сдаюсь и надеюсь на вашу помощь. Мой вывод таков, что Mac OS X 10.9 так или иначе ответственна за мои проблемы, но я хоть убей, не могу понять, почему это так. Если это поможет, вот несколько дополнительных сведений о конфигурации:
- MB1: установлены Xcode 5.0.2 и Xcode 4.6, по умолчанию используется 5.0.2 (устанавливается с помощью
xcode-select
). Также установлен Homebrew. Система представляет собой чистую установку Mac OS X 10.9. - MB2: Xcode 4.5, 4.6 и 5.0 установлены, по умолчанию 4.6. Также установлен MacPorts. Система представляет собой обновленную установку Mac OS X 10.9 (ранее установленный файл .