【问题标题】:What is LLDB RPC Server ? When does it crash in Xcode? Why it crashes?什么是 LLDB RPC 服务器?它什么时候在 Xcode 中崩溃?为什么会崩溃?
【发布时间】:2017-09-23 22:26:10
【问题描述】:

我在调试器中收到一条消息:

LLDB RPC 服务器已崩溃。崩溃日志位于 ~/Library/Logs/DiagnosticReports 并具有前缀“lldb-rpc-server”。请提交错误并附上最新的崩溃日志。

【问题讨论】:

  • 你的 Xcode 版本是多少? (这是 Xcode 8 beta 中的一个已知错误)
  • 版本 8.2.1 (8C1002)
  • XCode 的 8.3.2 版本也会出现同样的问题。苹果很烂!
  • 所有版本的 Xcode 8 突然在我的任何机器上显示此问题。
  • 我按照这个答案stackoverflow.com/a/33812614/618994 中的步骤操作,除了第一步,它对我有用。我相信第 4 步和第 5 步就足够了。

标签: xcode crash lldb


【解决方案1】:

在我的情况下,每次运行我的应用程序时,LLDB RPC 服务器都会崩溃,即使在清理构建文件夹并完全删除并重新安装 Xcode(版本 8.3.3 (8E3004b))之后也是如此。

事实证明,显然 LLDB 反对我设置的断点,只需将此断点移动一行即可解决问题。

【讨论】:

  • 我遇到了完全相同的问题。我收到了The LLDB RPC server has crashed。不确定是哪个断点导致了这个错误,但我只是关闭了每个断点。
  • 实际上,移动断点对崩溃没有任何影响。它仍然崩溃。
  • 虽然删除断点为我消除了崩溃,但我仍然想知道为什么。我需要那个断点;删除它真的让我回到了原点。移动它一条线似乎也不起作用。
  • 我没有任何断点。我仍然面临这个问题。谁能帮我解决这个问题?
  • 是的,我也是。我在 XCode 11.0 中遇到了同样的问题。我确实清理了构建删除了派生数据,但没有任何效果。然后我只删除了几个断点,它就起作用了。真的很奇怪
【解决方案2】:

确保您没有在 release 模式下运行应用,如果它处于 release 模式,则将其更改为 debug。 p>

【讨论】:

  • 这对我不起作用,我使用 Xcode 11.3 并设置调试模式仍然崩溃。
  • 为什么它被接受为答案?
【解决方案3】:

在我的例子中:我最近更新到 Xcode 版本 9.3 (9E145),Xcode 执行到带有断点的行,然后我输入“po XXX”命令它会显示相同的消息。 我尝试删除以下文件

~/Library/Preferences/com.apple.dt.Xcode.plist
~/Library/Caches/com.apple.dt.Xcode

它解决了。 不知道具体原因,但值得一试。

记得备份这些文件,以防万一发生意外情况。

【讨论】:

  • 请记住 ~/Library/Preferences/com.apple.dt.Xcode.plist 将从 Xcode 中删除您的首选项,例如编辑器配色方案
  • 删除了这些文件,但没有帮助。这些文件在 xcode 启动时重新创建
【解决方案4】:

我遇到了同样的问题,并在删除一些断点后修复了它。完全不知道为什么会发生这种情况,但至少你可以删除断点并使用一些 NSLog()print() 如果你在 Swift 中并在它们的帮助下进行调试。祝你好运!

