如果程序运行过程中发生了内存泄漏,会被内核强行终止,提示“段错误(吐核)”,内存的状态将保存在core文件中,方便进一步分析
Linux缺省不会生成core文件,需要修改系统参数
调试core文件步骤如下
- 用 ulimit -a查看当前用户的资源限制参数
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3794 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 4096 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 3794 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
- ulimit -c unlimited把core file size修改为ulimited
ulimit 选项 值 ulimit -c unlimited
- 运行程序,产生core文件
- 运行gdb程序
gdb 程序名 core文件名
- 查看函数调用栈
bt