GDB之coredump的学习
2016-03-19 20:45
369 查看
在Linux环境下运行程序的时候有的时候会出现一些问题,这个时候就可以使用GDB工具进行调试,以下是公司实习期间学习GDB的一些总结。
1、GDB的简介
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
一般来说,GDB主要完成以下四个方面的功能:
(1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
(2)可让被调试的程序在你所指定的调试的断点处挺住。
(3)当程序被停住时,可以检查此时你的程序中所发生的事。
(4)动态的改变你程序的执行环境。
2、GDB的常用命令
(1)bt,查看栈调用信息;bt full查看详细栈调用信息。
(2)frame n ,跳转到指定的栈n
(3)up/down,栈调用上/下移一个函数调用
(4)print,打印命令,简写p
print var :打印变量的值
print &var ;打印变量的地址
print *address :打印地址的数据值
(5)list ,简写l,列出源码信息
(6)info args ,查看函数参数信息
(7)info locals ,查看函数中局部变量的信息
(8)info register ,查看cpu寄存器的信息
3、coredump的介绍
通常情况下coredump包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件(core文件)。
设置core文件大小非0,两种方式
1.
ulimit –csize
2.
调用setrlimit()在代码中设置
设置corepattern
echo /nfs/coredump/core-%e-%p-%s-%t>
/proc/sys/kernel/core_pattern
以下是参数列表:
%p- pid
%u - 当前uid
%g - 当前gid
%s - 导致产生core的信号
%t -core文件生成时的unix时间
%h - 主机名
%e - 可执行文件名
4、如果系统中没有安装GDB或者不能生成coredump,可以通过在代码中添加如下代码产生coredump:
1、GDB的简介
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
一般来说,GDB主要完成以下四个方面的功能:
(1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
(2)可让被调试的程序在你所指定的调试的断点处挺住。
(3)当程序被停住时,可以检查此时你的程序中所发生的事。
(4)动态的改变你程序的执行环境。
2、GDB的常用命令
(1)bt,查看栈调用信息;bt full查看详细栈调用信息。
(2)frame n ,跳转到指定的栈n
(3)up/down,栈调用上/下移一个函数调用
(4)print,打印命令,简写p
print var :打印变量的值
print &var ;打印变量的地址
print *address :打印地址的数据值
(5)list ,简写l,列出源码信息
(6)info args ,查看函数参数信息
(7)info locals ,查看函数中局部变量的信息
(8)info register ,查看cpu寄存器的信息
3、coredump的介绍
通常情况下coredump包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件(core文件)。
设置core文件大小非0,两种方式
1.
ulimit –csize
2.
调用setrlimit()在代码中设置
设置corepattern
echo /nfs/coredump/core-%e-%p-%s-%t>
/proc/sys/kernel/core_pattern
以下是参数列表:
%p- pid
%u - 当前uid
%g - 当前gid
%s - 导致产生core的信号
%t -core文件生成时的unix时间
%h - 主机名
%e - 可执行文件名
4、如果系统中没有安装GDB或者不能生成coredump,可以通过在代码中添加如下代码产生coredump:
#include <sys/time.h> #include <sys/resource.h> struct rlimit rlim; rlim.rlim_cur =RLIM_INFINITY; rlim.rlim_max=RLIM_INFINITY; setrlimit(RLIMIT_CORE,&rlim);
相关文章推荐
- 【一周读书】年轻人你可别哭啊
- 优化MySchool总结习题
- eclipse 添加resources 目录
- Linux ./configure --prefix 命令是什么意思?
- HDOJ-2069 Coin Change(母函数)
- LeetCode108—Convert Sorted Array to Binary Search Tree
- Struts2中jsp前台传值到action后台的三种方式 <转载>属性加载,模型加载
- ffmpeg参数中文详细解释
- java中的常用类、Date和SimpleDateFormat类表示时间、java中基本类型和包装之间的转换
- 第四周项目5递归求阶乘
- 记codeforces两题
- Hibernate逍遥游记-第2章-使用hibernate.properties
- debian ubuntu linux系好用的包管理工具 aptitude
- 输入一个多项式F(X) 计算出(F(X))^P
- 简单谈谈C++中的引用与指针
- 关于surf显示立体图,可视化分析数据
- 初识NuGet - 概念, 安装和使用
- jdk环境变量配置
- Ajax and php 2.5
- Android四大组件之Service工作原理