web-dev-qa-db-ja.com

セグメンテーション違反でコアダンプファイルが生成されない

gdbを使用して、Cプログラムによって引き起こされたセグメンテーション違反をデバッグしようとしています。プログラムを実行してもコアダンプファイルが自動的に生成されないため、コマンドを実行する必要があります

ulimit -c unlimited

次回の実行時にコアファイルが生成されるようにします。

コアダンプファイルが自動的に生成されないのはなぜですか。また、プログラムの次回の実行時にコアファイルを生成するために毎回ulimitコマンドを実行する必要があるのはなぜですか?.

私が使用しているオペレーティングシステムはUbuntu10.10です。

18
Tim

コマンドを配置する必要があります

ulimit -c unlimited

環境設定で。

シェルとしてbashを使用している場合は、上記のコマンドを〜/ .bashrcに配置する必要があります。

19

/etc/security/limits.confulimit -c unlimitedに追加する代わりに、~/.bashrcファイルを編集することもできます。

limits.confは、ほとんどのLinuxディストリビューションでコアダンプの詳細を指定する「正しい」場所です。

15
Hans Solo

これは、デフォルトでは、ディストリビューションがコアファイルのサイズを0ブロックに制限しているためです。あなたが言及したulimitコマンドは、その制限を無限に増やします。

Ubuntuについてはわかりませんが、ほとんどのディストリビューションには、リソース制限のシステムデフォルトを含むファイル/ etc/limitsがあります。

9
ninjalj

セグメンテーション違反は、パス変数の値が無関係であることが原因です。私のシステムでは、ユーザーはsidd@sidd-Lenovo-G460追加内容は以下の通りです。

PATH=$PATH:/home/sidd/ns-allinone-2.35/bin:/home/sidd/ns-allinone-2.35/tcl8.5.10/unix:/home/sidd/ns-allinone-2.35/tk8.5.10/unix

LD_LIBRARY_PATH=/home/sidd/ns-allinone-2.35/otcl-1.14:/home/sidd/ns-allinone-2.35/lib

TCL_LIBRARY=/home/sidd/ns-allinone-2.35/tcl8.5.10/library

このブログ投稿 (非常に重要)を参照してください。

1
user3910369