gpt4 book ai didi

xcode - 如何让 Spotlight 为我的 .dSYM 包建立索引?

转载 作者:行者123 更新时间:2023-12-04 02:02:14 31 4
gpt4 key购买 nike

今天是我第一次尝试在新购买的 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我可以使用 dwarfdump --uuid 打印其 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的升级安装(之前安装的。
  • 最佳答案

    查看 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不自动运行?

    编辑

    解决方案是重新启动机器(注销/登录可能就足够了),在 ~/Library 之外归档包。现在已正确编入索引。我需要重新启动的原因可能是这样的:
  • 我使用特权管理员用户 (A) 安装软件,但我使用不同的非特权用户 (U) 进行正常工作,例如使用 Xcode 进行开发。
  • 当我使用用户 A 安装 Xcode 时,我使用用户 U 登录
  • 从那时起我就再也没有重新启动过,也没有进行过任何登录(我更喜欢让我的机器过夜而不是关闭它)。据推测,只有在注销/登录或重新启动后,事件 Spotlight 导入器的列表才会更新(可能通过启动服务)。

  • 无论如何,在故障排除过程中,我发现您可以通过运行 mdimport -L 检查事件 Spotlight 导入器的列表。 (请注意,不同的用户可以同时激活不同的 Spotlight 导入器)。不出所料,重启后 uuid.mdimporter现在列出了,而在重新启动之前它没有列出。

    这是我在谷歌搜索后找到的一个有用的 Apple 文档: Troubleshooting Spotlight Importers .

    最终解决方案

    配置 Xcode,以便存档文件夹位于 ~/Library 之外.在 Xcode 6 中,您可以在“位置”选项卡下的“首选项”对话框中执行此操作。

    关于xcode - 如何让 Spotlight 为我的 .dSYM 包建立索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20715303/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com