调试Quick Look插件

Wou*_*lst 6 debugging macos xcode quicklook

我是OSX开发的新手.我目前正在编写一个具有自己的(跨平台)自定义基于XML的文件类型的应用程序.

我想编写一个快速查看插件,以便在查找程序中看起来很好,并且已经找到了关于它应该如何工作的教程,但显然我必须做错事,因为我在/var/log/system.log中看到当我的Quick Look插件运行时,我得到了段错误.我想知道它在哪里崩溃,但我不能为我的生活弄清楚如何做到这一点.

OSX在哪里存储核心转储(如果它甚至这样做)?我是否需要设置一些系统选项或启用它?

如何让Xcode查看这些核心转储?

我迷路了.

zne*_*eak 12

EDIT SIP阻止您调试受保护的进程.因此,目前(至少自从SIP推出以来,通过High Sierra)无法在不关闭SIP(至少部分)的情况下调试QuickLook插件.


您可能已经发现,由于您的QuickLook插件是插件而不是独立的可执行文件,因此您需要调试承载插件的进程.为此,您可以将自己挂钩到qlmanage可执行文件.

第一步是使.qlgenerator插件可用于Quick Look服务器.为此,您需要将其复制到〜/ Library/QuickLook并运行qlmanage -r.第一个可以实现为构建后操作,第二个必须在调试选项中指定.

对于构建后操作,您应该按照以下步骤操作:

  1. 按Alt + Cmd + R打开运行配置窗口;
  2. 展开左侧的"构建"选项卡,然后转到后期操作;
  3. 单击窗口底部的加号,然后选择"新建运行脚本操作",并使用以下代码.
rm -Rf "~/Library/QuickLook/$FULL_PRODUCT_NAME"
cp -R "$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME" ~/Library/QuickLook
qlmanage -r
Run Code Online (Sandbox Code Playgroud)

然后,您需要配置Xcode以启动qlmanage:

  1. 在同一窗口中,转到"运行"选项卡,然后选择"信息";
  2. 在可执行文件下拉菜单中,选择"其他......";
  3. 点击Shift + Cmd + G进入路径,输入"/ usr/bin/qlmanage",然后选择该文件;
  4. 检查"Debug executable"(如果它还没有);
  5. 移动到"Arguments"选项卡,添加"-p"参数,然后根据需要添加自己需要预览的文件的参数.

现在,当您使用"运行"操作时,您将能够通过调试插件qlmanage.

  • @DamiaanDufaux,让我看看是否可以找到另一种更好的方法来启用 SIP。在此之前,您可以将“qlmanage”复制到文件系统上的任何其他位置并[剥离签名](https://reverseengineering.stackexchange.com/questions/13622/remove-code-signature-from-a-mac-binary /13623#13623) 来自该副本,这将使您能够对其进行调试。 (2认同)