关注
segment fault 是段错误,通常在非法内存访问,读写的时候会报这个错误。 一、比较常见的错误情况如下 1:赋值操作(非法地址写) 2:数组越界 (非法地址读 或 写) 相当于执行了putchar(a[3]),a[3]是"\0",在内存中是00,也是个常见的非法内存访问 3:内存(字符串)拷贝 (非法地址读 或 写) 4:非法地址执行(栈溢出,任意地址执行时可能出现这种情况) 这条指令 == call 0xdeadbeef,0xdeadbeef 是个非法地址,所以会报段错误。 还有一些暂时想不起来的,不过原理也是非法内存访问和读写。 二、知道了错误的成因就可以知道怎么检测了。 1:printf 大法 最简单的往往是最常用的,printf一下地址,变量。 2:调试的方法 利用gdb, asan这些工具可以很快定位到segment fault的地址 是一个0地址写的seg fault 3:catchsegv 指令 是一个输出segfault 时寄存器的内容。 暂时想到这么多,写的东西也不是很深,其实段错误是很好检测的,因为一旦发生段错误,os就会请求中断或者发出信号来结束程序。要在编译时候检测,借助gcc+asan这种内存检查工具才可行,即便是asan也可能存在疏漏。windows下也有成熟独立的体系,原理相同就不多说了。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
![](https://static.nowcoder.com/fe/file/oss/icon_job.png)
点赞 评论 收藏
分享
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
1333025次浏览 18718人参与
# 非技术岗薪资爆料 #
53793次浏览 732人参与
# 不去互联网可以去金融科技 #
47807次浏览 508人参与
# 和牛牛一起刷题打卡 #
45704次浏览 3603人参与
# 产品每日一题 #
2055次浏览 100人参与
# 来聊聊你目前的求职进展 #
230458次浏览 2917人参与
# OPPO开奖 #
59415次浏览 856人参与
# 晒一晒我的offer #
4037451次浏览 60431人参与
# 硬件兄弟们 甩出你的华为奖状 #
38130次浏览 224人参与
# 写简历别走弯路 #
360876次浏览 4543人参与
# 软件开发2024笔面经 #
1572298次浏览 36096人参与
# 华子oc时间线 #
11567次浏览 60人参与
# 如果可以选,你最想从事什么工作 #
220707次浏览 3407人参与
# 互联网公司评价 #
106335次浏览 1379人参与
# 参加过提前批的机械人,你们还参加秋招么 #
16877次浏览 383人参与
# 我想象的工作vs实际工作 #
117411次浏览 1813人参与
# 百度工作体验 #
32229次浏览 317人参与
# 机械制造笔面经 #
12847次浏览 349人参与
# 24届软开秋招面试经验大赏 #
1241719次浏览 18685人参与
# 如何写一份好简历 #
342769次浏览 4763人参与
# 我的成功项目解析 #
102190次浏览 2845人参与
# 滴!实习打卡 #
293197次浏览 4301人参与