那是什么意思? “mi_cmd_stack_list_frames:堆栈中没有足够的帧。”

时间:2009-09-03 08:25:44

标签: iphone cocoa-touch uikit

当我在设备上运行我的应用程序时,调试器告诉我这个:

Program received signal:  “EXC_BAD_ACCESS”.
mi_cmd_stack_list_frames: Not enough frames in stack.
mi_cmd_stack_list_frames: Not enough frames in stack.

我没有获得有关代码发生位置的信息。这就是我得到的全部。知道那可能是什么意思吗?

此后应用程序崩溃了。当设备未连接到mac时,它仍然会崩溃,因此不会出现调试器问题。

6 个答案:

答案 0 :(得分:9)

在4.0 sdk上构建3.1.3手机导致了这一点。

通过弱目标中的UIKit进行修复。

答案 1 :(得分:2)

当消息发送到已释放的对象时,会发生EXC_BAD_ACCESS。

在尝试发布已经发布的内容之前,我看过“mi_cmd_stack_list_frames:堆栈中的帧数不够”。

我的建议是设置NSZombieEnabled环境变量并查看您尝试访问的已释放对象。

这个网站有一个很棒的教程: http://www.codza.com/how-to-debug-exc_bad_access-on-iphone

答案 2 :(得分:1)

我看到这至少是由三种不同的问题引起的:

•如其他答案中所述,过度发布错误可以做到这一点。

•当我升级应用程序以使用iAd和IOS 4.0时,我发生了这种情况。我认为问题是我试图在3.0版本的应用程序中使用iAd框架,这当然是不可能的,因为iAd只是在4.0及以上版本。

•当我从一个应用程序中删除了一堆东西并重新编译时,我发生了这种情况,但旧的东西的痕迹仍在模拟器上。重置模拟器清除了问题。我要删除的是Flurry API。我恐怕不知道是什么,特别是在那里,并导致了问题。

答案 3 :(得分:1)

我有同样的问题。 我的解决方案是: 退出Xcode,等待一段时间后再重启。

答案 4 :(得分:0)

我试图在iOS 3.1.2下使用类似字符串在iPhone上启动应用程序时收到此消息

Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

同时使用iOS 4设备时效果很好。
所以我可以假设,如果有任何引用仅限iOS4的类,那么当开始在设备上运行时应用程序可能会崩溃。

答案 5 :(得分:0)

创建一个新项目并复制其中的所有现有文件为我解决了这个问题。