【发布时间】:2010-10-27 21:36:10
【问题描述】:
我有一个名为 Flick Background 的应用程序(我是开发人员)。它在 Leopard 上运行良好,但在 Snow Leopard 上不起作用(下载图像时崩溃)。这是崩溃日志(有些被删除,因为它包含个人信息):
Process: Flick Background [8591]
Path: <<hidden>>
Identifier: com.alexy.Flick Background
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000020a38928
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x916caee4 objc_msgSend + 36
1 com.apple.CFNetwork 0x969ac054 URLDownload::willSendRequest(_CFURLRequest const*, _CFURLResponse*) + 56
2 com.apple.CFNetwork 0x9694a0a7 URLConnectionClient::getRequestForTransmission(_CFURLResponse*, _CFURLRequest const*, __CFError**) + 413
3 com.apple.CFNetwork 0x96949b2f URLConnectionClient::_clientWillSendRequest(_CFURLRequest const*, _CFURLResponse*, URLConnectionClient::ClientConnectionEventQueue*) + 223
4 com.apple.CFNetwork 0x969ce456 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 148
5 com.apple.CFNetwork 0x9694994e URLConnectionClient::processEvents() + 94
6 com.apple.CFNetwork 0x969497ef MultiplexerSource::perform() + 183
7 com.apple.CoreFoundation 0x910d90fb __CFRunLoopDoSources0 + 1563
8 com.apple.CoreFoundation 0x910d6bbf __CFRunLoopRun + 1071
9 com.apple.CoreFoundation 0x910d6094 CFRunLoopRunSpecific + 452
10 com.apple.CoreFoundation 0x910d5ec1 CFRunLoopRunInMode + 97
11 com.apple.HIToolbox 0x94426f9c RunCurrentEventLoopInMode + 392
12 com.apple.HIToolbox 0x94426c8d ReceiveNextEventCommon + 158
13 com.apple.HIToolbox 0x94426bd6 BlockUntilNextEventMatchingListInMode + 81
14 com.apple.AppKit 0x91bbba89 _DPSNextEvent + 847
15 com.apple.AppKit 0x91bbb2ca -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 156
16 com.apple.AppKit 0x91b7d55b -[NSApplication run] + 821
17 com.apple.AppKit 0x91b755ed NSApplicationMain + 574
18 com.alexy.Flick Background 0x00001cfa start + 54
我看到的是,当图像下载时,我的应用程序崩溃了。我的第一个结论是,我用来下载图像的东西在雪豹中已经贬值了。
我没有雪豹机,所以无法直接定位错误。这是我可能认为导致问题的代码的一部分:
NSError *error = nil;
NSData *initalizedUrl = [NSData dataWithContentsOfURL: [NSURL URLWithString:@"URLHERE"] options:0 error:&error];
NSString *rawContents = [[NSString alloc] initWithData:initalizedUrl encoding:NSASCIIStringEncoding];
我几乎 100% 确定这个问题会在雪豹中得到解决。
【问题讨论】:
-
为什么您认为代码会导致问题?符号化后的崩溃日志是什么样的? (您正在从每个版本中保存 dSYM 包,对吗?)
-
我认为是这段代码,因为这是下载内容的唯一函数。我迅速移动了我的主窗口,我泄漏了数百个对象,我后来发现了。我什至没有开始下载过程。嗯……
-
好吧,如果你不释放 NSString 对象,那将是泄漏之一。泄漏仪器会告诉你更多。您仍然应该符号化崩溃日志;那么您将能够找到程序崩溃时所在代码的确切行。
-
如何符号化崩溃日志?
-
我确实发布了 NSString 对象,如果需要我可以提供源代码。
标签: cocoa