【问题标题】:How to debug in Xcode如何在 Xcode 中调试
【发布时间】:2020-06-21 10:16:22
【问题描述】:

我正在尝试在 Xcode 中调试 iOS 应用程序。我的方案是在 Debug 中使用 Build Configuration。当我运行应用程序时,调试面板会打开,但是当应用程序在模拟器或设备上打开时,面板会关闭并且不允许我进行调试。

在 Xcode 中调试应用程序必须满足哪些条件?

我的 Xcode 版本是 11.3.1。 我的 macOS 版本是 10.15.2。

更新 1

我放了我的配置图片:

当我尝试通过“通过 PID 或名称附加到进程...”将调试附加到模拟器时,出现以下错误:

【问题讨论】:

  • 你放了断点吗?
  • 是的,我已经这样做了。
  • 什么是“打开”和“关闭”的“调试面板”?请显示您正在谈论的内容的屏幕截图。
  • 另外请证明 (1) 你有断点和 (2) 断点是activeenabled的。
  • 要尝试调试它,请将 Xcode 中的活动方案设置为 AppName > iPhone 11 Pro Max。然后单独使用模拟器(不是 Xcode)点击 AppName 让它运行。然后进入 Xcode 并执行 Debug > Attach to process by PID。然后输入您的应用程序的名称,然后单击附加。然后在 Xcode Debug Navigator 中按下 Pause 图标。它是否附加到您的应用程序。它会暂停您的应用吗?

标签: ios xcode debugging


【解决方案1】:

通过单击行数将断点放置到您想要调试的任何代码中。

希望对你有帮助...

【讨论】:

  • 我已经这样做了,但对我来说并不奏效。调试面板至少应该保持打开状态,作为调试已激活的指示器,但事实并非如此,只是应用程序打开面板关闭并且不会停留在我放置的断点处。
  • 你能分享一张图片吗?
  • @ffcc ,我也看到了这个错误。几次重启后Xcode恢复正常:)
【解决方案2】:

您正在运行的方案必须启用调试功能。这是默认设置,但它可能已被意外更改或在实验过程中更改。

这是一个正确的例子,启用调试。

确保你已经设置了一些断点。

此外,您的偏好设置可能不适合调试。

以下设置需要在 Xcode > Preferences 中勾选;行为选项卡。

注意两个选中的运行暂停左侧面板选择项:

请注意,当安装 Xcode 时,第一次使用时,它会提示开发者访问您的系统,需要管理员特权帐户的密码(通常您自己的帐户具有此特权)。

为了调试附加工作,必须启用开发人员模式。这可以检查:

# DevToolsSecurity -verbose -status
Getting rights definition for: system.privilege.taskport.debug
Current rights definition dictionary:
"k-of-n" : 1
"class" : "rule"
"created" : 582290628
"version" : 0
"modified" : 589046609
"comment" : "For use by Apple.  WARNING: administrators are advised
            not to modify this right."
"rule" : { "is-admin", "is-developer", "authenticate-developer" }

Developer mode is currently enabled.

若未启用开发者模式,请使用

# sudo DevToolsSecurity -enable

【讨论】:

  • 我启用了开发者模式并且遇到了同样的问题。我尝试的是调试另一个简单的应用程序,我成功了,只有一个应用程序才会发生在我身上。
  • 您可以从终端运行lldb,然后提供命令process attach -n "vaion" --waitfor --verbose,将vaion 替换为您的应用程序名称。然后在模拟器中启动应用程序。比较运行的应用程序和失败的应用程序之间的输出,并与我们共享输出。如果构建错误,也可以在模拟器中擦除和重置设置。
  • 这里输出:Process 3712 stopped * thread #1, stop reason = signal SIGSTOP frame #0: 0x000000010e1dc000 dyld_dyld_start dyld_dyld_start: -> 0x10e1dc000 <+0>: popq %rdi 0x10e1dc001 <+1>: pushq $0x0 0x10e1dc003 <+3>: movq %rsp, %rbp 0x10e1dc006 <+6>: andq $-0x10, %rsp Target 0: (My App) stopped. Executable module set to "/Users/user1/Library/Developer/CoreSimulator/Devices/84F9F90F-F374-45A5-AD01-8D0B76B1208B/data/Containers/Bundle/Application/4C4C8558-A7B8-4B5B-A9CB-59C919D1322A/My App.app/My App". Architecture set to: x86_64h-apple-ios-.
  • 这看起来不错。它还说“user1”,而人们通常有“johndoe”或其他东西作为他们的用户帐户。它是共享的或临时的机器,还是访客帐户,还是特权较低的帐户?如果 lldb 可以附加但 Xcode 不能,我建议删除并重新安装 Xcode。如果这不能解决问题,值得向 Apple 报告。
猜你喜欢
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多