Używam google-breakpad na aplikacji iOS, ale stack trace w pliku dmp jest na tyle krótki że nic z niego nie wynika.
W Xcode stack trace jest sporo dłuższy. Robię to w takich krokach:
- Wymuszam crash.
- dump_syms -a i386 -g NazwaAplikacji.app.dSYM NazwaAplikacji (mówię o tym pliku w Objects-normal/i386) > NazwaAplikacji\ i386.breakpad
- crash_report -S NazwaAplikacji\ i386.breakpad plikdmp > plikwynikowy.txt
To jest z Xcode:
Thread 0:
#0 0x0209d952 in __pthread_kill ()
#1 0x02061167 in pthread_kill ()
#2 0x01dd09c9 in abort ()
#3 0x01d9b53b in __assert_rtn ()
#4 0x0000930a in CppCrashClass::crash() at /Users/user/TestBreakpad/TestBreakpad/CppCrashClass.cpp:14
#5 0x00002654 in -[ViewController makeCrash] at /Users/user/TestBreakpad/TestBreakpad/ViewController.mm:40
#6 0x000025cd in -[ViewController crashTouchDown:] at /Users/user/TestBreakpad/TestBreakpad/ViewController.mm:35
#7 0x015ee880 in -[NSObject performSelector:withObject:withObject:] ()
Thread 1:
#0 0x0209e992 in kevent64 ()
#1 0x01d23f36 in _dispatch_mgr_invoke ()
#2 0x01d23c72 in _dispatch_mgr_thread ()
Thread 2:
#0 0x0209e046 in __workq_kernreturn ()
#1 0x02061dcf in _pthread_wqthread ()
a to breakpad:
Date: 1900-01-00 04:15:18 GMT
Operating system: iOS (10.9.4 13E28)
Architecture: x86
Crash reason: EXC_SOFTWARE / SIGABRT
Crash address: 0x209d952
Thread 0 (crashed)
0 libsystem_kernel.dyl 0x0209d952 __pthread_kill + 0xa
1 libsystem_sim_c.dyli 0x01dd09c8 abort + 0x7e
Thread 1
0 libsystem_kernel.dyl 0x0209e992 kevent64 + 0xa
1 libdispatch.dylib 0x01d23c71 _dispatch_mgr_thread + 0x3b
2
Thread 2
0 libsystem_kernel.dyl 0x0209e046 __workq_kernreturn + 0xa
1 libsystem_pthread.dy 0x02065ccd start_wqthread + 0x1d
Thread 3
0 libsystem_kernel.dyl 0x02098f7a _mach_msg_trap + 0xa
1 TestBreakpad 0x00016d1c google_breakpad::ExceptionHandler::WaitForMessage(void*) + 0x47 (exception_handler.cc:487)
2
3 libsystem_pthread.dy 0x020605fa _pthread_body + 0x8f
4 libsystem_pthread.dy 0x02060484 _pthread_start + 0x81
5 libsystem_pthread.dy 0x02065cf1 thread_start + 0x21
Thread 0:
eip = 0x0209d952 esp = 0xbfffd87c ebp = 0xbfffd898 ebx = 0x000356e6
esi = 0x00000006 edi = 0x020671a8 eax = 0x00000000 ecx = 0xbfffd87c
edx = 0x0209d952 efl = 0x00000286
Dlaczego thread 0 z breakpada jest taki krótki?