2011-06-20 10 views
1

gdbフラグで構築された画像は提供しません。 でフィールドに生成されたコアファイルをデバッグするのに役立つリンクやドキュメントなどの類似のものがあります(イメージは-g gdbフラグでは作成されません)。gdbフラグなしで構築された画像のコアファイルのデバッグ-g

いくつかのポインタが本当に便利です!

+0

私の知る限りでは、コアファイルをデバッグするために、バイナリファイルで有効シンボルを持っている必要があります。コアファイルは、これはGDBがフレームをスタックし、どのような記号それらのラインが地図上何であったかを伝えることができる方法ですので、あなたがアプリケーションを含める必要があり、実行Xの時点でのアプリケーションの単なるメモリレイアウトであることを覚えておいてください。 – Suroot

答えて

0

-gで実行可能ファイルをビルドする必要があります(-Oと指定することもできます)。その後、実行ファイル(man strip)の削除されたバージョンを出荷します。コアファイルはいずれのバージョンとも互換性があります。

+1

、元の画像が-gでビルドされていなかった場合は、通常、-gで(コードからなどcompilersystemヘッダファイルにすべてを気にすることは)同じまま)画像を再構築し、構築された画像からコアファイルを分析することができます-gなしで、-gで構築されたイメージを使用する – nos

3

さらに良い解決策は、-gを使ってプログラムを構築することです(少なくともGCCは最適化を抑制しません)。次に、objcopyを使用して、製品と共に出荷されないseparate debug filesを作成し、出荷したバイナリを削除することができます。

デバッグシンボルが存在する開発マシンのフィールドからコアをロードすると、GDBは別々のファイルからデバッグシンボルをロードします。このフィールドでは、出荷していないので、デバッグ情報は利用できませんので、デバッグシンボルファイルは存在しません。

該当する場合は技術者がオンサイトのコアファイルを分析するために彼らとのシンボルを持って来ることができるように、あなたはまた、シンボルファイルとDVDまたはUSBキーを作成することができます。