core文件的调试

1、什么是core文件?

Core dump 文件是指在程序崩溃或异常结束时,操作系统将程序的内存信息寄存器状态堆栈信息等保存到文件中以便进行调试和分析的文件。

内存信息:分为栈内存(Stack Memory)和堆内存(Heap Memory)

寄存器状态:常见的寄存器包括程序计数器(PC)、堆栈指针(SP)、基址寄存器(Base Pointer)、索引寄存器

堆栈信息:堆栈信息特指栈内存的使用情况,包括局部变量、函数调用的参数、返回地址等

 

2、core文件怎么产生的?

1°  程序发生段错误:

① 访问空指针或者野指针; ② 访问系统保护的内存地址(内核空间地址);③访问只读内存地址;④ 栈溢出(函数无限循环递归);⑤数组越界;⑥ 除零操作;⑦ 访问已经释放的指针;

2°  命令 ulimit -c unlimited,将 core dump 文件的大小限制设置为无限制;

3°  core文件生成位置默认为当前工作目录;

 

3、core文件如何调试?

1°  通过命令gdb  ./a.out  core.xxxx 进入core文件的gdb;(通过gdb -c core.xxx 进入gdb的话,还需要在gdb中输入file ./a.out 读取符号信息,否则bt显示双问号??)

2°  查看程序崩溃时的堆栈信息:

(gdb) bt

查看程序崩溃时的变量值:

(gdb) p

查看程序崩溃时的寄存器状态:

(gdb) info registers

查看程序崩溃时的汇编代码:

(gdb) disassemble

 

 

linux:core文件的产生和调试 - 简书 (jianshu.com)

Linux 中 core dump 文件的作用和使用方法-阿里云开发者社区 (aliyun.com)

段错误详解 - boldness2012 - 博客园 (cnblogs.com)

posted on 2024-05-10 22:02  轩邈、  阅读(26)  评论(0编辑  收藏  举报

导航