Как я могу сказать 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
не найден! - сделайте копию
.xcarchive
bundle создается на шаге 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".