1
私はコアダンプファイルを見つけようとしたときに似たトピックを見ましたが、どのソリューションも私に適しているようではありませんでした。誰かがデバッグを助けることができますか?私のアプリケーションは、コアダンプのために失敗したことを示す出力をログの最後に生成しますが、ファイルはどこにも生成されず、情報はログファイルに保持されません。
Linuxシステム:
NAME="Red Hat Enterprise Linux Server" VERSION="7.8 (Maipo)" ID="rhel" ID_LIKE="fedora" 前述のように、特定のリンクでいくつかの方法を試しました。
限界値
ulimit -c
unlimited
cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E
確認してみると、apフォルダが存在しないことがわかりました。
また、/tmpで始まる文字列で/proc/sys/kernel/core_patternを修正してみました。
echo "/tmp/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern
/proc/sys/kernel/core_pattern: Read-only file system
現在、そのアクセス権がないので、rootとして実行すると機能しますか?
アプリケーションを実行しているディレクトリにもコアダンプファイルはありません。
また、次の点についてシステム全体を見てみました。
find / -name 'core*'
find / -name '*apport*'
また、他のフォルダも確認しました。
ls /var/cache/abrt
ls: cannot access /var/cache/abrt: No such file or directory
ls /var/crash
ls: cannot access /var/crash: No such file or directory
ls /var/spool/abrt
ls: cannot access /var/spool/abrt: No such file or directory
cat /var/log/apport.log
cat: /var/log/apport.log: No such file or directory
結果がない:
ls /var/lib/systemd/coredump/
次の解決策の場合:この問題を解決するには、apportがパッケージ以外のプログラムのコアダンプファイルも作成していることを確認する必要があります。これを行うには、次の内容で ~/.config/apport/settings というファイルを生成します。 [main] unpackaged=true
cd ~/.config/apport/
cd: /opt/front/arena/.config/apport/: No such file or directory
回避策:RHELでバイナリのコアダンプが欠落しており、使用する場合は、次のものを含める必要がありabrt
ます。/etc/abrt/abrt-action-save-package-data.conf
ProcessUnpackaged = yes
cd /etc/abrt
cd: /etc/abrt: No such file or directory
どうやら選択の余地がないようです。ありがとう
答え1
$ ulimit -c
unlimited
これはいいですね。権限の問題がない限り、コアファイルはサイズ制限なしで生成されます。このコマンドが表示されない場合は、を使用unlimited
して値を変更できますulimit -c unlimited
。
$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E
apport
この設定はコアファイルをプログラム(インストールされていません)にリダイレクトするため、ディスクにコアファイルが必要な場合は望ましくありません。
以前と同様に、この設定を手動で変更できますが、管理者権限が必要です。 rootとしてログインし、次のコマンドを使用してcore_patternファイルを変更します。
echo /tmp/cores/core.%e.%p.%h.%t > /proc/sys/kernel/core_pattern
...または以下を使用してくださいsudo
。
echo /tmp/core.%e.%p.%h.%t | sudo dd of=/proc/sys/kernel/core_pattern
最良の方法は次のとおりです。sysctl
:
sudo sysctl -w kernel.core_pattern=/tmp/cores/core.%e.%p.%h.%t
通常/etc/sysctl.conf
、適切に編集してこの変更を永久に適用できます。
Read-only file system
注:ファイルの内容を変更しようとすると、次の問題が発生することがわかりました。 proc FSが読み取り専用でマウントされているようです。以下を変更する前に、読み取り/書き込み権限で再マウントする必要があります/proc
。
sudo mount -o remount,rw /proc
それはすべてです。これで、要件に応じてコアファイルが/ tmpに生成されます。 Bashを使用して次のようにテストできます。
$ sleep 3 & kill -SEGV $!
[1] 4604
[1]+ Segmentation fault sleep 3
$ ls /tmp/core*
コアファイルに関する追加情報man 5 core
。