Как я могу сказать Spotlight, чтобы проиндексировать мой.связки dSYM?
Сегодня я впервые попытался - и потерпел неудачу-символизировать журнал сбоев на недавно купленном MacBook (назовем эту машину MB1). MB1 поставляется с предустановленным Mac OS X 10.9. Я проследил проблему неудачной символизации вплоть до того, что Spotlight не индексирует ни один из моих пакетов .dSYM (без индекса Spotlight сценарий Apple symbolicatecrash не может найти пакет .dSYM, который соответствует журналу сбоев). Я пришел к такому выводу, потому что 
mdfind "com_apple_xcode_dsym_uuids == *"
Ничего не печатает, хотя я есть несколько .xcarchive пакетов в моей папке ~/Library/Developer/Xcode/Archives, и они определенно содержат .dSYM вложенные пакеты, UUID которых я могу распечатать с помощью dwarfdump --uuid. У меня также есть несколько пакетов .dSYM в папке сборки моего проекта (DerivedData), но ни один из них не индексируется.
В случае, если нет простого ответа на этот простой вопрос, вот то, что я уже пробовал на MB1:
- Проверка разрешения файлов и папок в ~/Library/Developer/Xcode/Archives(все они в порядке, 755 для папок, 644 для файлов)
- Run mdimport ~/Library/Developer/Xcode/Archives(не имеет эффекта)
- в "Системные настройки" > "подсветка" > "конфиденциальность" сначала добавить, а потом удалить ~/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 days, но, по-видимому Фара держит его индекса во время обновлений операционной системы. Я подумал, что было бы интересно посмотреть, как Spotlight ведет себя при создании новых файлов, поэтому я сделал следующее: 
- запустите Xcode на MB2, создайте новый архив и запустите mdfind. Это находит промежуточный пакет.dSYMвнутри папки сборкиDerivedData.
- удалите промежуточный пакет .dSYMи снова запуститеmdfind. На этот раз результатов нет, т. е. пакет.dSYMвнутри папкиArchivesне найден!
- сделайте копию .xcarchivebundle создается на шаге 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). Также установлен доморощенный. Система представляет собой чистую установку Mac OS X 10.9.
- MB2: установлены Xcode 4.5, 4.6 и 5.0, по умолчанию используется 4.6. Также установлен MacPorts. Система представляет собой установку обновления Mac OS X 10.9 (ранее установленный .
1 ответ:
Заглянув в пакет приложений Xcode, можно обнаружить следующих импортеров Spotlight:
caradhras:~ --> find /Applications/Xcode-5.0.2.app -name \*.mdimporter /Applications/Xcode-5.0.2.app/Contents/Applications/Application Loader.app/Contents/Library/Spotlight/MZSpotlight.mdimporter /Applications/Xcode-5.0.2.app/Contents/Library/Spotlight/uuid.mdimporterВыполнение этой команды
mdimport -g /Applications/Xcode-5.0.2.app/Contents/Library/Spotlight/uuid.mdimporter ~Наконец индексирует пакет
Остается вопрос: почему.xcarchive, который находится в корне домашнего каталога пользователя. Однако он не индексирует связки в~/Library/Developer/Xcode/Archives, даже когда я явно указываюmdimportна эту папку.uuid.mdimporterне запускается автоматически?
EDIT
Решением было перезагрузить компьютер. машина (логин / выход из системы мог бы быть достаточным), архивные пакеты за пределами
~/LibraryТеперь правильно индексируются. Причина, по которой мне нужно было перезагрузиться, вероятно, такова:Так или иначе, во время устранения неполадок я обнаружил, что вы можете проверить список активных импортеров Spotlight, запустив
- я использую привилегированного администратора (A) для установки программного обеспечения, но я использую другого, непривилегированного пользователя (U) для нормальной работы, такой как разработка с помощью Xcode.
- я вошел в систему с пользователем U в то время, когда я установил Xcode с пользователем AС тех пор я ни разу не перезагружался и не делал никаких логинов. (Я предпочитаю отправлять свою машину спать на ночь, а не выключать ее). Предположительно, список активных импортеров Spotlight обновляется (вероятно, службами запуска) только при выходе из системы/входе в систему или после перезагрузки.
mdimport -L(обратите внимание, что разные пользователи могут иметь разных импортеров Spotlight активными одновременно). Неудивительно, что после перезагрузкиuuid.mdimporterТеперь перечислено, хотя до перезагрузки его не было.Вот полезный документ Apple, который я нашел после некоторого поиска в Google: Устранение неполадок Spotlight Importers.
ОКОНЧАТЕЛЬНОЕ РЕШЕНИЕ
Настройте Xcode так, чтобы папка архива располагалась вне
~/Library. В Xcode 6 Вы можете сделать это в диалоговом окне настроек, на вкладке "Locations".