12

デバッグ シンボルを残した状態でリリース バイナリをビルドすることのマイナス面があるかどうかを判断しようとしています。リリース ビルドでは-O3、現時点で を使用してコンパイルします。クラッシュが発生した場合、コアはほとんど役に立たなくなります。

-O3 -gだから、私がやりたいのはビルドを修正してデバッグシンボルに残すことです. サイズの問題はシンボルを削除することで解決できることはわかっていますが、他に見逃している微妙なものはありますか?

4

2 に答える 2

25

シンボルをバイナリから分離します。

g++ -ggdb -o target obj1.o obj2.o ...
strip target --only-keep-debug -o target.dbg
strip target

次に、gdbで使用しますsymbol-file target.dbg

編集:実際の質問について:

欠点は次のとおりです。

  • より簡単なリバース エンジニアリング (心配な場合)
  • より大きなバイナリ

実行速度には影響しません - デバッグ シンボルはバイナリの別のセクションに追加されるだけで、仮想アドレス空間のサイズに影響を与える可能性がありますが、他には何も影響しません。

于 2011-04-06T16:15:38.723 に答える
0

サイズに影響するため、キャッシングとメモリにも影響します。

コンパイラ オプションに関する情報を読むと、サイズが大きくなりキャッシュが壊れてメモリ フェッチが増えるため、たとえばループを展開するとコードが遅くなることがあると書かれていることがわかります。

于 2011-04-06T16:15:22.577 に答える