【问题标题】:How to attach debugger to iOS app after launch?启动后如何将调试器附加到 iOS 应用程序?
【发布时间】:2012-04-01 02:02:21
【问题描述】:

我遇到了一个我正在排除故障的问题,该问题很少发生,并且在我在 Xcode 下运行时似乎不会发生。

是否可以正常运行应用程序(即从 Springboard)直到我的问题出现,然后在那时附加调试器?

如果可能的话,我宁愿不越狱。

【问题讨论】:

标签: ios xcode debugging


【解决方案1】:
  • 将您的设备连接到您的 Mac
  • 调试 > 按 PID 或名称附加到进程
  • 在对话框表中,输入通过 Xcode 启动时出现在 Debug navigator 中的应用名称(例如,目标名称不是 bundle-id)。

如果应用程序已经在运行,调试器将附加到正在运行的进程。如果它没有运行,它将等待应用程序启动然后附加。

【讨论】:

  • 奥莱,谢谢你的回答。我正在寻找一种方法来做到这一点。当我去附加调试器时,它看起来像附加但随后我收到以下消息:警告:无法读取 /var/mobile/Applications/ {GUID}/{APPNAME}.app/{APPNAME} 的符号(文件不是成立)。当我在 XCode 中按下“停止”按钮时,应用程序终止。看起来它没有找到调试符号,尽管它是在调试模式下构建的。有什么想法吗?
  • 我有一个问题,如果它没有运行,它将等待应用程序启动然后附加。 部分。它不起作用。我使用进程名称来等待应用程序调用。我在 iPhone 上启动了应用程序,但调试器从未意识到应用程序已经启动。
  • @BrianV -- 如果您希望能够附加到进程,则需要确保使用 -ggdb 进行编译。
  • 我同意强尼的观点;我的经验是附加在模拟器上工作,但不会附加到实际设备上。
  • 注意:在 Xcode 5.0.1+ 中是 Debug > Attach to Process > By Process Identifier (PID) or Name stackoverflow.com/a/20193088/175830
【解决方案2】:

我将把这个留在这里,因为其他 2 个答案都没有给我足够的细节,没有一点挣扎。

  1. 在模拟器中运行您的应用程序并记下调试导航器中的名称

  2. 插入您的设备,不要忘记选择您的设备作为目标

  3. 调试 > 附加到进程 > 按进程标识符 (PID) 或名称
  4. 输入步骤 1 中的名称并附加。这应该是你所要做的。

【讨论】:

  • 你应该有 1000 个赞。如果没有这个巧妙的技巧,调试通过自定义 url 方案开始的东西可能会很痛苦。非常感谢!
  • 我希望在自己花 20 分钟弄清楚这个问题之前看到这个答案 :(
  • 它的工作原理是它附加到进程中,但我看不到任何我真正需要的日志输出。有什么想法吗?
  • @Orlando - 如果您正在寻找日志输出,我强烈推荐 DeviceConsole:github.com/rpetrich/deviceconsole
  • 我完全按照你的建议做了。我得到错误:Could not attach to PID 我尝试了名称和它的 ID。我在应用程序运行和停止时尝试过..
【解决方案3】:

在 Xcode 5.0.1 和 6 中是菜单栏项:

Debug > Attach to Process > By Process Identifier (PID) or Name...

【讨论】:

    【解决方案4】:

    在 Xcode 7 中只是:

    Debug > Attach to Process by PID or Name...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-07
      • 2016-10-30
      • 2012-03-21
      • 2011-10-14
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      相关资源
      最近更新 更多