现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

SIGSEGV段错误问题定位方法

2019-10-31 22:37 工业·编程 ⁄ 共 374字 ⁄ 字号 暂无评论

现象:

  程序死的时候出现屏幕打印如下:

  Program received signal SIGSEGV, Segmentation fault.

定位:

  1、bt,打印当前调用栈。如果不是踩了栈的内存,那么这一个命令可以看出死在哪里。

  2、如果bt打印消息如下:0x00000000 in ?? ()

     那么基本可以确定是栈被踩了。

     栈被踩一般而言是局部变量溢出导致

  3、可以看看黑匣子。黑匣子里面应该显示错误原因:Process is exceptional

     在初始化阶段可以在黑匣子里面搜索Exc System information,可以看到是在哪个阶段被踩。

  4、栈被踩时,无法确认何时被踩,那么只有一步步断点,打印bt,如果看看能否打印出调用栈。

     当无法打印出时,那么就可以确认已经被踩了。这样一步步确认问题发生区间,可以定位出详细被踩点。

给我留言

留言无头像?