今天是我第一次尝试——但失败了——在新买的 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
,但它们都没有被索引。
因此,一个简短而简单的问题是:我如何告诉 Spotlight 索引我的 .dSYM 包?
如果这个简单的问题没有简单的答案,这是我已经在 MB1 上尝试过的:
- 检查文件和文件夹的权限
~/Library/Developer/Xcode/Archives
(他们都OK,文件夹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 的行为会很有趣,所以我做了以下操作:
- 在 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 的升级安装(之前安装的 .