-4

例如,当我记录字典时,我得到如下输出:

2013-04-18 16:24:45.905 pathFinderTest[9650:c07] -[__NSCFDictionary length]: unrecognized selector sent to instance 0x9271ee0
2013-04-18 16:24:45.912 pathFinderTest[9650:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary length]: unrecognized selector sent to instance 0x9271ee0'
*** First throw call stack:
(0x1c91012 0x10cee7e 0x1d1c4bd 0x1c80bbc 0x1c8094e 0x1c07c36 0x1c5113c 0x1cb64b6 0xb3c60a 0xb3c57c 0x2af7 0x28f8 0xf41c7 0xf4232 0x433d5 0x4376f 0x43905 0x4c917 0x25a5 0x10157 0x10747 0x1194b 0x22cb5 0x23beb 0x15698 0x1becdf9 0x1becad0 0x1c06bf5 0x1c06962 0x1c37bb6 0x1c36f44 0x1c36e1b 0x1117a 0x12ffc 0x22dd 0x2205)
libc++abi.dylib: terminate called throwing an exception
(lldb) 

现在我知道错误在哪里以及在哪个文件中。但如果我没有呢?我习惯了java,它指向正确的文件和相应的行号。并不是说这总是问题所在,但通常这是一个好的方向。

4

1 回答 1

3

如果您使用调试器运行应用程序,当您遇到异常时,Xcode 调试器将显示堆栈跟踪。这将指向您的应用程序中导致问题的确切文件和行。

如果这没有发生,那么在 Xcode 中执行以下操作:

  • 查看 Xcode 左侧的断点面板
  • 点击左下角的 + 按钮并选择“添加异常断点”
  • 一个新的断点与一个对话框一起出现。接受默认值并点击完成
  • 右键单击异常并选择“将断点移动到”并选择“用户”

现在调试您的应用程序并导致异常。现在,无论何时遇到异常,您都应该在调试器中获得有用的堆栈跟踪。

于 2013-04-18T15:16:01.100 回答