1、生成core dump文件的方法:

$  ulimit -c //查看是否为0

如果为0

$   ulimit -c unlimited

这样在程序崩溃以后会在当前目录生成一个core.xxxx的文件

2、调试core dump文件

生成了core.xxx文件以后

$  gdb ./应用程序  core.xxxx

就会恢复现场到你的程序崩溃的那一刻

(gdb)bt          //这个命令会列出程序崩溃时的堆栈信息,一层一层会有标号  #0  #1  #2 .......

如果你要查看某一层的信息,你需要在切换当前的栈,一般来说,程序停止时,最顶层的栈就是当前栈,如果你要查看栈下面层的详细信息,首先要做的是切换到你想看的栈

(gdb)f  N    //N是你想要切换的栈的标号,达到后可以用  ‘p  变量’  查看变量的值,以查找异常出现的原因

info args
        打印出当前函数的参数名及其值。
    
     info locals
        打印出当前函数中所有局部变量及其值。
       
     info catch
        打印出当前的函数中的异常处理信息。

3、gdb调试命令

l  列出此刻运行到代码行的函数的上下文代码

b  设置断点

r  开始运行程序

s  单步调试,进入函数

n  单步,不进入下一层函数

n  k(一个数字) 这样是相当于输入了k次n,也就是走了k步

c  继续运行程序(一般是跑到断点后,跟了几步,输入c继续往下一个断点跑)

[enter]  回车键默认执行上一次的命令

finish     执行完当前函数返回到调用他的函数,例如单步执行如果进入到了某函数,但你又想退出该函数

u(until) 制定程序直到退出当前的循环体,输入u自动执行完全部的循环

break 34 if  var=12     //设置条件断点,当var等于12的时候就在34行设置断点watch i != 10      //监控某一个条件,然后设置断点,如果i不等于10的时候,就设置断点

break  func      //为某一个函数设置断点

break  filename:N      //在某一个文件的第N行设置断点

info breakpoints         显示所有的断点的信息

delete N          //删除标号为N的断点

delete        删除所有的断点

clear  N    //清楚N上面的所有的断点

p    var     打印变量var的值

//打印字符串的时候,有长度限制,想打印完整的长字符串,通过命令set print element 0就可以了

p   /x var     以16进制显示var的值

x 16进制

d 10进制

t   二进制

c   按字符格式显示变量

f    按浮点数

print *a@10         //如果a是一个数组,这样显示数据的10个元素的值

print   var=10       //修改运行时变量的值

whatis  var          //显示一个变量的类型

ptype var           //更详细的方式显示变量var的类型,会打印出var的结构定义

4、编译的时候要加入-g选项,才可以对程序进行跟踪

5、gdb调试程序的时候打印变量值会出现<value optimized out> 情况,可以在gcc编译的时候加上 -O0参数项,意思是不进行编译优化,调试的时候就会顺畅了,运行流程不会跳来跳去的,发布项目的时候记得不要在使用 -O0参数项,gcc 默认编译或加上-O2优化编译会提高程序运行速度

gdb调试常用实用命令和core dump文件的生成的更多相关文章

  1. gdb调试常用实用命令和core dump文件的生成(转)

    1.生成core dump文件的方法: $  ulimit -c //查看是否为0 如果为0 $   ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxxx的 ...

  2. core dump文件的生成

    #include <stdio.h> int main(int argc, char *argv[]) { char * p = "abcdefg"; p[] = '; ...

  3. GDB调试——常用的命令

    首先说明一点,如果我们要使用GDB来调试我们的C/C++程序时,在使用GCC编译程序时,应该带上 –g 参数, 它负责生成 与GDB相关的调试信息: 1.如何对一个文件启动GDB调试? 方法一: 命令 ...

  4. ZT 用gdb调试core dump文件

    用gdb调试core dump文件 转载自:http://blog.chinaunix.net/u2/83905/showart_2134570.html 在Unix系统下,应用程序崩溃,一般会产生c ...

  5. gdb调试常用命令

    gdb 调试常用命令 gcc -g mian.c -o main.out -o (定制生成的可执行文件的名称,缺省时为a.out) -g 使gdb可调试,在编译的时候,产生调试信息 gdb main. ...

  6. 使用GDB 追踪依赖poco的so程序,core dump文件分析.

    前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...

  7. 【Z】段错误Segment Fault定位,即core dump文件与gdb定位

    使用C++开发系统有时会出现段错误,即Segment Fault.此类错误程序直接崩溃,通常没有任何有用信息输出,很难定位bug,因而无从解决问题.今天我们介绍core dump文件,并使用gdb进行 ...

  8. Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 (需要在运行时生成core dump文件,QMAKE_CC += -g)

    记录一下 Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 需要在运行时生成core dump文件 首先在pro结尾里加入 QMAKE_CC += -g QMAKE_CXX += - ...

  9. linux下生成core dump文件方法及设置【转】

    转自:http://blog.csdn.net/mrjy1475726263/article/details/44116289 源自:http://andyniu.iteye.com/blog/196 ...

随机推荐

  1. K近邻模型(k-NN)

    原理 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻 ...

  2. 为阿里云站点部署免费 HTTPS

    本文记录了部署在阿里云的站点,在申请了免费的 SSL 证书后如何正确的部署到站点上,让站点支持 HTTPS 访问. 阿里云引入了沃通作为 CA 证书供应商,并开放了免费 SSL 申请的页面,之前一直想 ...

  3. 操作系统开发系列—1.HelloWorld ●

    org 07c00h ;伪指令,告诉编译器程序会被加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ;调用显示字符串例程 jmp $ ;无限 ...

  4. margin css的外边距

    h2{margin:10px 0;} div{margin:20px 0;} ...... <h2>这是一个标题</h2> <div> <h2>这是又一 ...

  5. Automysqlbackup: WARNING: Turning off multicore support, since pigz isn’t there.

    在使用Automysqlbackup备份MySQL时,有时候你会在邮件里面看见"WARNING: Turning off multicore support, since pigz isn' ...

  6. mysql 5.5.32 多实例环境的启动问题

      [root@localhost scripts]# /bin/sh mysql_install_db --user=mysql --dasedir=/application/mysql --dat ...

  7. MongoDB学习笔记~索引提高查询效率

    回到目录 索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoD ...

  8. AP是什么

    百度链接: AP---http://baike.baidu.com/link?url=_mC-Wkgl8j1_awpuicoZk3i4MWVcLaio1nm9XRt60F9QD4V_lJ-kE7J4C ...

  9. logback配置详解1

    一:根节点<configuration>包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文 ...

  10. 编译软件基础知识(1/2) via LinuxSir

    内容来自LinuxSir: 如果不出意外的话,会出现say.so => not found. 这时的./test是不能运行的.但至少说明程序运行时是需要这个库的.那为什么找不到这个库呢?那就让我 ...