现象:
程序死的时候出现屏幕打印如下:
Program received signal SIGSEGV, Segmentation fault.
定位:
1、bt,打印当前调用栈。如果不是踩了栈的内存,那么这一个命令可以看出死在哪里。
2、如果bt打印消息如下:0x00000000 in ?? ()
那么基本可以确定是栈被踩了。
栈被踩一般而言是局部变量溢出导致。
3、可以看看黑匣子。黑匣子里面应该显示错误原因:Process is exceptional
在初始化阶段可以在黑匣子里面搜索Exc System information,可以看到是在哪个阶段被踩。
4、栈被踩时,无法确认何时被踩,那么只有一步步断点,打印bt,如果看看能否打印出调用栈。
当无法打印出时,那么就可以确认已经被踩了。这样一步步确认问题发生区间,可以定位出详细被踩点。