iOS怎么调试崩溃?

时间:2011-11-11 13:03:01

标签: ios

我的应用因特定原因而崩溃,我最终得到了这个日志:

MyProj [9442:707] - [NSDecimalNumber length]:无法识别的选择器发送到实例0x2e6690

我可以提供更多详情吗? 9442:707是什么意思,它是一个行号吗?

修改

在我的代码中,我添加了以下跟踪:

NSLog(@"KEYS:%@", myKeys);
NSLog(@"KEYS ORDERED:%@", [myKeys sortedArrayUsingSelector:@selector(compare:)]);

但是第二行崩溃了。我所看到的“长度”错误似乎来自这一行(我不会在任何地方使用[长度])。

2011-11-11 14:20:18.936 MyProj[9570:707] KEYS:(
  330,
  359,
  362,
  367,
  352,
  351,
  364,
  331,
  350
)

... then crash... with above error

2 个答案:

答案 0 :(得分:2)

有时,iOS调试器在描述确切问题时并不清楚。 但在你的情况下,它应该是清楚的。 [NSDecimalNumber length]无法执行,因为方法的长度我们不清楚。

参考:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/Reference/Reference.html

尝试找到使用长度函数的行,并将其更改为有效的行。在你的问题中有一段代码,我们可以更加准确。

答案 1 :(得分:2)

9442:707是关于这个过程的信息..它不会帮助你。

在代码中的某处,您将长度消息发送到NSDecimalNumber。

你能在调试器中发生崩溃吗?如果是这样,请在崩溃时检查调用堆栈,它应指出您正确的问题。

如果没有 - 如果您的代码库不是太大,您可以在代码中搜索“length”并检查您发送长度消息的任何位置,看它是否可以将其发送到错误类型的对象。 / p>