启动后如何将调试器附加到iOS应用?


100

我有一个正在解决的问题,该问题很少发生,并且当我在Xcode下运行某些东西时似乎没有发生。

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

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

Answers:


123
  • 将设备连接到Mac
  • 调试>通过PID或名称附加到进程
  • 在对话框中,输入通过Xcode启动时在Debug导航器中显示的应用名称。

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


好吧,谢谢您的回答。我一直在寻找一种方法来做到这一点。当我附加调试器时,看起来好像附加了调试器,但是却收到以下消息:警告:无法读取/ var / mobile / Applications / {GUID} / {APPNAME} .app / {APPNAME}的符号(文件未找到)。当我按XCode中的“停止”按钮时,该应用程序终止。尽管它是在调试模式下构建的,但似乎找不到调试符号。有任何想法吗?
布赖恩

4
我的问题是如果它没有运行,它将等待应用程序启动然后附加。部分。没用 我使用进程名称来等待应用程序调用。我在iPhone上启动了该应用程序,但调试器从未意识到该应用程序已启动。
Jonny

1
@BrianV-如果您希望能够附加到该进程,则需要确保使用-ggdb进行编译。
itfische

4
我同意强尼的观点;我的经验是,附件可以在模拟器上运行,但不会附加到实际设备上。
詹姆斯·摩尔

4
注意:在Xcode 5.0.1+中,它是Debug > Attach to Process > By Process Identifier (PID) or Name stackoverflow.com/a/20193088/175830
Jason

116

我将把它留在这里,因为其他两个答案都没有给我足够的细节而没有一点麻烦。

  1. 在模拟器中运行您的应用,并在Debug导航器中记下名称 在此处输入图片说明

  2. 插入设备,别忘了选择设备作为目标设备 在此处输入图片说明

  3. 调试>附加到进程>按进程标识符(PID)或名称 在此处输入图片说明
  4. 输入步骤1中的名称并附加。那应该就是你要做的。 在此处输入图片说明

8
您应该有1000个投票。如果没有这个巧妙的技巧,调试通过自定义网址方案开始的工作可能会很麻烦。非常感谢!
txulu 2015年

2
我希望在我花20分钟自行解决这个问题之前就看到了这个答案:(
simon_smiley 2015年

7
它的工作原理是将它附加到流程中,但是我看不到真正需要的任何日志输出。有任何想法吗?
奥兰多

2
@Orlando-如果您正在寻找日志输出,我强烈建议您使用DeviceConsole:github.com/rpetrich/deviceconsole
Orion elenzil 2015年

1
我按照你的建议做了。我得到错误:Could not attach to PID我尝试了名称和ID。我在应用程序运行和停止时都尝试过
Honey

49

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

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

7

在Xcode 7中,它只是:

Debug > Attach to Process by PID or Name...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.