炫意html5
最早CSS3和HTML5移动技术网站之一

Linux下C++代码产生段错误,特定机器上会导致重启,排查思路?

运行的程序是SNPE1.23版的C++例子程序,按其官方文档来操作的。

现有A、B两台ubuntu主机,都是16.04系统,编译和运行上述程序:

  • 如果都使用g++-5.4,则A机器运行出现segment fault,但只是在终端输出这一报错信息,并不会导致机器重启;B机器运行程序直接黑屏重启。
  • 如果都使用g++-4.9,则都能正常运行。
  • 如果使用g++-5.4,在B机器上随便写一个会导致semgentation fault的代码,并编译运行,并不会导致B机器黑屏重启:
#include <stdio.h>
#include <stdlib.h>
int main(){
int*a = (int*)malloc(sizeof(10)*sizeof(int));
int n = 100000000;
a[n] = 20;
return 0;
}

主要担心后续其他segmentation fault也导致B机器黑屏重启。并且,观察到的B黑屏重启是稳定的现象(基于前面所说SNPE官方样例代码)。有没有什么排查方法,能找到导致B机器黑屏重启的具体原因呢?

回答

解决方法是换了一台电脑,以及保持GCC版本为4.9。

炫意HTML5 » Linux下C++代码产生段错误,特定机器上会导致重启,排查思路?

Java基础教程Android基础教程