Xcode了解如何分析调用堆栈

时间:2012-06-21 10:54:05

标签: xcode debugging callstack

我正在使用Xcode 4.3.1而且我不太了解如何使用控制台来完成调用堆栈。在我的代码中,我有多行调用一个特定的动作,在这个动作中有一个失败的断言。从输出中我只能看到断言失败消息和调用调用堆栈的对象的地址(至少我猜测它们是什么)。但我无法浏览并查看我的类的哪一行代码调用导致断言的操作(有点像你可以从Eclipse分析堆栈跟踪)。是否有一些相关的教程可以解释这个?

这是我从班上的多行调用的动作:

   [[CCActionManager sharedManager] addAction:[CCSequence actions:fadeAction, nil] target:source paused:NO]; 

我知道它会抛出断言,但是我无法从控制台输出中了解调用此方法的行会导致这种情况。

这是我的控制台输出:

*** Assertion failure in -[CCActionManager addAction:target:paused:], /Users/user/Desktop/SourceCode - Backups/MyApp/MyApp/libs/cocos2d/CCActionManager.m:162
2012-06-21 12:40:54.761 MyApp[4148:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Argument target must be non-nil'
*** First throw call stack:
(0x338e08bf 0x303d41e5 0x338e07b9 0x311273b3 0xdc3b 0x5fbe5 0x66d2b 0x338e3814 0x3383e7e1 0x1afbb 0x1c39b 0x1981f 0x3383a435 0x435a7 0x43277 0x44aed 0x3128550f 0x31284f01 0x3126b4ed 0x3126ad2d 0x37fa9df3 0x338b4553 0x338b44f5 0x338b3343 0x338364dd 0x338363a5 0x37fa8fcd 0x31299743 0x58b9b 0x20e4)

1 个答案:

答案 0 :(得分:3)

Apple有关于此的技术说明 - TN2151。特别是关于象征崩溃报告的部分。

使用应用程序的.dSYM文件,您可以以更易读的格式将堆栈地址(那些十六进制数字)转换为来自源的调用。