**

什么是Segmentation fault?

**

Segmentation fault就是段错误,一般指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。

什么是core dumped

操作系统把程序当掉时的内存内容 dump 出来(现在通常是写在一个叫 core 的 file 里面),让 我们或是 debugger 做为参考。这个动作就叫作 core dump。

使用core文件和gdb进行调试

1、在一些Linux版本下,默认是不产生core文件的,首先可以查看一下系统core文件的大小限制:

yrs@HP-Z820-Workstation:~/YOLO/darknet-master$ulimit -c

0

2、可以看到默认设置情况下,本机Linux环境下发生段错误时不会自动生成core文件,下面设置下core文件的大小限制(单位为KB):

yrs@HP-Z820-Workstation:~/YOLO/darknet-master$ulimit -c 1024

yrs@HP-Z820-Workstation:~/YOLO/darknet-master$ulimit -c

1024

3、运行程序,发生段错误生成core文件:

yrs@HP-Z820-Workstation:~/YOLO/darknet-master$./darknet classifier train cfg/mnist.data cfg/mnist.cfg

Learning Rate: 0.1, Momentum: 0.9, Decay: 0.0005

60000

Loaded: 0.170935 seconds

Segmentation fault (core dumped)

4、加载core文件,使用gdb工具进行调试:

yrs@HP-Z820-Workstation:~/YOLO/darknet-master$gdb ./darknet ./core

5、使用where命令查看函数调用情况

(gdb) where

#0 0x00007f15e52006dc in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1

#1 0x00007f15e52a436e in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1

#2 0x00007f15e536e5ef in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1

#3 0x00007f15e52a5791 in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1

#4 0x00007f15e51c8fca in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1

#5 0x00007f15e51caf2a in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1

#6 0x00007f15e5304f85 in cuMemcpyHtoD_v2 () from /usr/lib/x86_64-linux-gnu/libcuda.so.1

#7 0x00007f15f81eb42e in ?? () from /usr/local/cuda/lib64/libcudart.so.7.5

#8 0x00007f15f81cddb1 in ?? () from /usr/local/cuda/lib64/libcudart.so.7.5

#9 0x00007f15f81f19b8 in cudaMemcpy () from /usr/local/cuda/lib64/libcudart.so.7.5

#10 0x000000000040a68c in cuda_make_array ()

#11 0x000000000048a5f0 in forward_backward_network_gpu(network, float*, float*) ()

#12 0x000000000048a68f in train_network_datum_gpu ()

#13 0x000000000043c9fa in train_network ()

#14 0x000000000045ca79 in train_classifier ()

#15 0x0000000000460bea in run_classifier ()

#16 0x0000000000402d06 in main ()

6、使用q退出gdb

注:如果没有产生core文件,可能是ulimit设置的太小,尝试设置的大一些试试吧~

linux段错误core dumped,Linux下Segmentation fault(core dumped)简单调试方法相关推荐

  1. 嵌入式linux段错误,在嵌入式Linux上使用C Std Lib时出现异常的段错误

    通过一些研究后我可以看到,vivado是硬件开发IDE [因为它们提供了一个试用期 – 所以它是硬件开发,他们总是想要收费]. 如果您使用的是Xilinx的标准SDK板,则应该预先配置所有内容.否则, ...

  2. linux java 段错误的是,Linux下的段错误产生的原因及调试方法 转

    1楼 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个 ...

  3. linux段错误(Segmentation fault)调试方式

    我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的.实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于 ...

  4. Ubuntu--(8)段错误Segmentation fault (core dumped)

    段错误 指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保护的内存地址.访问了只读的内存地址等等情况,例如: 访问不存在的内存地址 #include<st ...

  5. 【Linux】调试常见的应用程序奔溃“Segmentation fault (core dumped)”

    文章目录 前言 一.确保产生core文件 二.利用core文件,调试确认terminated位置 前言 Linux程序开发者,日常遇到程序奔溃时,应该如何调试,如何寻找原因和解决呢?本文就介绍了遇到S ...

  6. Linux 段错误详解

    1 背景 笔者早年写过一篇:<可恶的"Segmentation faults"之初级总结篇>,网络转载甚多.多年下来,关于段错误的讨论依旧很热烈,该问题也还是很常见.所 ...

  7. 【ARM】程序快速定位segmentation fault core dumped错误

    1.应用场景 ARM开发过程中经常进程运行着出现段错误,这时候单纯靠加日志打log效率太低.使用gdb的话,由于APP进程太多,生成的core的文件特别大,而且gdb在arm板子也不好单步调试,不太友 ...

  8. Linux段错误-转

    Linux段错误 目录 1.什么是段错误? 2.为什么段错误这么"麻烦"? 3.编程中通常碰到段错误的地方有哪些? 4.如何发现程序中的段错误并处理掉? 正文 1.什么是段错误? ...

  9. 几种Linux段错误调试方法

    一.产生段错误的原因 段错误就是指某一进程访问了不属于它权限范围的内存空间,比如:访问了不存在的内存,访问了受系统保护的内存,访问了只读的内存等.下面是一段会产生段错误的实例代码:main.c #in ...

最新文章

  1. openSUSE中文输入的安装和设置
  2. 三次握手和四次挥手详细介绍
  3. @Value@PropertySource@ConfigurationProperties注解使用
  4. 《机器学习实战》-线性回归
  5. 后端技术:SpringBoot 中实现跨域的5种方式
  6. Quartz定时任务的基本搭建
  7. windows server 2008 r2 定时关机_电脑怎么定时关机 秒懂的Win10定时关机命令使用方法...
  8. 钉钉开放平台:内网穿透工具 - 服务器免费打造教程
  9. 区块链技术学习之-简单加密货币-高飞币
  10. 电子商务数据运营的五大应用
  11. 僵尸粉检测 php,微信新功能,一键检测你的手机卡不卡,还能查僵尸粉
  12. ORACLE有EXCEL中trend函数,EXCEL【TREND】函数,你知道如何使用吗?
  13. windows10序列号即将过期解决办法
  14. 使用Java解牛客网六一儿童节
  15. Hot and cold pages
  16. 2021.4.14 html学习第二天
  17. Chrome打开摄像头权限
  18. 【软件下载】换新电脑记录下下载的软件时所需地址
  19. pandas学习笔记1—categories与set_categories
  20. 怎么才能写出好的代码

热门文章

  1. mysql 重做日志_mysql redo log 重做日志
  2. python爬取58同城租房信息,用selenium爬取58同城租房信息(万级数据)
  3. 《中国企业家》杂志:柳传志走访旧金山
  4. app式成语_app式的词语,app的成语都有什么?
  5. mac 剪切移动文件
  6. Fiddler调式使用(一)深入研究[转载]
  7. java 孕周计算器_周期表孕期计算器
  8. 读书笔记:《吴军阅读与写作讲义》
  9. 解密阿里云大规模深度学习性能优化实践
  10. 逆水寒服务器怎么全维护,《逆水寒》2020年1月22日更新公告