【讨论】:

    【解决方案5】:

    这显然有很多不同的原因,但对我来说,我使用 DispatchGroup 来跟踪多个异步任务。

    我忘记在其中一项异步任务之前调用dispatchGroup.enter()(但完成后仍调用dispatchGroup.leave())。

    添加这个为我修复了崩溃。

    【讨论】:

      【解决方案6】:

      对我来说,重启模拟器就可以了。

      【讨论】:

        【解决方案7】:

        找到此问题的解决方案。我不知道这是否正确,但这个解决方案对我有用。我所做的是实际上我将两台设备连接到我的 mac mini,在一台设备上运行应用程序并在我的控制台中收到上述错误。然后我删除了一台设备并尝试了,这次我的控制台没有出现任何错误,它工作正常。我想你们不会相信这一点,我用两台设备尝试了将近 3 次,而一台设备只适用于一台设备

        【讨论】:

        • 这对我有用,我认为你被否决真的很不公平。
        • 对我不起作用
        【解决方案8】:

        这个错误的发生有多种原因,主要是当您稍后将手表应用程序添加到您的项目时,Xcode 将额外的构建目标添加到方案中。单击“运行/停止按钮”右侧的方案部分,然后点击编辑方案,点击第一个构建部分,您会看到 2 个目标,其中一个有 2 个子目标,其中包括手表应用程序和手表扩展程序,另一个没有子目标,它是一个手表应用目标。

        解决方法很简单,删除没有子目标的手表应用目标,然后再次运行应用。

        【讨论】:

          【解决方案9】:

          对我来说,我的观察名单中有一个表达,它正在吐槽。在控制台中查看崩溃日志时,报告的崩溃线程上有类似这样的内容:

          lldb_private::EvaluateExpressionOptions const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, lldb_private::ValueObject*) + 619
          17  com.apple.LLDB.framework        0x0000000102855f18 lldb::SBFrame::**EvaluateExpression**(char const*, lldb::SBExpressionOptions const&) + 696
          18  lldb-rpc-server                 0x00000001025e72e9 rpc_server::_ZN4lldb7SBFrame18EvaluateExpressionEPKcRKNS_19SBExpressionOptionsE::HandleRPCCall(rpc_common::Connection&, rpc_common::RPCStream&, rpc_common::RPCStream&) + 169
          19  lldb-rpc-server                 0x00000001025f8ce1 rpc_common::Connection::PrivateHandleRPCPacket(rpc_common::RPCPacket&, rpc_common::RPCPacket&, bool&) + 1553
          20  lldb-rpc-server                 0x00000001025fc36d Packets::ProcessPackets() + 1005
          21  lldb-rpc-server                 0x00000001025fbe96 Packets::ReadThread() + 214
          22  lldb-rpc-server                 0x00000001025fbdb9 Packets::RunReadThread(void*) + 9
          23  libsystem_pthread.dylib         0x00007fff6a586109 _pthread_start + 148
          24  libsystem_pthread.dylib         0x00007fff6a581b8b thread_start + 15
          

          【讨论】:

          • 能否请您解释一下您的答案如何解决问题
          【解决方案10】:

          我遇到了同样的错误,但对下一步该做什么却一无所知。我尝试了接受的答案,我的项目根本没有任何断点。

          原来我有一个没有删除的观察者,每隔几次我就会关闭/打开包含它的 vc,它最终会因操作错误而崩溃。我必须enable zombies 才能确定是哪个 vc 导致了错误。我不得不逐行手动检查代码以意识到我没有删除观察者。删除后一切正常。

          // not removing this caused the error
          playerItem?.addObserver(self, forKeyPath: #keyPath(AVPlayerItem.status),
                                          options: [.old, .new],
                                          context: &playerItemContext)
          

          【讨论】:

            【解决方案11】:

            我已经找到了解决方案,这可能不是完美的,但可以解决我的问题。

            1. 转到目标构建设置 -> 其他 Swift 标志 -> 检查添加的调试值 删除除 $(inherited)-DDEBUG

              之外的所有内容
            2. 删除派生数据

            3. 清理并运行

            【讨论】:

              【解决方案12】:

              如果工作区有很多断点,那么它会发生,所以尝试删除所有断点,看看神奇。

              【讨论】:

                【解决方案13】:

                我在 2021 年 1 月的 macOS Catalina 上使用 Swift 项目在 Xcode 12.1.1 (12A7605b) 中遇到了这个问题。

                我尝试了清理、删除派生数据、重新启动 mac、在不同的模拟器和真实设备上运行 - 没有运气。

                其他人建议删除断点,但对我来说,调试需要这个断点(我想我可以弄清楚如何以不同的方式进行调试,使用不同的断点或打印语句,但这令人沮丧)。

                我按照错误消息的提示向 Apple 提交了错误报告 - 我敦促其他人也这样做,以增加 Apple 修复的机会。

                与此同时,我使用此解决方法 - 将您想要断点的代码包装在 DispatchQueue.main.async 中:

                DispatchQueue.main.async { [self] in   
                    print("Put the breakpoint on this line")
                }
                
                

                (注意我们在这里使用[self],因为它只是调试代码,但在大多数情况下,这些异步调用需要[weak self] 以避免保留周期和内存泄漏)

                【讨论】:

                  【解决方案14】:

                  就我而言。我也在使用 SQLite.swift 创建数据库。当我尝试在代码中更改现有表的列数据类型时发生崩溃(这不是正确的方法),然后插入一个具有新数据类型的元组,然后尝试打印所有元组。

                  解决方法:删除已有的 .sqlite3 数据库文件或删除数据类型冲突的表并重新创建。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-04-20
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-04-17
                    • 1970-01-01
                    • 2013-01-31
                    相关资源
                    最近更新 更多