2013-09-25 27 views
1

我在App Store中被赋予以下错误消息的应用程序:从哪里开始寻找的main.m线SIGSEGV的原因15

SIGSEGV中的main.m线15

int main(int argc, char *argv[]) 
{ 
@autoreleasepool { 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); <-- line 15 
} 
} 

相关用户的具体情况是:

enter image description here

,这是堆栈跟踪:

0 libobjc.A.dylib 0x3b446b26 0x3b443000 + 15142 
1 UIKit 0x3376c03b 0x33549000 + 2240571 
2 UIKit 0x3376bf43 0x33549000 + 2240323 
3 UIKit 0x3367132b 0x33549000 + 1213227 
4 UIKit 0x33724253 0x33549000 + 1946195 
5 UIKit 0x335d4971 0x33549000 + 571761 
6 UIKit 0x3354c473 0x33549000 + 13427 
7 CoreFoundation 0x30dae1d5 <redacted> + 20 
8 CoreFoundation 0x30dabb79 <redacted> + 284 
9 CoreFoundation 0x30dabebb <redacted> + 730 
10 CoreFoundation 0x30d16ce7 CFRunLoopRunSpecific + 522 
11 CoreFoundation 0x30d16acb CFRunLoopRunInMode + 106 
12 GraphicsServices 0x359e4283 GSEventRunModal + 138 
13 UIKit 0x335b8a41 UIApplicationMain + 1136 
14 SalonBook 0x0006c0f5 main (main.m:15) + 28917 

从哪里开始寻找这个错误的原因的任何想法?

+0

您是否在代码上运行静态分析器来查找内存管理问题? – bneely

+0

不...但使用XCode 5,我已经在Debug Navigator中观察了内存的使用情况,并没有什么不同寻常(6.3 MB)。根据堆栈跟踪,它看起来甚至没有进入第一个视图控制器。 – SpokaneDude

+0

appMemTotal的度量单位是什么,它是42.4 ...? – bneely

回答

1

您的应用触及segmentation fault或内存访问冲突。根据我在过去一年左右从我自己的设备上看到的抛弃日志,42 MB内存占用量听起来很大。我不知道你的应用程序,它在内存中是什么样的资源,等等有一系列的内存问题你的应用程序一样东西:

  • 内存简单的过度需求不能得到满足(没有交换文件)
  • 保留周期造成不必要的内存压力
  • 无效指针访问

的目标,我建议您与您的应用程序实现:

  • 实现零个警告由分析报告
  • 在什么情况下的内存分配获得高
  • 识别确定和消除保留周期
  • 标识在内存不必要的资源和摆脱他们
  • 确定资源比他们应该更大并且返工

调查此问题的出发点是通过产品> Analyze菜单项。这将检测并报告存储器访问错误的已知原因。如果您没有使用自动引用计数,它也会报告潜在的内存泄漏。在撰写本文时,我不相信分析仪有助于保留周期。

接下来,只需在设备上使用您的应用程序,通过Xcode运行并观察内存占用情况。当您浏览应用程序和/或使用更多功能时,内存使用量是否增长并且不会缩小?确定导致内存占用量大幅增加的任何情况。再次,我不知道你的应用程序,所以我不知道现在如何提供更具体的指导。

如果您在Apple的Instruments应用程序中使用分配工具,则保留周期可能很明显。您可以通过产品>配置文件菜单项运行此操作。仪器允许您按对象类型,大小,数量等浏览分配,并允许您查看单个对象的调用堆栈,以便了解它们是如何创建的。您可能会发现某些分配会跳出来,例如“这是4 MB的图像?”或者“为什么应用程序有8000个NSArray对象?”仪器帮助的另一项任务是提供几代人。 “标记生成”按钮可让您在工作流程的关键点放置标记。在执行工作流程之前和之后,您会看到该时间段内的内存增长量,并且您可以深入查看调用堆栈以查看分配的内容和方式。

如果您有任何疑问,请留下评论,我会尽快跟进。

+0

我想我发现了内存泄漏......我有各种UIPopovers;出于某种原因,ARC不会释放存储空间。我该怎么做才能解决这个问题?我注意到它主要发生在德国......也许是翻译?我检查那个... – SpokaneDude

+0

它可能是一个保留周期。一个UIViewController通常会保留它创建的UIPopoverController,以便稍后解散它。如果UIPopoverController反过来保留了UIViewController,或者没有被解雇,那就是一个问题。我无法猜测为什么德国会受到特别影响。 – bneely