Xcode 调试快速查看插件
我对OSX开发相当陌生。我目前正在编写一个应用程序,它有自己的(跨平台)自定义基于XML的文件类型 我想写一个quick look插件,以便在finder中看起来不错,并且已经找到了关于这应该如何工作的教程,但是显然我一定是做错了什么,因为我在/var/log/system.log中看到,当运行quick look插件时,我得到了一个segfault。我想看看它在哪里崩溃,但我一辈子都想不出该怎么做 OSX在哪里存储核心转储(如果它确实这样做的话)?我需要设置一些系统选项或什么来启用它吗 如何让Xcode查看这些核心转储Xcode 调试快速查看插件,xcode,macos,debugging,quicklook,Xcode,Macos,Debugging,Quicklook,我对OSX开发相当陌生。我目前正在编写一个应用程序,它有自己的(跨平台)自定义基于XML的文件类型 我想写一个quick look插件,以便在finder中看起来不错,并且已经找到了关于这应该如何工作的教程,但是显然我一定是做错了什么,因为我在/var/log/system.log中看到,当运行quick look插件时,我得到了一个segfault。我想看看它在哪里崩溃,但我一辈子都想不出该怎么做 OSX在哪里存储核心转储(如果它确实这样做的话)?我需要设置一些系统选项或什么来启用它吗 如何让
我迷路了。我没有亲自尝试过,但这一页:
描述了如何在Xcode 4-6中调试插件。这可能比事后尝试通过核心文件挖掘有用得多。EDITSIP阻止您调试受保护的进程。正因为如此,目前(至少自SIP通过Mojave引入以来)不关闭SIP(至少部分关闭SIP)就无法调试QuickLook插件
正如您可能已经发现的,由于QuickLook插件是一个插件,而不是一个独立的可执行文件,因此您需要调试承载该插件的进程。为此,您可以将自己挂接到
qlmanager
可执行文件
第一步是使.qlgenerator插件可用于Quick Look服务器。为此,您需要将其复制到~/Library/QuickLook并运行qlmanager-r
。第一个可以作为生成后操作实现,第二个必须在调试选项中指定
对于生成后操作,应遵循以下步骤:
qlmanager
:
现在,当您使用Run操作时,您将能够通过
qlmanager
调试插件。我在运行此配置时收到消息:“由于系统完整性保护,无法连接到进程”。“我有什么遗漏吗?”DamiaanDufaux,让我看看我是否能找到另一种更好的方法,在启用SIP的情况下做到这一点。在此之前,您可以将qlmanage
复制到文件系统上的任何其他位置,并从该副本中进行调试。OK qlmanage现在正在打开,但我仍然收到以下错误:第13个月超出范围和CFMessagePort:bootstrap\u register():失败1100(0x44c)'Permission denied',port=0x9c03,name='com.apple.coredrag'
和CFMessagePort:bootstrap_register():failed 1100(0x44c)'Permission denied',port=0xc53b,name='com.apple.tsm.portname'
@DamiaanDufaux,您可能已经得出了这个结论,但我现在有相当好的权威,调试qlgenerator的唯一方法,现在,是禁用SIP或自己加载qlgenerator并处理数据馈送和显示。读到您的编辑扩展我很惊讶。我找不到更多关于这个的信息。你有什么消息吗?
rm -Rf "~/Library/QuickLook/$FULL_PRODUCT_NAME"
cp -R "$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME" ~/Library/QuickLook
qlmanage -r