GDB(四):gdb coredump
来源:互联网 发布:mysql数据库表设计 编辑:程序博客网 时间:2024/05/20 10:53
1 coredump文件
core dump说的是操作系统执行的一个动作,当某个进程因为一些原因意外终止(crash)的时候(即一般都是在进程收到某个信号的时候),操作系统会将这个进程当时的内存信息转储(dump)到磁盘上。产生的文件就是core文件了,一般会以core.xxx形式命名。
针对特定的信号,应用程序可以写对应的信号处理函数。如果不指定,则采取默认的处理方式, 默认处理是coredump的信号如下:
3)SIGQUIT 4)SIGILL 6)SIGABRT 8)SIGFPE 11)SIGSEGV 7)SIGBUS 31)SIGSYS5)SIGTRAP 24)SIGXCPU 25)SIGXFSZ 29)SIGIOT
2 coredump文件的大小与生成路径
2.1 coredump文件的大小
ulimit -c 命令可查看coredump文件的大小,当值为0时,表示不生成coredump的文件。
ulimit -c filesize 命令可设置coredump文件的大小(单位KB),而ulimit -c unlimited 则表示coredump文件大小不受限制。
2.2 coredump文件的生成路径
cat /proc/sys/kernel/core_pattern 命令可查看coredump文件的生成路径。
<1>临时修改coredump文件的生成路径
echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
<2>永久修改coredump文件的生成路径
设置生成路径的参数列表:
%p - insert pid into filename 添加 pid
%u - insert current uid into filename 添加当前 uid
%g - insert current gid into filename 添加当前 gid
%s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号
%t - insert UNIX time that the coredump occurred into filename 添加 core 文件生成时的 unix 时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名
步骤1:在etc/sysctl.conf 配置文件添加一行:kernel.core_pattern = /corefile/core-%e-%p-%t步骤2:执行命令:sysctl -p
3 使用gdb生成coredump
如果在测试过程中遇到某个进程的CPU利用率过高或者卡死而需要去调试该进程时,可以利用gdb命令生成coredump文件,然后再去调试coredump文件来定位问题。
那么如何使用gdb生成coredump文件呢?其实步骤很简单:
1>. 安装好gdb,然后使用命令 'gdb'。(假设需要调试的进程号为 21509)
2>. 使用 ‘attach 21590’命令将gdb附加到进程21509上。
3>. 使用‘gcore core_name’命令生成coredump文件core_name。
4>. 使用‘detach’命令断开连接。
5>.使用‘q’命令退出gdb。
此时,在当前目录下就会产生一个名为core_name的coredump文件。下面就可以利用gdb工具来对该coredump文件进行调试了。
注:摘自互联网
0 0
- GDB(四):gdb coredump
- gdb coredump
- gdb coredump
- GDB(四):gdb process
- (zz)使用GDB调试Coredump文件
- GDB 看 coredump
- gdb 调试 coredump
- GDB + CoreDump 调试记录
- gdb coredump 问号
- GDB coredump调试
- GDB + CoreDump 调试记录
- GDB---coredump分析
- gdb 使用 coredump
- GDB的使用+coredump
- gdb调试coredump文件
- GDB和coredump
- gdb和coredump
- GDB 调试(四)
- Codeforces--140A--New Year Table(思维)
- 【python】string to list效率对比
- DoG (Difference of Gaussian)角点检测
- APP开发实战12-业务逻辑的实现
- 我的博客
- GDB(四):gdb coredump
- 57-002-1 bootstrap中利用面板实现折叠功能collapse
- 关于多线程、安装信号、长跳转、数据结构等的例子
- 关于java I/O的杂谈
- 斗地主手牌最少手数的搜索
- R语言文本分析(4)
- sar
- android开发环境的搭建
- Fragment和viewPager拒绝预加载