2011-12-20 5 views
1

Получение ошибки SIGABRT в main.m. Я перечислил задний след из консоли, чтобы узнать, может ли кто-нибудь указать мне в правильном направлении.iOS SIGABRT в Main.m (backtrace предусмотрено)

#0 0x94d77c5a in __kill() 
#1 0x94d77c4c in kill$UNIX2003() 
#2 0x94e0a5a5 in raise() 
#3 0x94e206e4 in abort() 
#4 0x94d9cb1b in _Unwind_Resume() 
#5 0x012abe39 in CFRunLoopRunSpecific() 
#6 0x012abccb in CFRunLoopRunInMode() 
#7 0x002c12a7 in -[UIApplication _run]() 
#8 0x002c2a9b in UIApplicationMain() 
#9 0x000028d9 in main (argc=1, argv=0xbfffec90) at/ Users/user- 
    name/Desktop/ProjectFive/ProjectFive/ProjectFive/main.m:20 
#10 0x00002825 in start() 

Это основная информация о дампе, которую я смог скопировать. SIGABRT происходит прямо на autorelease заявление в моем main.m

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
int retVal = UIApplicationMain(argc, argv, nil,  
NSStringFromClass([ProjectFiveAppDelegate class])); 
    [pool release]; 
    return retVal; 

...

0x002c297f <+0891> mov %eax,(%esp) 
0x002c2982 <+0894> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c2987 <+0899> mov %eax,%esi 
0x002c2989 <+0901> mov 0x69940e(%edi),%eax 
0x002c298f <+0907> mov 0x68db46(%edi),%ecx 
0x002c2995 <+0913> lea 0x525009(%edi),%edx 
0x002c299b <+0919> mov %edx,0x8(%esp) 
0x002c299f <+0923> mov %ecx,0x4(%esp) 
0x002c29a3 <+0927> mov %eax,(%esp) 
0x002c29a6 <+0930> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c29ab <+0935> mov 0x68df86(%edi),%ecx 
0x002c29b1 <+0941> mov %ebx,0x18(%esp) 
0x002c29b5 <+0945> lea 0x6a6c56(%edi),%edx 
0x002c29bb <+0951> mov %edx,0x14(%esp) 
0x002c29bf <+0955> mov %eax,0xc(%esp) 
0x002c29c3 <+0959> mov %esi,0x8(%esp) 
0x002c29c7 <+0963> mov %ecx,0x4(%esp) 
0x002c29cb <+0967> mov -0x18(%ebp),%eax 
0x002c29ce <+0970> mov %eax,(%esp) 
0x002c29d1 <+0973> movl $0x641,0x10(%esp) 
0x002c29d9 <+0981> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c29de <+0986> mov 0x699476(%edi),%eax 
0x002c29e4 <+0992> mov 0x68db72(%edi),%ecx 
0x002c29ea <+0998> mov %ecx,0x4(%esp) 
0x002c29ee <+1002> mov %eax,(%esp) 
0x002c29f1 <+1005> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c29f6 <+1010> mov 0x68df92(%edi),%ecx 
0x002c29fc <+1016> mov %eax,0x8(%esp) 
0x002c2a00 <+1020> mov %ecx,0x4(%esp) 
0x002c2a04 <+1024> mov -0x10(%ebp),%esi 
0x002c2a07 <+1027> mov %esi,(%esp) 
0x002c2a0a <+1030> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c2a0f <+1035> mov 0x6d0fbe(%edi),%ebx 
0x002c2a15 <+1041> test %al,%al 
0x002c2a17 <+1043> je  0x2c2a2c <UIApplicationMain+1064> 
0x002c2a19 <+1045> mov 0x68dbb6(%edi),%eax 
0x002c2a1f <+1051> mov %ebx,0x8(%esp) 
0x002c2a23 <+1055> mov %eax,0x4(%esp) 
0x002c2a27 <+1059> mov %ebx,(%esp) 
0x002c2a2a <+1062> jmp 0x2c2a69 <UIApplicationMain+1125> 
0x002c2a2c <+1064> mov 0x68dc0a(%edi),%eax 
0x002c2a32 <+1070> mov %eax,0x4(%esp) 
0x002c2a36 <+1074> mov %esi,(%esp) 
0x002c2a39 <+1077> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c2a3e <+1082> mov 0x68dcba(%edi),%ecx 
0x002c2a44 <+1088> mov %ecx,0x4(%esp) 
0x002c2a48 <+1092> mov %eax,(%esp) 
0x002c2a4b <+1095> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c2a50 <+1100> mov 0x68df96(%edi),%ecx 
0x002c2a56 <+1106> mov %eax,0x8(%esp) 
0x002c2a5a <+1110> mov %ecx,0x4(%esp) 
0x002c2a5e <+1114> mov %ebx,(%esp) 
0x002c2a61 <+1117> movl $0x1,0xc(%esp) 
0x002c2a69 <+1125> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c2a6e <+1130> mov 0x68db22(%edi),%eax 
0x002c2a74 <+1136> mov %eax,0x4(%esp) 
0x002c2a78 <+1140> mov -0x14(%ebp),%eax 
0x002c2a7b <+1143> mov %eax,(%esp) 
0x002c2a7e <+1146> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c2a83 <+1151> mov 0x6d0fbe(%edi),%eax 
0x002c2a89 <+1157> mov 0x68df9a(%edi),%ecx 
0x002c2a8f <+1163> mov %ecx,0x4(%esp) 
0x002c2a93 <+1167> mov %eax,(%esp) 
0x002c2a96 <+1170> call 0x75d8b2 <dyld_stub_objc_msgSend> 
0x002c2a9b <+1175> xor %eax,%eax 
0x002c2a9d <+1177> add $0x2c,%esp 
0x002c2aa0 <+1180> pop %esi 
0x002c2aa1 <+1181> pop %edi 
0x002c2aa2 <+1182> pop %ebx 
0x002c2aa3 <+1183> pop %ebp 
0x002c2aa4 <+1184> ret  
+1

к сожалению, это б acktrace не очень помогает. Нам понадобится код, который вызывает проблемы. –

ответ

0

Это, вероятно, является результатом неперехваченного исключения. Вы должны попытаться использовать одно из следующих действий, чтобы отслеживать проблемы вниз:

  1. анализ источника, который был выполняющийся близко к провалу
  2. источник отладчика (установить его разорвать на исключение бросков)
  3. статические проверки, как Coverity статического анализ, Clang статический анализатор, или просто провернуть предупреждения компилятора
  4. динамические проверки, как электрический забор, Кли или valgrind (Helgrind/MemCheck)
+0

Фактическая ошибка происходит в заявлении Autoreleasepool. Программа никогда не выполняется за ее пределами. –

+0

Добавить контрольную точку исключения в навигаторе точки останова Xcode 4. Я соглашусь, что он нарушает ваш код, а не в main.m. –

+0

Марк, я пошел в навигатор точки останова и выбрал «break on all exceptions». Линия, в которой остановилась точка останова, была следующей: int retVal = UIApplicationMain (argc, argv, nil, NSStringFromClass ([ProjectFiveAppDelegate class])); –