Ios 每次停止模拟器后,Xcode 4.2都会跳到main.m

Ios 每次停止模拟器后,Xcode 4.2都会跳到main.m,ios,xcode,Ios,Xcode,这更像是一种普遍的烦恼。每次停止模拟器后,Xcode出于某种原因跳转到main.m。在左侧导航上,它跳转到调试导航器 有办法解决这个问题吗 这很烦人,因为我可能正在测试某一行代码,而现在每次,我都需要单击几下才能返回到该代码 这个问题并不新鲜,但似乎变得更糟。在写这篇文章的时候,我使用的是转基因种子,但这个问题在XCode 4.2决赛中仍然存在。这在以前版本的XCode中不是问题。转到首选项->行为。选择左侧的“运行完成”。选中“显示选项卡”旁边的框并输入选项卡名称。我使用“编辑”。这样,无论何

这更像是一种普遍的烦恼。每次停止模拟器后,Xcode出于某种原因跳转到main.m。在左侧导航上,它跳转到调试导航器

有办法解决这个问题吗

这很烦人,因为我可能正在测试某一行代码,而现在每次,我都需要单击几下才能返回到该代码


这个问题并不新鲜,但似乎变得更糟。在写这篇文章的时候,我使用的是转基因种子,但这个问题在XCode 4.2决赛中仍然存在。这在以前版本的XCode中不是问题。

转到首选项->行为。选择左侧的“运行完成”。选中“显示选项卡”旁边的框并输入选项卡名称。我使用“编辑”。这样,无论何时停止,您都将回到一个名为“编辑”的选项卡。

当我们从xcode开始调试时,调试器将自己设置为监视来自操作系统的信号。当我们在XCode中按stop按钮时(或点击cmd+R-首先停止现有实例的运行,然后尝试启动新实例,这与我们先手动停止,然后运行有点相同)SIGKILL被发送到调试器

每当中断原因来自应用程序外部时(换句话说,所有发送SIGKILL的情况下,如按下停止按钮),调试器都会跳转到
main
,因为main是应用程序的根目录,也是应用程序与操作系统相遇的地方。调试器无法确定发出此SIGKILL的原因(按xcode中的stop按钮/按cmd+R/从多任务栏删除应用程序等),但它将SIGKILL视为外部中断,与代码无关。所以它跳转到了main

如果中断的原因是来自应用程序内部(如app crash/SIGABRT),调试器将处理它并跳转到崩溃的位置,这是我们通常看到的

我不认为这是XCODE错误,而是处理SIGKEY的正常方式。但是,如果您想停留在代码上,不想跳转到main,您可以做两件事

  • 你可以照加布的建议去做。正如BBonified所说,它就像一个乐队助手, 但我认为它应该有效(就我个人而言,我从未尝试过)

  • 报告功能的错误/请求。让我告诉你 不是第一个这样做的人。已经报告了一个bug。看见 和。但我对苹果公司采取积极行动的希望不大


  • 我同意你的看法,有时候这很烦人。特别是如果您在以前的XCode版本中有不同的体验。但是我们只能接受他们在这里提供的东西。

    我想把它称为bug是公平的,Xcode 3特别抑制了这个无用的人工制品

    ~/.gdbinit
    中,我已经成功地使用了这一行代码(四次并计数):

    handle SIGKILL nostop noprint nopass
    
    摘自本gdb手册:


    不确定它是否也适用于LLDB。

    < P>我遇到了同样的问题,这真的很烦人,尤其是当你在调试的时候,在小修改之后连续几次停止/启动应用程序。

    一切都可以通过Xcode用户首选项中的设置来解决:

    • 只需转到“运行完成”
    • 找到“显示”行并单击复选框
    • 在同一行上,修改目标以转到下拉菜单中的“当前”
    好了。从现在起,Xcode将不会移动编辑视图。享受


    PS:Xcode版本4.2构建4C199

    我尝试了David的建议,但对我无效,所以我尝试了类似的方法:

  • 打开首选项,选择行为选项卡
  • 从左栏中选择“意外退出运行”
  • 选择“使用当前视图显示调试器”
  • 我使用的是Xcode版本4.2构建4D199


    编辑:大约工作了15分钟。然后它又恢复到在编辑器中显示main.m。

    列出的其他解决方案都不适合我,因此我制作了一个宏(使用外部热键实用程序)

    (每一步后等待0.1秒)

    命令期

    指挥-1

    向下箭头

    向上箭头

    命令-j

    进入

    使用此键而不是普通的停止键,您最终将光标定位在离开它的位置。非常好。

    Xcode->首选项

    行为不良

    点击跑步开始

    带有[当前视图]的[显示]调试器的复选框


    …对我有效。

    所有偏好调整似乎都对我无效

    我已经能够追踪令人不快的事件顺序。当您运行应用程序并使用多个线程时,将出现SIGKILL错误消息。例如,在我的应用程序中使用UIWebView时,它将中止到main.m。我验证了当未调用UIWebView时,XCode可以停止,而不会出现SIGKILL错误消息,将用户返回main.m

    在初始化UIWebView时,似乎至少有两个线程启动。 但是,您在应用程序运行期间创建的任何线程都会导致SIGKILL错误地通知XCODE返回主线程

    您可以在GDB中看到,在SIGKILL之前有一个开关:

    [切换到进程24957线程0x2103]

    [切换到进程24957线程0x7403]

    [切换到进程24957线程0x207]

    程序以退出代码结束:0

    这肯定仍然是一个XCODE的bug,有望得到修复


    目前,如果您避免执行启动单独线程的代码,它将不会将视图更改回main.m。对于启动其他线程的代码,我建议退出模拟器,返回XCODE中的编辑模式。

    这可能不会太多。我在停止应用程序后等待2秒钟左右,然后重新启动应用程序,99%的时间都可以避免这个问题


    更新:升级到最新的Xcode后,系统会提示我使用LLDB而不是GDB。现在问题似乎已经解决了。

    这些解决方案都不起作用