请原谅我的无知,当我在iPhone模拟器中运行iPhone应用程序时,关于Xcode调试器的问题一直困扰着我。
有时,当我在Interface Builder中搞乱一些东西时,我会在运行时得到一个未处理的异常,并且我会抛回Xcode。我看到的唯一一件事就是一行“未捕获的异常”之类的东西。在我看来,没有额外的信息,更不用说堆栈跟踪或任何其他有用的东西了。
在过去的十年左右,我一直在Visual Studio中进行开发,我习惯于在发生这样的事情时获得良好的堆栈跟踪和完整的异常信息。
我肯定我只是错过了一些非常明显的东西。希望..。
发布于 2009-07-07 18:47:32
如果添加两个断点,则应该能够调试这些异常。为此,请转到运行|显示|断点并创建两个全局断点(我全局创建它们,因为它们在我的所有应用程序中都非常有用)。第一个应命名为"objc_exception_throw“,其位置应为"libobjc.A.dylib”。第二个应该是"-NSException raise“,它的位置应该是"CoreFoundation”。
现在,如果在启用断点的情况下开始调试应用程序,它应该会在抛出这些异常时中断。然后,您应该能够在调试器中看到导致异常的事件链。
发布于 2009-07-07 18:54:05
有关运行时异常的更多信息,您应该能够打开调试器控制台并查看更多信息。我假设您已经这样做了,但以防万一-您可以通过从菜单中选择Run -> Console来访问它。我不确定为什么它不能自动出现!
发布于 2009-07-07 18:46:53
你可以把你的UIApplicationMain包在一个try/catch中:
int main(int argc, char *argv[]) {
int retVal;
NSAutoreleasePool * pool;
@try
{
pool = [[NSAutoreleasePool alloc] init];
retVal = UIApplicationMain(argc, argv, nil, nil);
}
@catch(NSException* e)
{
NSLog(@"%@", e.reason);
}
@finally
{
[pool release];
}
return retVal;
}
您还应该研究一下在调试时设置断言处理程序:NSAssertionHandler。
更新:还有未处理的异常处理程序:NSSetUncaughtExceptionHandler
https://stackoverflow.com/questions/1093999
复制相似问题