2014-05-17 32 views
12

Có báo cáo sự cố bên dưới, nhưng không biết tại sao nó sẽ xảy ra và cách khắc phục.Tai nạn trên __pthread_kill

SIGABRT Abort tại 0x000000019aa3258c

libsystem_kernel.dylib __pthread_kill

Thread : Crashed: com.apple.main-thread 
0 libsystem_kernel.dylib   0x000000019aa3258c __pthread_kill + 8 
1 libsystem_pthread.dylib  0x000000019aab516c pthread_kill + 104 
2 libsystem_c.dylib    0x000000019a9c6808 abort + 112 
3 libc++abi.dylib    0x0000000199bec994 __cxa_bad_cast 
4 libc++abi.dylib    0x0000000199c07184 std::__terminate(void (*)()) + 44 
5 libc++abi.dylib    0x0000000199c06d3c __cxa_rethrow + 144 
6 libobjc.A.dylib    0x000000019a3443a8 objc_exception_rethrow + 44 
7 CoreFoundation     0x000000018dd3d74c CFRunLoopRunSpecific + 576 
8 GraphicsServices    0x0000000193a21c0c GSEventRunModal + 168 
9 UIKit       0x0000000190e6efdc UIApplicationMain + 1156 
10 *************     0x00000001000a5c80 main (main.m:17) 
11 libdyld.dylib     0x000000019a937aa0 start + 4 
+2

Những gì bạn thấy là một ngoại lệ mục tiêu C bị ném. Ứng dụng của bạn không bắt được ứng dụng, vì vậy hệ điều hành đang chấm dứt ứng dụng của bạn. Bạn có thể bắt đầu bằng cách bật các điểm ngắt ngoại lệ của Objective-C và phá vỡ một ngoại lệ được ném trong trình gỡ lỗi. Sau đó chạy ứng dụng của bạn và làm cho ứng dụng đó xảy ra lần nữa. – user1118321

+0

Tôi nghĩ pthread_kill là kết quả của ngoại lệ không được giải quyết, không phải nguyên nhân. Như user1118321 đã nói, rất dễ dàng để tìm nguyên nhân gây ra điều này bằng cách thiết lập một điểm ngắt ngoại lệ. – sudo

+0

@ user1118321 Bất kỳ ý tưởng làm thế nào để bắt ngoại lệ nếu tôi không biết làm thế nào để tạo lại nó? – daidai

Trả lời

8

Để làm cho nó dễ dàng hơn để xem nơi các vụ tai nạn có nguồn gốc, thay đổi tập tin main.m của bạn như sau:

int main(int argc, char* argv[]) 
{ 
    @autoreleasepool 
    { 
     int returnValue; 
     @try 
     { 
      returnValue = UIApplicationMain(argc, argv, nil, 
       NSStringFromClass([MyAppDelegate class])); 
     } 
     @catch (NSException* exception) 
     { 
      LogError(@"Uncaught exception: %@, %@", [exception description], 
       [exception callStackSymbols]); 
      @throw exception; 
     } 
     return returnValue; 
    } 
} 

. . . hoặc như những người khác đã đề xuất, thiết lập một điểm ngắt ngoại lệ.

Nếu sự cố của bạn chỉ xảy ra "trong tự nhiên", bạn sẽ phải thay đổi lại các bản ghi sự cố. Các dịch vụ như Khúc côn cầu hoặc Chuyến bay thử nghiệm thực hiện việc này cho bạn hoặc có thể thực hiện thủ công theo cách this process.

Các vấn đề liên quan