Xcode 4和核心数据:如何启用SQL调试

Xcode 4和核心数据:如何启用SQL调试,sql,ios,core-data,xcode4,Sql,Ios,Core Data,Xcode4,我正在开发一个通用iOS应用程序,我希望在调试时在日志中看到原始SQL。这里有一些关于如何为iOS核心数据开发启用原始SQL日志记录的信息。给出的示例是针对Xcode 3的,我只是不清楚如何在Xcode 4中启用它 我尝试了“产品”->“编辑方案”,并在“启动时传递的参数”中添加了“-com.apple.CoreData.SQLDebug 1”,但在日志中仍然没有看到任何输出。不确定我是找错地方了,还是只是错误地传递了参数。您应该在得到nslog的同一个地方查看 您应该转到产品->编辑方案->然

我正在开发一个通用iOS应用程序,我希望在调试时在日志中看到原始SQL。这里有一些关于如何为iOS核心数据开发启用原始SQL日志记录的信息。给出的示例是针对Xcode 3的,我只是不清楚如何在Xcode 4中启用它


我尝试了“产品”->“编辑方案”,并在“启动时传递的参数”中添加了“-com.apple.CoreData.SQLDebug 1”,但在日志中仍然没有看到任何输出。不确定我是找错地方了,还是只是错误地传递了参数。

您应该在得到nslog的同一个地方查看

您应该转到产品->编辑方案->然后从左侧面板选择runyourapp.app并转到主面板的参数选项卡

在这里,您可以添加启动时传递的参数

您应该添加
-com.apple.CoreData.SQLDebug 4
(数字介于1和4之间,数字越大,说明越详细)

按“确定”按钮,您的设置就完成了

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

XCode 4

它在同一个地方,我管理我的僵尸

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

在“启动时传递的参数”下,准确粘贴:

-com.apple.CoreData.SQLDebug 1


警告-这些内容非常冗长,如果您有核心数据问题,这可能非常值得一看,但它也可能比您需要的更多关于错误内容的信息

我在这方面遇到了一个问题,然后意识到这是一个愚蠢的疏忽,我认为这对你们中的一些人来说是一个小错误。当我在
Xcode(4.3.1)
中输入参数时,我省略了前导连字符。如果我在命令行中输入它,我不会这么做,但在GUI中我忽略了它。我没有发现在两个单独的arg或一个arg中输入有任何区别(正如一些帖子所建议的)。因此,请使用:

-com.apple.CoreData.SQLDebug 1

不仅仅是:

com.apple.CoreData.SQLDebug 1


这在模拟器和真实设备中都适用于我,请注意,您可以输入不同级别的传递值。它提供了越来越多的冗长

-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 ("?")

谢谢你。事实证明,就模拟器而言,我的参数格式是错误的,正如我在这里的一个答案中看到的,我需要传递一个-com.apple.CoreData.SQLDebug参数和第二个1参数才能看到SQL输出。关于如何打印传递到数据库的参数,有什么想法吗?这种方法可以很好地查看查询的结构,但它只打印sql语句,比如
updateztablesetzcolumn=?其中,ZID=?
如果真的看到发送的数据不是很有用,实际上,我认为最好将其作为一个真正的SO问题添加;)有没有办法只在它插入数据库而不是其他情况下才能登录?@BishalGhimire我不确定,也许你们可以在某处按事件过滤。我会使用文本过滤直接过滤输出。谢谢。我的主要问题是,我正在搜索的表只有74000多行,我想知道查询运行了多长时间,因为它现在非常慢。我尊重这样一个事实,即有很多抽象的东西在进行,但我真的对引擎盖下发生的事情一无所知。这至少对我有一点帮助。只要您了解这些限制,就可以查看原始SQL,尤其是性能调整。人们遇到麻烦的地方是试图通过查看原始SQL来了解对象图的行为。既然两者之间没有直接的关系,那只会把他们引入歧途。这是否回答了你的问题?是否可以在字符串文件上打印-com.apple.CoreData.MigrationDebug 1,以便用户可以上载日志文件