如何检查哪个线程崩溃了?

逆向工程 数据库
2021-06-26 03:15:33

鉴于我已经通过 打开核心文件lldb,我如何检查哪个线程崩溃了?

$ lldb -c core.45583 -o 'bt all' | grep -A2 'thread #'
* thread #1, stop reason = signal SIGSTOP
  * frame #0: 0x00007fffc6b7641a libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fffc6b75867 libsystem_kernel.dylib`mach_msg + 55
--
  thread #2, stop reason = signal SIGSTOP
    frame #0: 0x00007fffc6c65214 libsystem_pthread.dylib`start_wqthread
--
  thread #3, stop reason = signal SIGSTOP
    frame #0: 0x00007fffc6b7641a libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fffc6b75867 libsystem_kernel.dylib`mach_msg + 55
--
  thread #4, stop reason = signal SIGSTOP
    frame #0: 0x00007fffc6b7dc12 libsystem_kernel.dylib`__pselect + 10
    frame #1: 0x00007fffc6b7a815 libsystem_kernel.dylib`pselect$1050 + 82
--
  thread #5, stop reason = signal SIGSTOP
    frame #0: 0x00007fffc6bd368b libsystem_malloc.dylib`get_tiny_previous_free_msize + 59
    frame #1: 0x00007fffc6be83b6 libsystem_malloc.dylib`tiny_free_no_lock + 80
...
  thread #19, stop reason = signal SIGSTOP
    frame #0: 0x00007fffc6163b69 libobjc.A.dylib`objc_msgSend + 41
    frame #1: 0x00007fffb0d002a2 CFNetwork`HTTPResponseMessage::setResponseURL(__CFURL const*, unsigned char) + 66

似乎所有线程都有SIGSTOP.

1个回答

看起来它应该是那个, mach_msg_trap但看起来你需要做一些十六进制转储来恢复真正的调用堆栈......