实现handleOpenURL消息时如何调试?

时间:2009-05-21 17:39:12

标签: iphone ios-simulator

我正在编写一个可以通过自定义网址启动的iPhone应用。所以,我覆盖 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

要测试我的更改,我必须在模拟器中运行应用程序,然后退出并启动Safari。然后,我在地址栏中输入我的自定义URL以启动应用程序。

但每次启动时,应用程序都会崩溃。我试图找出原因,但是当我设置断点并从主屏幕(而不是在XCode)启动应用程序时,它似乎没有附加。

我甚至尝试将NSLog语句放在handleOpenURL消息中,但它们不会打印到控制台。

我想我可以创建UIAlertViews但是......是的,哎呀。在Simulator中连接到调试会话的任何其他方式吗?

5 个答案:

答案 0 :(得分:14)

在Xcode 4中,您可以编辑目标的方案,在“运行”部分的“信息”选项卡中,您可以选择“等待MyApp.app启动”选项:

enter image description here

这将导致调试器等到下次启动应用程序,然后附加到该进程,而不是为您创建新进程。这样您就可以从Safari手动启动应用程序并使用调试程序。

答案 1 :(得分:7)

打开Console.app(在Utilities文件夹中)。您的日志消息应该出现在那里。

答案 2 :(得分:1)

你能编写一个能够运用你的AppDelegate功能的单元测试吗?

答案 3 :(得分:1)

我没有尝试过这个,但如何在代码中添加内联断点指令:

#if TARGET_CPU_ARM == 1
#define breakpoint() __asm__ volatile ("bkpt 0")
#else   // !ARM - assume INTEL. Everything else will break
#define breakpoint() __asm__ volatile ("int3");
#endif

答案 4 :(得分:1)

在hadleOpenURL中添加以下内容作为第一行:

[NSThread sleepForTimeInterval:30.0] 然后将断点放在下一行之后。

调用应用程序后,您将有30秒的时间进入XCode并从菜单中选择:运行/“附加到进程”并从列表中选择您的应用程序名称。 调试器应该在断点处停止。

完成后不要忘记删除sleepForTimeInterval!