linux GDB调试core文件

来源:互联网 发布:房地产端口可以退吗 编辑:程序博客网 时间:2024/05/17 06:28

1. 什么是core dump?

core dump说的是操作系统执行的一个动作,当某个进程因为一些原因意外终止(crash)的时候,操作系统会将这个进程当时的内存信息转储(dump)到磁盘上,产生的文件就是core文件了,一般会以core.xxx形式命名。


2. 那些信号能够引起core dump?

经常用到的主要有这几种:
SIGSEGV  建立CORE文件   段非法错误 
SIGILL   建立CORE文件   非法指令 
SIGTRAP  建立CORE文件   跟踪自陷 
SIGBUS   建立CORE文件   总线错误 
SIGFPE   建立CORE文件   浮点异常 
SIGIOT   建立CORE文件   执行I/O自陷

具体的那些信号能产生core,可以在终端执行命令“man 7 signal”查看。


3. 设置生成core文件的环境

ulimit -c :查看core文件的大小的限制
ulimit -c unlimited :设置core文件的大小为不限制


4. 调试core文件的相关命令

4.1 启动命令:gdb exe_name core_name

4.2 具体的调试命令:

backtrace :查看堆栈信息,可以简写成bt
where : 同bt
frame num :查看堆栈中第num个frame的信息,frame可以简写成f

focus num :查看堆栈中第num个frame的具体代码信息,focus可以简写成foc。

5.查看变量

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

f n n是一个从0开始的整数,是栈中的层编号。比如:frame 0,表示栈顶,frame 1,表示栈的第二层。

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

p locl 查看局部变量locl 的值

0 0