CentOSはcoredumpダンプを開きcoreファイルの構成を生成する
CentOSやsuseなどのLinuxシステムでは、coredumpコアダンプをオフにするのがデフォルトで、coreファイルは生成されません.C/C++開発ではgdbデバッグが使用されるため、coredump機能をオンにする必要があります.以下に、簡単なshellスクリプトとして実行できる具体的な構成コマンドを示します.
Linux端末で上記のスクリプトを実行した後、終了して再ログインすると有効になります.次の図に示すように、
最後に、CentOSが対応するcoreファイルを生成したかどうかをテストする簡単なCプログラムを書いた.
コマンド
#!/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
が生成される.