今天是我第一次尝试 - 并且失败 - 象征着新购买的MacBook上的崩溃日志(我们称这台机器为MB1)。 MB1预装了Mac OS X 10.9。我跟踪了Spotlight失败的问题,直到Spotlight没有索引我的任何一个 .dSYM
捆绑(没有Spotlight索引,Apple的 symbolicatecrash
脚本无法找到 .dSYM
与崩溃日志匹配的bundle)。我得出结论是因为
mdfind "com_apple_xcode_dsym_uuids == *"
不打印任何东西,虽然我有几个 .xcarchive
捆绑在我的 ~/Library/Developer/Xcode/Archives
文件夹,它们肯定包含 .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分钟,但仍然无效)
详细说明:在我切换到MB1之前,我有一台较旧的MacBook(让我们称之为机器MB2),这是我的开发机器。在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的行为会很有趣,所以我做了以下事情:
- 在MB2上启动Xcode,创建新存档并运行
mdfind
。这找到了中间体.dSYM
捆绑在里面DerivedData
构建文件夹。 - 删除中间体
.dSYM
捆绑并运行mdfind
再次。这次没有结果,即.dSYM
捆绑在里面Archives
找不到文件夹! - 制作副本
.xcarchive
在步骤1中创建的包,并将副本放在用户主目录的根目录中。跑mdfind
。这找到了.dSYM
复制中的子包.xcarchive
束!
在这一点上,我跳到了结论,因为 ~/Library
是一个隐藏文件夹,这是阻止Spotlight索引其中的东西的原因。这可以通过在里面创建常规文件轻松确认 ~/Library
并搜索它(没有命中),然后将文件移到外面 ~/Library
并再次搜索(1次点击)。不幸的是,由于两个原因,这个理论在它的鼻子上落空了:
~/Library
已经隐藏在10.9之前的Mac OS X版本中,但这从未阻止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的升级安装(之前已安装。