相关疑难解决方法(0)

在Xcode 4.2/iOS 5下的控制台中没有异常堆栈跟踪?

在Xcode 3.x和iOS 4下,如果在模拟器中发出未处理的异常信号,则在控制台输出中会产生异常堆栈跟踪(类似于Java).

当我在Xcode 4.2下的iOS 5中引发未处理的异常时,运行完全相同的应用程序代码,不会发生堆栈跟踪.(我确实弄清楚如何设置异常断点,但这不会在控制台中产生回溯.)

这仅仅是我需要在某处创建的Xcode设置,还是Xcode 4/iOS 5的"功能"?有没有办法恢复这一点功能?

更新

不幸的是,添加一个uncaughtExceptionHandler不起作用.这是处理程序:

void uncaughtExceptionHandler(NSException *exception) {
    NSLog(@"uncaughtExceptionHnadler -- Exception %@", [exception description]);
    // Because iOS 5 doesn't provide a traceback, provide one here
    NSLog(@"Stack trace: %@", [exception callStackSymbols]);
    // Let Flurry look at the error
    [FlurryAPI logError:@"Uncaught" message:@"Crash!" exception:exception];
}                                               
Run Code Online (Sandbox Code Playgroud)

(事实证明它已经存在,做Flurry的事情,所以我只是添加了堆栈跟踪.)

这是它启用的地方(只在声明处理程序的下面几行):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Enable uncaught exception handler to dump stack and let Flurry log the exception
    NSUncaughtExceptionHandler* hdlr = NSGetUncaughtExceptionHandler();
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
    NSUncaughtExceptionHandler* newHdlr …
Run Code Online (Sandbox Code Playgroud)

ios5 xcode4.2

48
推荐指数
1
解决办法
2万
查看次数

轻松打印应用程序的当前堆栈跟踪?

Xcode/objective c并没有真正打印出有用的堆栈跟踪.我的应用程序崩溃了,该死的东西只给我45353453,34524323,6745345353,457634524234这样的数字.完全没用.

所以我想制作一个NSLog(); 在我的整个应用程序中的每个方法的开头.但也许有一种更简单的方法来找出真正的堆栈跟踪,人性可读?不仅在应用程序启动或崩溃时,而且在所有发生的活动中始终如此?会帮助调试很多.

iphone debugging xcode cocoa-touch uikit

8
推荐指数
2
解决办法
5203
查看次数

标签 统计

cocoa-touch ×1

debugging ×1

ios5 ×1

iphone ×1

uikit ×1

xcode ×1

xcode4.2 ×1