Segment Fault调试

    在调试linux程序时经常会出现段错误,这里介绍常规的段错误定位方法,即使用core
    dump文件。

    配置core dump

    先设置允许的core dump文件大小。

    ~~ {.sourceCode .bash}
    echo "ulimit -c 102400" >> /etc/profile #ulimit -c unlimited 可以设置为无限
    source /etc/profile #生效
    ~
    ~

    使用 ulimit -c 来查看当前的core文件大小。

    配置core 文件名

    /proc/sys/kernel/core_uses_pid 可以控制产生的 core
    文件的文件名中是否添加 pid 作为扩展 ,如果添加则文件内容为 1 ,否则为 0

    配置core保存位置

    core保存位置默认为当前目录下core名字

    proc/sys/kernel/core_pattern 可以设置格式化的 core
    文件保存位置或文件名 ,比如原来文件内容是 core-%e

    可以这样修改 :

    echo "/corefile/core-%e-%p-%t" > core_pattern

    将会控制所产生的 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 添加命令名