Armadilloフォーラム

CoreDump

sakashita_spc

2018年12月14日 21時14分

CoreDumpを生成したいのですが、

ulimit -c unlimited

をシェルから実行して、SegmentFaultになるアプリを実行すると、CoreDumpが生成されます。

この
ulimit -c unlimited
を起動スクリプトに記述したいのですが、どこに記述すればいいでしょうか?

/etc/config/rc.local
の最後に追加して、システムを再起動して、アプリを実行しても、反映されていませんでした。

よろしくお願いします。

コメント

y.nakamura

2018年12月14日 22時36分

中村です。

> ulimit -c unlimited
> を起動スクリプトに記述したいのですが、どこに記述すればいいでしょうか?
>
> /etc/config/rc.local
> の最後に追加して、システムを再起動して、アプリを実行しても、反映されていませんでした。

コアダンプを生成してほしいプログラムはどうやって起動していますか?

--
なかむら

sakashita_spc

2018年12月14日 23時18分

中村様
ありがとうございます。

>
> コアダンプを生成してほしいプログラムはどうやって起動していますか?
>

現在、実験的にはやっている方法は、シェル(busybox)からですが、最終的には、
/etc/config/rc.local あるいは /etc/inittab を考えています。

起動方法によって異なりますでしょうか?

y.nakamura

2018年12月15日 0時56分

中村です。

> 現在、実験的にはやっている方法は、シェル(busybox)からですが、最終的には、
> /etc/config/rc.local あるいは /etc/inittab を考えています。
>
> 起動方法によって異なりますでしょうか?

ulimit -c unlimited を実行したシェルから起動したコマンドだけになります。

rc.localから起動する場合は、rc.localに書いておけばよさそうに思います。
/etc/inittabの場合は、適当なシェルを経由するとか・・・
840の動作環境でシステム全体でulimit設定が有効なるようにする方法が
あるといいのですが、わからない(知らない)です。

Ubuntoだとこんな機能があるようですが、840にはないですね。
http://manpages.ubuntu.com/manpages/bionic/ja/man5/initscript.5.html

--
なかむら

sakashita_spc

2018年12月15日 10時52分

ありがとうございます。

検索したら、/etc/profileに書けば、少し進みそうです。

いろいろ模索してみます。

y.nakamura

2018年12月15日 13時05分

中村です。

> 検索したら、/etc/profileに書けば、少し進みそうです。

ログインしないrc.localやinittabでも
/etc/profileを読んでくれますか?

--
なかむら

sakashita_spc

2018年12月17日 19時45分

>ログインしないrc.localやinittabでも
>/etc/profileを読んでくれますか?

駄目そうです。なので、
setrlimit()
が使えそうなので、そちらを使いことにします。

ありがとうございます。

y.nakamura

2018年12月17日 21時04分

中村です。

> setrlimit()
> が使えそうなので、そちらを使いことにします。

setrlimit()のmanに次の記述があります。

注意
  fork(2)で作成された作成された子プロセスは、親プロセスのリソース制限
  を継承する。 execve(2)の前後でリソース制限は保存される。

--
なかむら

y.nakamura

2018年12月17日 21時07分

中村です。

> > setrlimit()
> > が使えそうなので、そちらを使いことにします。
>
> setrlimit()のmanに次の記述があります。
>

> 注意
>   fork(2)で作成された作成された子プロセスは、親プロセスのリソース制限
>   を継承する。 execve(2)の前後でリソース制限は保存される。
> 

を投稿した直後に気づきました。

コアダンプしてほしいプログラムが自分で
setrlimit()を実行するということですね。
なら大丈夫だと思います。

--
なかむら