【问题标题】:Xcode 4 and Core Data: How to enable SQL DebuggingXcode 4 和 Core Data:如何启用 SQL 调试
【发布时间】:2011-09-19 16:40:21
【问题描述】:

我正在开发一个通用 iOS 应用程序,我希望在调试时查看日志中的原始 SQL。 in this blog post 有一些关于如何为 iOS Core Data 开发启用原始 SQL 日志记录的信息。给定的示例适用于 Xcode 3,我不清楚如何在 Xcode 4 中启用它。

我已经尝试过“Product”->“Edit Scheme”并将“-com.apple.CoreData.SQLDebug 1”添加到“Arguments Passed on Launch”,但我仍然没有在日志中看到任何输出。不确定我是在找错地方还是只是错误地传递了参数。

【问题讨论】:

  • 谢谢。我的主要问题是我正在搜索的表刚刚超过 74,000 行,我想知道查询运行了多长时间,因为它现在很慢。我尊重这样一个事实,即有很多抽象正在进行,但我真的对引擎盖下发生的事情一无所知。这至少对我有一点帮助。
  • 只要您了解这些限制,就可以查看原始 SQL,尤其是在性能调整方面。人们遇到麻烦的地方是试图通过查看原始 SQL 来弄清楚对象图的行为方式。由于两者之间没有直接关系,因此只会将他们误入歧途。
  • 这能回答你的问题吗? How to print Core Data debug values?

标签: sql ios core-data xcode4


【解决方案1】:

您应该查看获得 NSLOGS 的同一个地方

你应该转到产品 -> 编辑方案 -> 然后从左侧面板中选择运行 YOURAPP.app 并转到主面板的参数选项卡。

您可以在此处添加启动时传递的参数。

您应该添加-com.apple.CoreData.SQLDebug 4(1 到 4 之间的数字,数字越大越冗长)

按 OK,一切就绪。

这里的关键是编辑您将用于测试的方案。

【讨论】:

  • 谢谢。事实证明,就模拟器而言,我的参数格式是错误的,正如我在stackoverflow.com/questions/822906/… 的一个答案中看到的那样,我需要传递 -com.apple.CoreData.SQLDebug的参数> 和 1 的第二个参数,以便查看 SQL 输出。
  • 关于如何打印传递给数据库的参数有什么想法吗?这种方法可以很好地查看查询的结构,但它只打印 sql 语句,如UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ?,并且真正查看正在发送的数据不是很有用
  • 实际上,我认为将其添加为真正的 SO 问题会更好;)stackoverflow.com/questions/12306343/…
  • 有什么方法可以记录,只有在插入数据库而不是其他情况下才能登录?
  • @BishalGhimire 我不确定,也许你可以在某处按事件过滤。我会直接使用文本过滤来过滤输出。
【解决方案2】:

注意你可以把不同级别的值传入。这提供了越来越多的冗长。

-com.apple.CoreData.SQLDebug 1
-com.apple.CoreData.SQLDebug 2
-com.apple.CoreData.SQLDebug 3
-com.apple.CoreData.SQLDebug 4 // This will actually show parameter binds ("?")

【讨论】:

    【解决方案3】:

    我对此有疑问,然后意识到这是一个愚蠢的遗漏,我认为这对你们中的一些人来说是一个错误。当我在Xcode (4.3.1) 中输入参数时,我省略了前导连字符。如果我在命令行上输入它,我不会这样做,但在 GUI 中我省略了它。我没有发现输入 2 个单独的 args 或一个(正如一些帖子所建议的那样)之间有任何区别。所以使用:

    -com.apple.CoreData.SQLDebug 1

    而不仅仅是:

    com.apple.CoreData.SQLDebug 1

    在模拟器和真实设备上都对我有用

    【讨论】:

      【解决方案4】:

      XCode 4

      它在我管理我的 NSZombieEnabled 的同一个地方

      产品 -> 编辑方案 -> 运行 YouApp.app 调试

      在“Arguments Passed on Launch”下,准确粘贴:

      -com.apple.CoreData.SQLDebug 1

      警告 - 这些内容非常冗长,如果您遇到 Core Data 问题,这可能非常值得一看,但它也可能提供比您需要的更多关于错误内容的信息。

      【讨论】:

      • 在字符串文件上打印这个 -com.apple.CoreData.MigrationDebug 1 的任何方式,以便用户可以上传日志文件
      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 2011-10-06
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2023-01-25
      • 2011-02-16
      • 2023-03-29
      相关资源
      最近更新 更多