ohh*_*hho 87 ios xcode6 ios8 ios-app-extension
- (void)viewDidLoad
{
NSLog(@"%s", __func__);
// ...
}
Run Code Online (Sandbox Code Playgroud)
在viewDidLoadiOS 8 扩展中.在 NSLog输出没有在Xcode.NSLog虽然在容器应用程序中照常工作.
如何从扩展中获取调试消息的输出?
Vin*_*uan 95
调试应用扩展程序的步骤:
运行容器应用程序.在此步骤中,Xcode将容器应用程序和应用程序扩展上载到设备或模拟器.
停止容器应用程序.在模拟器中调试时,此步骤很重要.如果你不这样做,Xcode会告诉你模拟器正在使用中.
在Xcode中,按菜单Debug - > Attach to Process - > By Process Identifer(PID)或Name ...,输入app ext的标识符,例如com.abc.ContainerApp.MyExtension,开始调试.不要忘记设置断点.(2014年8月25日更新:您可以直接输入MyExtension(您的分机名称).)
在设备或模拟器中,打开您的应用扩展程序.
我发现上面的调试步骤在模拟器上使用iOS 8 SDK beta 5的Xcode 6 beta 6上运行不正常.
解:
断点有效.但我不知道为什么日志不会在输出窗口中显示.
Bal*_*ick 49
我也有这个问题.如果您在菜单Debug - > Open System Log下进入模拟器,它对我有用...
从这里您可以看到iPhone模拟器的所有日志(包括您的扩展程序的日志).

San*_*aus 32
NSLog工作得很好.
您只是看不到在Xcode的调试区域中记录的内容,因为Xcode调试器未附加到您的扩展.扩展几乎完全独立于其包含的应用程序.例如,它们具有单独的包标识符,并且它们也是OS上的单独进程.
我在使Xcode附加到扩展程序方面取得了不同程度的成功.据说它似乎会自动附加,它在调试导航器中显示为"等待附加",但从不附加.
有时,我能够在Xcode中运行我的扩展目标:

然后可以选择运行我的扩展程序的应用程序.在这种情况下,我会选择"今天"的推荐,即通知中心.

然后它有时会将调试器附加到我的扩展.请注意,此方法仅适用于物理设备.
如果它没有附加,您可以在@ VinceYaun的答案中使用手动附件方法,
我使用其他附着方法也取得了不同的成功.大多数都没有成功,似乎它们只是将在以后修复的错误.
要查看日志消息,请转至顶部栏中的Window- > Devices并选择您的设备.您可以从该窗口的底部调出设备日志.如果您在模拟器上进行测试,可以使用@ BalestraPatrick的答案.
Beta 2中已经修复了一些错误,我猜测最终调试器会在启动扩展时自动附加.
更新:在iOS 8 Beta 4 发行说明中:
扩展
已修复测试版4
- 从Xcode调试时,扩展有时无法启动.
- 当使用UI的Extension被终止时,它会重新启动并且不会被解雇.
- 有时您的共享或操作扩展程序可能会挂起
- 重新部署扩展可能会在通知中心中禁用它.
Mas*_*lis 18
我也有这个问题.Xcode从不将我的调试器附加到扩展或显示NSLog消息.如果您将Xcode调试器手动附加到扩展过程,至少断点就像一个魅力:
Debug->Attach to process->Your extension name (mine was "com.example.MyExtensionApp.MyExtension")
Run Code Online (Sandbox Code Playgroud)
Xcode 8 能够调试扩展:
结果:断点和日志照常工作。
| 归档时间: |
|
| 查看次数: |
40653 次 |
| 最近记录: |