linux c 崩溃调试方法
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 崩溃调试方法相关推荐
- [Linux]core文件调试方法
来源: shaovey的专栏 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行 ...
- linux下gdb调试方法和技巧详解
linux下gdb调试方法和技巧整理 简介 UNIX或者UNIX-like下调试工具 启动gdb # 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序 gdb ./typeid ...
- linux应用程序调试方法,Linux应用程序使用写文件调试程序的方法
Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下. 通常,我们在调试程序的都会使用printf. 在Android中,我们会去使用log ...
- Linux应用程序调试方法
1.概述 可应用与嵌入式的操作系统有Linux.VxWorks等,VxWorks的调试较简单,因为没有虚拟内存的限制,所以支持直接修改内存数据,且支持符号表,因此在shell中可以直接数据全局 ...
- 几种Linux段错误调试方法
一.产生段错误的原因 段错误就是指某一进程访问了不属于它权限范围的内存空间,比如:访问了不存在的内存,访问了受系统保护的内存,访问了只读的内存等.下面是一段会产生段错误的实例代码:main.c #in ...
- linux设备驱动程序调试方法,Linux设备驱动程序学习(2)-调试技术
Linux设备驱动程序学习(2)-调试技术 Linux设备驱动程序学习(2)-调试技术 今天进入<Linux设备驱动程序(第3版)>第四章调试技术的学习. 一.内核中的调试支持 在前面已经 ...
- linux小米3调试方法,小米 MI3 开启USB调试模式
我们要将小米 MI3与电脑进行连接,就必须要打开小米 MI3系统的调试模式,不同的系统版本打开调试模式的方法有所不同,在这里我们就谈谈小米 MI3各种系统版本打开USB调试模式的方法. 1.针对And ...
- linux下gdb调试方法与技巧整理
目录 一.gdb简介 二.gdb使用流程 1.启动gdb 2.查看源码 3.运行程序 4.设置断点 5.单步执行 6.查看变量 7.退出gdb 三.gdb基本使用命令 1.运行命令 2.设置断点 3. ...
- linux网卡phy地址修改,【基础技能】Linux PHY驱动调试方法
https://gitee.com/lee790608/linuxPhyDriver STEP1 准备硬件环境 1. 开发环境,可以修改内核代码,编译 2. 硬件开发板,可以进入系统调试,可以传送代码 ...
最新文章
- 再谈PowerPoint 2010导出幻灯片为图片
- iOS学习之Runtime(二)
- 初探swift语言的学习笔记十一(performSelector)
- Spring Boot中Spring data注解的使用
- JSR303常见参数
- 出现 java.lang.NullPointerException 的几种原因、可能情况
- Python_Socket实现简单的ssh/ftp
- Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
- 查询聊天好友IP地址(自用)
- 【Linux中基于docker安装oracle及Oracle密码过期修改】
- CC1101接口库在STM32上的移植
- 金仓数据库KingbaseES中 数据库实例命令
- 新榜微信文章抓取客户端(APSpider)
- 用PROC FCMP创建函数
- 澳门大学计算机qs排名,澳门大学世界QS排名
- java里面获取map的key和value的方法
- 手机开热点但是电脑一直连接不上_iPhone手机热点明明打开了,可是电脑就是连不上怎么办?...
- Windows11 出现桌面管理器dwm.exe占用内存过高的解决方法
- python教程贪吃蛇_python实现贪吃蛇小游戏
- YOLOv5(Windows)使用教程
热门文章
- Linux_RHEL7_LDAP、Autofs服务
- 专家谈半导体产业前景 并购热还会继续
- c# 二进制或算法实现枚举的HasFlag函数
- jquery文件上传插件|进度条
- 完美应用 极通EWEBS 新版新秀
- yii2 nginx去掉index.php?r=
- VS2013 越来越慢
- 27.Silverlight二维旋转+平面渐变+动画,模拟雷达扫描图之基本框架
- springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)
- JS获取当前对象大小以及屏幕分辨率等...