CentOSはcoredumpダンプを開きcoreファイルの構成を生成する

1555 ワード

CentOSやsuseなどのLinuxシステムでは、coredumpコアダンプをオフにするのがデフォルトで、coreファイルは生成されません.C/C++開発ではgdbデバッグが使用されるため、coredump機能をオンにする必要があります.以下に、簡単なshellスクリプトとして実行できる具体的な構成コマンドを示します.
#!/bin/bash

### Filename: coredumpshell.sh
### Description: enable coredump and format the name of core file on centos system

# enable coredump whith unlimited file-size for all users
echo -e "
# enable coredump whith unlimited file-size for all users
* soft core unlimited" >> /etc/security/limits.conf # set the path of core file with permission 777 cd /mydata && mkdir corefile && chmod 777 corefile # format the name of core file. # %% – % # %p – # %u – id # %g – id # %s – core # %t – core (seconds since 0:00h, 1 Jan 1970) # %h – # %e – echo -e "/mydata/corefile/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern # suffix of the core file name echo -e "1" > /proc/sys/kernel/core_uses_pid

Linux端末で上記のスクリプトを実行した後、終了して再ログインすると有効になります.次の図に示すように、[root@typecodes ~]# ulimit -aコマンドで効果を表示できます.
最後に、CentOSが対応するcoreファイルを生成したかどうかをテストする簡単なCプログラムを書いた.
[root@typecodes test]# vim test.c 
#include 
int main( int argc, char * argv[] )
{
    char a[1];
    scanf( "%s", a );
    return 0;
}

コマンドgcc test.c -o testを使用してコンパイルして実行し、故意にエラーのデータを入力してプロセスにエラーを報告します.このとき、/mydata/corefile/ディレクトリには、対応するcoreファイルcore-test-11-0-0-27124-1434029850が生成される.