gdb
を使用して、Cプログラムによって引き起こされたセグメンテーション違反をデバッグしようとしています。プログラムを実行してもコアダンプファイルが自動的に生成されないため、コマンドを実行する必要があります
ulimit -c unlimited
次回の実行時にコアファイルが生成されるようにします。
コアダンプファイルが自動的に生成されないのはなぜですか。また、プログラムの次回の実行時にコアファイルを生成するために毎回ulimit
コマンドを実行する必要があるのはなぜですか?.
私が使用しているオペレーティングシステムはUbuntu10.10です。
コマンドを配置する必要があります
ulimit -c unlimited
環境設定で。
シェルとしてbashを使用している場合は、上記のコマンドを〜/ .bashrcに配置する必要があります。
/etc/security/limits.conf
をulimit -c unlimited
に追加する代わりに、~/.bashrc
ファイルを編集することもできます。
limits.conf
は、ほとんどのLinuxディストリビューションでコアダンプの詳細を指定する「正しい」場所です。
これは、デフォルトでは、ディストリビューションがコアファイルのサイズを0ブロックに制限しているためです。あなたが言及したulimit
コマンドは、その制限を無限に増やします。
Ubuntuについてはわかりませんが、ほとんどのディストリビューションには、リソース制限のシステムデフォルトを含むファイル/ etc/limitsがあります。
セグメンテーション違反は、パス変数の値が無関係であることが原因です。私のシステムでは、ユーザーは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
このブログ投稿 (非常に重要)を参照してください。