我想知道我的程序是否正在访问NULL指针或过时的内存.
回溯看起来像这样:
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x2b0fa4c8 (LWP 1333)] 0x299a6ad4 in pthread_mutex_lock () from /lib/libpthread.so.0 (gdb) bt #0 0x299a6ad4 in pthread_mutex_lock () from /lib/libpthread.so.0 #1 0x0058e900 in ?? ()
caf*_*caf 62
使用GDB 7及更高版本,您可以检查$_siginfo信号发生时填充的结构,并确定错误地址:
(gdb) p $_siginfo._sifields._sigfault.si_addr
Run Code Online (Sandbox Code Playgroud)
如果它显示(void *) 0x0(或一个小数字),那么你有一个NULL指针取消引用.