diff options
Diffstat (limited to 'xpcom/base/nsObjCExceptions.h')
-rw-r--r-- | xpcom/base/nsObjCExceptions.h | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/xpcom/base/nsObjCExceptions.h b/xpcom/base/nsObjCExceptions.h index b3ed532ec..e542a22f8 100644 --- a/xpcom/base/nsObjCExceptions.h +++ b/xpcom/base/nsObjCExceptions.h @@ -13,10 +13,6 @@ #import <Foundation/Foundation.h> -#ifdef DEBUG -#import <ExceptionHandling/NSExceptionHandler.h> -#endif - #include <unistd.h> #include <signal.h> #include "nsError.h" @@ -40,80 +36,6 @@ nsObjCExceptionLog(NSException* aException) { NSLog(@"Mozilla has caught an Obj-C exception [%@: %@]", [aException name], [aException reason]); - -#ifdef DEBUG - @try { - // Try to get stack information out of the exception. 10.5 returns the stack - // info with the callStackReturnAddresses selector. - NSArray* stackTrace = nil; - if ([aException respondsToSelector:@selector(callStackReturnAddresses)]) { - NSArray* addresses = (NSArray*) - [aException performSelector:@selector(callStackReturnAddresses)]; - if ([addresses count]) { - stackTrace = addresses; - } - } - - // 10.4 doesn't respond to callStackReturnAddresses so we'll try to pull the - // stack info out of the userInfo. It might not be there, sadly :( - if (!stackTrace) { - stackTrace = [[aException userInfo] objectForKey:NSStackTraceKey]; - } - - if (stackTrace) { - // The command line should look like this: - // /usr/bin/atos -p <pid> -printHeader <stack frame addresses> - NSMutableArray* args = - [NSMutableArray arrayWithCapacity:[stackTrace count] + 3]; - - [args addObject:@"-p"]; - int pid = [[NSProcessInfo processInfo] processIdentifier]; - [args addObject:[NSString stringWithFormat:@"%d", pid]]; - - [args addObject:@"-printHeader"]; - - unsigned int stackCount = [stackTrace count]; - unsigned int stackIndex = 0; - for (; stackIndex < stackCount; stackIndex++) { - unsigned long address = - [[stackTrace objectAtIndex:stackIndex] unsignedLongValue]; - [args addObject:[NSString stringWithFormat:@"0x%lx", address]]; - } - - NSPipe* outPipe = [NSPipe pipe]; - - NSTask* task = [[NSTask alloc] init]; - [task setLaunchPath:@"/usr/bin/atos"]; - [task setArguments:args]; - [task setStandardOutput:outPipe]; - [task setStandardError:outPipe]; - - NSLog(@"Generating stack trace for Obj-C exception..."); - - // This will throw an exception if the atos tool cannot be found, and in - // that case we'll just hit our @catch block below. - [task launch]; - - [task waitUntilExit]; - [task release]; - - NSData* outData = - [[outPipe fileHandleForReading] readDataToEndOfFile]; - NSString* outString = - [[NSString alloc] initWithData:outData encoding:NSUTF8StringEncoding]; - - NSLog(@"Stack trace:\n%@", outString); - - [outString release]; - } else { - NSLog(@"<No stack information available for Obj-C exception>"); - } - } - @catch (NSException* exn) { - NSLog(@"Failed to generate stack trace for Obj-C exception [%@: %@]", - [exn name], [exn reason]); - } -#endif } __attribute__((unused)) |