【问题标题】:run error sends me to code I didn't write运行错误将我发送到我没有编写的代码
【发布时间】:2023-03-31 11:43:01
【问题描述】:

每当我点击某个按钮时,应用程序总是会死掉,我会被发送到:

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    THIS LINE ==> int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

熟悉的人都知道,这段代码不是我写的。我不知道如何找出我的错误在哪里!

此外,输出显示如下:

2011-10-27 21:03:17.690 My Program[55441:207] Unbalanced calls to begin/end appearance transitions for <UITabBarController: 0x68181f0>.
(lldb) 

在找到问题之前,我不知道在哪里可以逐行注释掉代码。有什么建议吗?

【问题讨论】:

  • 这不是一个坏策略。虽然更好的方法是注释掉你的代码的一半,这样你就可以在log(N)时间找到错误。
  • 表扬你的应用程序的主要入口点(你已经指出的那一行)不会让你走得太远。尝试在按钮方法的开始处设置断点,并逐步执行直到崩溃。
  • @Kenny 我打算注释掉与我按下并从那里开始的按钮相关的代码,而不是 main 代码(我现在意识到我没有说清楚)。
  • 您很可能使用的是 XCode 4.2。顺便问一下,你能粘贴你的代码 sn-p 吗?你是在用那个按钮来展示一个 viewController 吗?

标签: objective-c ios xcode lldb


【解决方案1】:

您可能会遇到 Xcode 4.2 大部分时间不显示堆栈跟踪的事实。检查此 SO 帖子。

Xcode 4.2 debug doesn't symbolicate stack call

【讨论】:

  • 我修复了最初的问题,然后在一段时间后又出现了这个“错误”。我尝试了您发送的解决方案,但我仍然发送到main - 我会继续研究它。为您的资源 +1。
【解决方案2】:

在按钮上单击一个新的UIView 被推入Window。该视图的 .xib 的 链接 很糟糕(链接到代码中不再存在的 IBOutlet,因为它已被重命名)。

我在Interface Builder 中设置了正确的链接,我不再收到错误。我希望 xcode 至少会告诉您您的 .xib 文件之一存在问题。

第 2 部分

修复之后不久,我又再次收到此错误。 在网上搜索了一下,我发现它可能内存泄漏有关,所以我跑了Project-&gt;Analyze 工具。当我修复Xcode 的建议时,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2011-07-24
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多