[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
に渡してやれば、ソースのどこでクラッシュしたか分かるみたいだ ・ω・
スタックトレースもあるから遡ってやればいい。
Comments