linux coredump调试,ulimit设置 |
您所在的位置:网站首页 › 打开coredump支持命令 › linux coredump调试,ulimit设置 |
另外,用于设置文件句柄(包括socket)数量的命令: echo “ulimit -n 65535” >> /etc/profile 默认值通常是1024; 查看命令: ulimit -a cat /etc/profile
1 )如何生成 coredump 文件 ? 登陆 LINUX 服务器,任意位置键入 echo "ulimit -c 1024" >> /etc/profile 退出 LINUX 重新登陆 LINUX 键入 ulimit -c 如果显示 1024 那么说明 coredump 已经被开启。 1024 限制产生的 core 文件的大小不能超过 1024kb,可以使用参数unlimited,取消该限制 ulimit -c unlimited 2 ) . core 文件的简单介绍 在一个程序崩溃时,它一般会在指定目录下生成一个 core 文件。 core 文件仅仅是一个内存映象 ( 同时加上调试信息 ) ,主要是用来调试的。 3 ) . 开启或关闭 core 文件的生成 用以下命令来阻止系统生成 core 文件 : ulimit -c 0 下面的命令可以检查生成 core 文件的选项是否打开 : ulimit -a 该命令将显示所有的用户定制,其中选项 -a 代表“ all ”。 也可以修改系统文件来调整 core 选项 在 /etc/profile 通常会有这样一句话来禁止产生 core 文件,通常这种设置是合理的 : # No core files by default ulimit -S -c 0 > /dev/null 2>&1 但是在开发过程中有时为了调试问题,还是需要在特定的用户环境下打开 core 文件产生的设置。 在用户的 ~/.bash_profile 里加上 ulimit -c unlimited 来让特定的用户可以产生 core 文件。 如果 ulimit -c 0 则也是禁止产生 core 文件,而 ulimit -c 1024 则限制产生的 core 文件的大小不能超过 1024kb 4 ) . 设置 Core Dump 的核心转储文件目录和命名规则 /proc/sys/kernel/core_uses_pid 可以控制产生的 core 文件的文件名中是否添加 pid 作为扩展 ,如果添加则文件内容为 1 ,否则为 0 /proc/sys/kernel/core_pattern 可以设置格式化的 core 文件保存位置或文件名 ,比如原来文件内容是 core-%e
例如, [root@streamingserver ffmpeg]# cat /proc/sys/kernel/core_pattern |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
可以这样修改成这样 : echo "/tmp/core-%e-%p-%t" > /proc/sys/kernel/core_pattern [root@streamingserver ffmpeg]# cat /proc/sys/kernel/core_pattern /tmp/core-%e-%p-%t 将会控制所产生的 core 文件会存放到 /corefile 目录下,产生的文件名为 core- 命令名 -pid- 时间戳 以下是参数列表 : %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 添加命令名 5 ) . 使用 core 文件 在 core 文件所在目录下键入 : gdb -c core 它会启动 GNU 的调试器,来调试 core 文件,并且会显示生成此 core 文件的程序名,中止此程序的信号等等。 需要关联产生core文件的程序文件进行调试,gdb中使用file命令进行关联
如果你已经知道是由什么程序生成此 core 文件的,比如 MyServer 崩溃了生成 core.12345 ,那么用此指令调试 : gdb -c core MyServer 6 ) . 一个小方法来测试产生 core 文件 直接输入指令 : kill -s SIGSEGV $$
【转自】http://blog.csdn.net/zjg555543/article/details/7659575 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |