当调试器设置为LLDB时,Xcode 4在连接(App名称)时出现卡顿

6

当我在模拟器中运行应用程序时,如果调试器设置为LLDB,Xcode会在"Attaching to (App name)"处挂起,但是如果将调试器设置为GDB(Product->Edit Scheme->Run->Debugger),则应用程序可以正常运行。如何修复这个问题,以便使用LLDB进行调试而不会导致Xcode在"Attaching to (App name)"处挂起?


你正在使用LLVM编译器吗? - borrrden
不知道,我怎么检查呢? - Johan de Klerk
在您的构建设置中搜索“编译器”。 - borrrden
是的,我正在使用LLVM编译器。 - Johan de Klerk
@Johan de Klerk,你进行了一次干净的构建吗? - self
我有同样的问题!如果我不切换到GDB,我就必须强制关闭Xcode。 - Tyler Wall
7个回答

2

我曾经遇到同样的问题,按照这些指示(为什么LLDB调试器无法连接?)解决了。我只需在/etc/hosts中添加一个条目,将localhost转换为127.0.0.1,然后它就可以正常工作了。


该死,你应该得到更高的评价。调试器通过网络连接,并在本地主机上查找模拟器,而不是 127.0.0.1。 - Can

1
我发现当调试器设置为LLDB时,Xcode需要访问本地主机。因此,如果您的hosts文件没有正确配置,则始终会收到“无法附加到进程ID xxxx”的错误。这是一个技巧:
  • 尝试运行$sudo file /etc/hosts命令。如果输出结果为/etc/hosts: ASCII English text, with CRLF line terminators,则需要将其文件格式更改为UNIX格式。有许多方法可以实现这一点。我个人偏好:

    • 通过$sudo vim /etc/hosts命令打开hosts文件。
    • 进入vim命令行模式,输入:set ff=unix并回车即可更改文件格式。
    • 确保您的hosts文件包括像这样的一行:127.0.0.1 localhost
    • 输入:wq并回车保存并退出。

    现在再次尝试$sudo file /etc/hosts命令,输出结果应该为/etc/hosts: ASCII English text

  • 更改hosts文件的权限:$sudo chmod 644 /etc/hosts
  • 完成以上所有步骤后,尝试运行$ping localhost命令,你会得到类似于64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.037 ms而不是ping: cannot resolve localhost: Unknown host的错误信息。
  • 重启Xcode和模拟器。

0
Xcode 4.5.x给我的lldb(所以我使用了gdb)和git(我使用了SourceTree)带来了麻烦,但当我升级到XCode 4.6.2后,这些问题神奇地解决了。

0
打开你的终端并输入以下命令。
 sudo nano /private/etc/hosts 

按回车键。然后它会要求您输入Mac密码。一旦您输入密码。

GNU nano 2.0.6 文件:/private/etc/hosts

## # 主机数据库 # # localhost用于配置环回接口 # 当系统启动时。不要更改此条目。 ##

127.0.0.1 localhost

255.255.255.255 broadcasthost

::1 localhost

fe80::1%lo0 localhost

完成更改后,按Control-X退出编辑器,按Y保存,


0

升级到最新的操作系统版本可以解决这个问题。 在我的情况下,我使用的是Yosemite 10.10.5,我将其更新到了El Capitan 10.11.1。 然后我启动了Xcode 7.0.1,为xcode安装了额外的组件,问题得到了解决。

我认为可能是xcode缺少了额外的组件。 或者可能需要强制更新操作系统才能使Xcode和模拟器正常工作。


0

这是一个非常简单的步骤...对我来说,这是一个大问题,因为每次我都卡在“附加到我的应用程序”上,Xcode也会变得无响应。

在菜单栏中的“产品”下,转到方案并单击“编辑方案”。一个框将打开,在信息选项卡下,将每个项目的“调试器”从LLDB更改为GDB。对我来说,每次都有效!希望这个答案能解决每个人遇到的问题。


0

我发现这种情况偶尔会发生,但通常重新启动模拟器或设备、重新启动XCode并清理派生数据目录就可以解决问题。


我尝试过这个,但它每天都发生,所以我认为我的设置肯定有问题。 - Johan de Klerk
我猜你说的“every day”是指“每一次”,这和前者不同,不太正常。 - Jano
2
我有完全相同的问题 - 编译器设置为LLVM,调试器设置为LLDB,但在附加步骤时卡住了。使用GDB则完美运行。 - Salman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接