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

pix*_*eak 65 xcode ios

这更令人烦恼.每次停止模拟器后,Xcode都会因为某些原因跳转到main.m. 在左侧导航栏中,它会跳转到Debug Navigator.

有没有办法来解决这个问题?

这很烦人,因为我可能正在测试某一行代码,现在每次,我都需要点击几下才能回到那段代码.

这个问题并不新鲜,但似乎变得更糟.在撰写本文时,我是转基因种子,但这个问题在XCode 4.2 final中仍然存在.这在以前版本的XCode中不是问题.

Kri*_*dra 15

当我们从xcode开始调试时,调试器将自己设置为监视来自OS的信号.当我们按下XCode中的停止按钮(或点击cmd + R - 它首先停止现有实例运行,然后尝试启动新实例,稍微等于我们先按手动停止然后再运行)SIGKILL被发送到调试器.

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

如果中断的原因来自app内部(如app crash/SIGABRT),调试器会处理它并跳转到崩溃的地方,我们通常会看到它.

我不认为这是一个xcode错误,而是一种处理SIGKILL的常规方法.但是如果你想保留你的代码并且不想跳到main,你可以做两件事

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

  2. 在此处报告功能的错误/请求.让我告诉你,你不是第一个这样做的人.已经报告了一个错误.看到 这个这个.但我对Apple的积极行动没有多大希望

我同意你的意见,有时很烦人.特别是如果您在之前的XCode版本中遇到过不同的体验.但我们只能拿走他们在这里给出的东西.


小智 11

我想把它称为bug是公平的,Xcode 3专门压制了这个无用的人工制品.

我已经成功(四次计算)这个单线程~/.gdbinit:

handle SIGKILL nostop noprint nopass
Run Code Online (Sandbox Code Playgroud)

取自这个gdb手册:

http://www.delorie.com/gnu/docs/gdb/gdb_39.html

不确定它是否也适用于lldb.

  • 伙计们,这可行,但这个命令叫做'handle',而不是'signal'.将'把握SIGKILL nostop noprint nopass'放到〜/ .gdbinit中已经解决了我的问题. (3认同)

ava*_*nce 7

我尝试了大卫的建议,但这对我不起作用,所以我尝试了类似的东西:

  1. 打开首选项,选择行为选项卡.
  2. 从左列中选择"意外运行退出".
  3. 选择"使用当前视图显示调试器".

我正在使用Xcode版本4.2 build 4D199.

编辑:这工作约15分钟.然后它再次在编辑器中恢复了main.m.

  • 实际上,你也需要关注大卫的回答.您需要选择"显示"并将值设置为"当前" (2认同)

小智 6

我有同样的问题,它真的很烦人,特别是当你在调试中,经过小修改连续几次停止/启动应用程序.

通过Xcode用户首选项中的设置可以解决所有问题:

  • 只要去"跑完"
  • 找到"显示"行并单击复选框
  • 在同一行修改目标,转到下拉菜单中的"当前".

你去吧 从现在开始,Xcode不会移动您的编辑视图.请享用.

PS:Xcode版本4.2 Build 4C199