1,gcc -g test.c -o test                       -- 编译时需要加入 -g参数

2,ulimit -c unlimited     设置core文件无限大小;我的开发环境不设置这个,则无core文件生成

ulimit -c 0 可关闭 core文件产生

3,运行./test 生成core文件(会在程序运行的目录下生成)     --有些linux系统是生成 core.xxx    (xxx就是你执行的程序的pid)

4,调试 gdb ./test core

5,使用 bt 指令查看具体段错误位置

(gdb) bt
#0  malloc_consolidate (av=av@entry=0xb7639420 <main_arena>) at malloc.c:4159
#1  0xb7500a09 in _int_malloc (av=av@entry=0xb7639420 <main_arena>, bytes=bytes@entry=65548)at malloc.c:3425
#2  0xb75029d8 in __GI___libc_malloc (bytes=65548) at malloc.c:2893
#3  0x0804c39d in ?? ()
#4  0x08052cb3 in ?? ()
#5  0x08052998 in ?? ()
#6  0x0805dc75 in ?? ()
#7  0x0805d54c in ?? ()
#8  0x0805d402 in ?? ()
#9  0x08059ac6 in ?? ()
#10 0x080578b5 in ?? ()
#11 0x08057d81 in ?? ()
#12 0x0805860c in ?? ()
#13 0x0804a689 in ?? ()
#14 0xb74a5af3 in __libc_start_main (main=0x804a5dd, argc=1, argv=0xbfa92a34, init=0x8062b50, fini=0x8062bc0, rtld_fini=0xb77d9300 <_dl_fini>, stack_end=0xbfa92a2c) at libc-start.c:287
#15 0x0804a501 in ?? ()

6,frame 4 (对应的数字) 查看对应具体某个位置相关信息

7,更改core dump生成路径

因为core dump默认会生成在程序的工作目录,但是有些程序存在切换目录的情况,导致core dump生成的路径没有规律,

所以最好是自己建立一个文件夹,存放生成的core文件。

我建立一个 /data/coredump 文件夹,在根目录data里的coredump文件夹。

调用如下命令

echo /data/coredump/core.%e.%p> /proc/sys/kernel/core_pattern

将更改core文件生成路径,自动放在这个/data/coredump文件夹里。

%e表示程序名, %p表示进程id

linux c 崩溃调试方法相关推荐

  1. [Linux]core文件调试方法

    来源: shaovey的专栏 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行 ...

  2. linux下gdb调试方法和技巧详解

    linux下gdb调试方法和技巧整理 简介 UNIX或者UNIX-like下调试工具 启动gdb # 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序 gdb ./typeid ...

  3. linux应用程序调试方法,Linux应用程序使用写文件调试程序的方法

    Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下. 通常,我们在调试程序的都会使用printf. 在Android中,我们会去使用log ...

  4. Linux应用程序调试方法

    1.概述     可应用与嵌入式的操作系统有Linux.VxWorks等,VxWorks的调试较简单,因为没有虚拟内存的限制,所以支持直接修改内存数据,且支持符号表,因此在shell中可以直接数据全局 ...

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

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

  6. linux设备驱动程序调试方法,Linux设备驱动程序学习(2)-调试技术

    Linux设备驱动程序学习(2)-调试技术 Linux设备驱动程序学习(2)-调试技术 今天进入<Linux设备驱动程序(第3版)>第四章调试技术的学习. 一.内核中的调试支持 在前面已经 ...

  7. linux小米3调试方法,小米 MI3 开启USB调试模式

    我们要将小米 MI3与电脑进行连接,就必须要打开小米 MI3系统的调试模式,不同的系统版本打开调试模式的方法有所不同,在这里我们就谈谈小米 MI3各种系统版本打开USB调试模式的方法. 1.针对And ...

  8. linux下gdb调试方法与技巧整理

    目录 一.gdb简介 二.gdb使用流程 1.启动gdb 2.查看源码 3.运行程序 4.设置断点 5.单步执行 6.查看变量 7.退出gdb 三.gdb基本使用命令 1.运行命令 2.设置断点 3. ...

  9. linux网卡phy地址修改,【基础技能】Linux PHY驱动调试方法

    https://gitee.com/lee790608/linuxPhyDriver STEP1 准备硬件环境 1. 开发环境,可以修改内核代码,编译 2. 硬件开发板,可以进入系统调试,可以传送代码 ...

最新文章

  1. 再谈PowerPoint 2010导出幻灯片为图片
  2. iOS学习之Runtime(二)
  3. 初探swift语言的学习笔记十一(performSelector)
  4. Spring Boot中Spring data注解的使用
  5. JSR303常见参数
  6. 出现 java.lang.NullPointerException 的几种原因、可能情况
  7. Python_Socket实现简单的ssh/ftp
  8. Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
  9. 查询聊天好友IP地址(自用)
  10. 【Linux中基于docker安装oracle及Oracle密码过期修改】
  11. CC1101接口库在STM32上的移植
  12. 金仓数据库KingbaseES中 数据库实例命令
  13. 新榜微信文章抓取客户端(APSpider)
  14. 用PROC FCMP创建函数
  15. 澳门大学计算机qs排名,澳门大学世界QS排名
  16. java里面获取map的key和value的方法
  17. 手机开热点但是电脑一直连接不上_iPhone手机热点明明打开了,可是电脑就是连不上怎么办?...
  18. Windows11 出现桌面管理器dwm.exe占用内存过高的解决方法
  19. python教程贪吃蛇_python实现贪吃蛇小游戏
  20. YOLOv5(Windows)使用教程

热门文章

  1. Linux_RHEL7_LDAP、Autofs服务
  2. 专家谈半导体产业前景 并购热还会继续
  3. c# 二进制或算法实现枚举的HasFlag函数
  4. jquery文件上传插件|进度条
  5. 完美应用 极通EWEBS 新版新秀
  6. yii2 nginx去掉index.php?r=
  7. VS2013 越来越慢
  8. 27.Silverlight二维旋转+平面渐变+动画,模拟雷达扫描图之基本框架
  9. springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)
  10. JS获取当前对象大小以及屏幕分辨率等...