linux下c++运行出现segmentation fault查看错误原因
segmentation fault的中文解释
所谓的段错误 就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表, 后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中 就保存着程序运行的代码段以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。一旦一个程序发生了越界访 问,cpu就会产生相应的异常保护,于是segmentation fault就出现了
查看原因
1、生成core文件。
# 查询core file size |
2、重新运行出错的程序,等待出现段错误,这个时候就会生成core文件
3、这里假设可执行程序为a.out,执行。即可查看出现段错误的大概位置。
gdb a.out your_core_path |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 个人随笔2020ooo-万能的小陈!
评论