当某个assert()失败时,gdb会中断但不显示正在中止的线程。对于信号(如segfault),它可以正常工作。有没有一种简单的方法可以知道刚刚中止的线程是哪些? 特别地,在这里我正在使用Xcode。
你可以编写自己的assert宏,该宏发送SIGSEGV而不是SIGABRT。#define assert(check) do { if(!(check)) kill (getpid(), SIGSEGV); } while(0)