建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
1035213fnlks2fx6defuh6.jpg 体验鲲鹏开发套件 汇聚鲲鹏领域技术专家大咖

五湖四海@银河护卫队

发帖: 93粉丝: 30

级别 : 版主

发消息 + 关注

发表于2020-4-22 21:54:49 435 1
直达本楼层的链接
楼主
显示全部楼层
[交流分享] C/C++代码编译后在arm上运行一段时间出现coredump问题初步定位思路

【问题描述】

C/C++源码通过gcc编译,运行一段时间出现coredump,报错类似如下错误

Process 9304 (hsrsd) of user 0 killed by SIGSEGV - dumping core 


【解决思路】

对于地址越界、内存使用方法不对等概率的问题较难直接定位core原因,可以在gcc编译的时候添加“堆栈保护”和“地址消毒”的编译选项;

添加方式如下,在makefile文件中的CFLAGS中增加如下内容

-fstack-protector-all -fsanitize=address -fsanitize=leak -fsanitize=undefined


【举例】

对C/C++程序添加编译选项后编译完成,运行报类似如下错误

test.cpp:112:65:  runtime error: index -1 out of bounds for type 'char [1024]'

则说明数组下标越界,test.cpp代码第112行中可能出现了 0-1 导致越界;


其他情况,如出现内存申请和释放不匹配的问题也可以通过此类方法定位;


举报
分享

分享文章到朋友圈

分享文章到微博

五湖四海@银河护卫队

发帖: 93粉丝: 30

级别 : 版主

发消息 + 关注

发表于2020-4-27 09:16:25
直达本楼层的链接
沙发
显示全部楼层

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册