[C++]CentOS のコアダンプがどこにあるか分からない件

CentOS 8 の segmentation Fault (CoreDumped) って表示されてるのにコアダンプないじゃん‥‥ってことに気づいた。

1. コアダンプは /usr/lib/systemd/systemd-coredump に渡される

と書いてるサイトがあったので見てみたけど、古いファイルしかなかったよw

2. コアダンプは サイズゼロになってるので、 ulimit -c unlimited  を設定しよう

と書いてるサイトがあったので設定してみたけど、出力されないよ!

3. /etc/systemd/system.conf に DumpCore=yes の設定があるのでコメントアウトしよう

なんだか変わらない

4./var/lib/systemd/coredump/ に出力されてるよ

ありました。3関係なく2を設定した後から出力されてたw
なお、LZ4で圧縮されてるので lz4 -d in-filename out-filename で回答してgdb に投げる。

おまけ
そんなことしなくても
export LD_PRELOAD="/lib/libSegFault.so"
または
export LD_PRELOAD="/lib64/libSegFault.so"

(対象アプリが 32bit か 64bitかで変える)
export SEGFAULT_SIGNALS="all"

を設定してgcc に-g 付けてコンパイルして 出てきた出力の
Backtraceの最初のアドレスを
addr2line -e programname Address
に渡してやれば、ソースのどこでクラッシュしたか分かるみたいだ ・ω・
スタックトレースもあるから遡ってやればいい。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です