gdb调试复习整理及coredump的设置与解析

来源:互联网 发布:网络直销公司排名 编辑:程序博客网 时间:2024/05/17 07:06

一.gdb功能

1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)

3.当程序被停住时,可以检查此时你的程序中所发生的事。

4.动态的改变你程序的执行环境。   



注:编译时需要添加-ggdb3参数

二.gdb调试常用指令

a).运行gdb

  1.gdb binary file //运行可执行程序

  2.gdb attach pid //运行进程id

b).设置断点

  1.b fun_name(函数名)

  2.b file_name.c:xxx(文件对应行)

  3.b x(当前文件行号)

c).查看断点

  1.i b

d).其他指令

  1.r   运行程序直到遇到断点 如果没有就执行至结束

  2.c   继续执行程序  

  3.d break n(断点序号) 删除断点

  4.n    单步调试

  5.p  variable   查看变量值

    x按十六进制格式显示变量。

    d按十进制格式显示变量。

    t按二进制格式显示变量。

    c按字符格式显示变量。

    f按浮点数格式显示变量。//例:p/x variable

  6.finish 结束当前函数

  7.q 退出

三.coredump

   通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个core文件。


a).coredump的设置  

  1).在终端中输入ulimit -c如果结果为0,说明当程序崩溃时,系统并不能生成core dump

  2)使用ulimit -c unlimited命令,开启core dump功能,并且不限制生成core dump文件的大小。如果需要限制,加数字限制即可。ulimit - c1024

  3)默认情况下,core dump生成的文件名为core.xxx而且就在程序当前目录下

  4)通过修改/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件格式。例如:将所有的core文件生成到/corefile目录下,文件名的格式为core-命令名-pid-时间戳. echo "/corefile/core-%e-%p-%t" >/proc/sys/kernel/core_pattern

b).coredump的解析方法

  1)gdb binnary_file core.XXX

0 0