顧客のサイトに展開したCアプリケーションがあります。コンパイルされ、HP-UXで実行されます。ユーザーからクラッシュが報告され、コアダンプを取得しました。これまでのところ、私は家の中でクラッシュを再現することができませんでした。
ご想像のとおり、コアファイル/デプロイされた実行可能ファイルには、いかなる種類のシンボルも完全に含まれていません。gdbにロードしてbtを実行すると、次のようになります。
(gdb) bt
#0 0xc0199470 in ?? ()
ファイルに対して「文字列コア」を実行できますが、実行可能ファイル内のすべての文字列を取得するだけなので、そこにあるものを追跡することは半不可能のようです。
私は実行可能ファイルのデバッグバージョン(-gでコンパイルされた)を持っていますが、残念ながらリリースされたバージョンよりも数ヶ月新しいです。そのハブでgdbを起動しようとすると、次のように表示されます。
warning: exec file is newer than core file.
Core was generated by `program_name'.
Program terminated with signal 11, Segmentation fault.
__dld_list is not valid according to __dld_flags.
#0 0xc0199470 in ?? ()
(gdb) bt
#0 0xc0199470 in ?? ()
デバッグバージョンをコンパイルして顧客のサイトに展開し、次のクラッシュを待つことは可能ですが、いくつかの理由から、比較的困難で望ましくありません。
私はコードに精通しており、顧客のバグレポートに基づいて、コードのどこでクラッシュしているのかを比較的よく理解しています。
このコアダンプからさらに情報を収集する方法はありますか?文字列または別のデバッガーまたは何かを介して?ありがとう。