博客
关于我
linux下寻找段错误的方法
阅读量:792 次
发布时间:2023-02-03

本文共 805 字,大约阅读时间需要 2 分钟。

为了能够快速找到发生段错误的地方,记录以下两种方法。

 :https://www.cnblogs.com/jiangyibo/p/9507555.html 

 

代码:test.c

 

一、命令addr2line:  addr2line -e '可执行文件名'  'dmesg打印的地址'

  编译的时候一定要加“-g”  添加调试信息:gcc -g test.c

  生成的可执行文件a.out一运行就会报错:Segmentation fault

  调用命令dmesg ,可以查看系统启动信息,其中最新的一行信息应该是段错误的描述信息,如下,ip后的地址就是发生段错误的地址。

  

  然后调用命令"addr2line -e a.out 0x8043db"就会打印出发生错误的文件和行号:

  

 

二、core dumpe文件:程序崩溃时会保存程序运行时的内存信息

  先使用 ulimit -a 查看目前资源限制的设定:

  

  可查看到“core file size”的大小为0,我们设置成 200。

  然后再次 gcc -g test.c ,运行可执行文件a.out:

   

  ls可以看到当前目录下生成了“core”文件

  然后我们 gdb a.out:

  

  可以看到,一旦我们run了之后,程序就会停在发生段错误的地方。

  或者执行 gdb a.out core ,gdb会自动运行并停在发生段错误的地方。

 

  一般调用ulimit -c X 设置的文件大小都是临时有效,如果要设置永久有效,可以修改/etc/security/limits.conf 文件, 找到 * soft core 0,修改为* soft core unlimited保存,这样每次启动时都会去读取这个配置文件。

 

 

  

转载于:https://www.cnblogs.com/jiangyibo/p/8653720.html

你可能感兴趣的文章
Linux下的备份与恢复策略:全方位守护你的数据
查看>>
Linux下的多用户管理和认证:从入门到精通(附实例)
查看>>
Linux下的容器化技术:从入门到实践
查看>>
Linux下的文件权限与访问控制:守护你的数据宝藏
查看>>
Linux下的杀毒软件介绍
查看>>
Linux下的版本控制系统——Git:初学者指南
查看>>
Linux下的硬件管理与设备驱动全解析
查看>>
Linux下的系统安全加固与入侵检测全解析
查看>>
Linux下的系统监控与性能调优:从入门到精通
查看>>
Linux下的自动化任务与计划任务:让你的系统更智能
查看>>
Zookeeper、Dubbo面试题总结
查看>>