首页 新闻 赞助 找找看

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

0
悬赏园豆:5 [已解决问题] 解决于 2022-01-16 17:51

运行的程序是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机器黑屏重启的具体原因呢?

ChrisZZ的主页 ChrisZZ | 初学一级 | 园豆:27
提问于:2019-05-05 22:52
< >
分享
最佳答案
0

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

ChrisZZ | 初学一级 |园豆:27 | 2022-01-16 17:51
其他回答(1)
0

机器重启和这个异常应该不是直接相关的问题,你可以抓取下终端看下
参考 https://stackoverflow.com/questions/2350489/how-to-catch-segmentation-fault-in-linux

收获园豆:5
2012 | 园豆:21228 (高人七级) | 2019-05-06 08:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册