3

ソフトウェアのリリース バージョン (gcc でコンパイルされた C++ コード) から送信されたコア ファイルをデバッグする方法を見つけようとしています。理想的には、リリース ビルドをデプロイし、デバッグ ビルドを手元に置いてデバッグに使用できるようにしたいので、シンボル テーブルなどを用意します。

私の問題は、(私が理解しているように) デバッグ ビルドとリリース ビルドが同じであることが保証されていないことです。そのため、gdb を起動してデバッグ実行可能ファイルを指定すると、フィールドのコア ファイルがゴミのように見えることがあります。

リリースされたソフトウェアのサイズやパフォーマンスに影響を与えずに、これを回避する方法はありますか (ここに問題があります)。これは大規模なアプリケーションであり、デバッグ ビルドのパフォーマンスはおそらく顧客に受け入れられないでしょう。一度ビルド (デバッグ) してから、シンボル テーブルを取り除き、それをリリース ビルドとして出荷するという提案を見てきましたが、そのアプローチではパフォーマンスが低下するのではないでしょうか?

この問題に対処するために試したこと、または現在使用していることについて誰か提案がありますか? ありがとう!

4

1 に答える 1

5

最適化をオンにしてコンパイルおよびリンクし、デバッグ シンボルを生成して ( -O3 -g)、デバッグ シンボルを抽出することができます。こうすれば、デバッグ シンボルを配置できますが、デバッグ シンボルなしで出荷でき、パフォーマンスの低下などは発生しません。ビルド ターゲット外で gcc デバッグ シンボルを生成する方法を参照してください。その方法について。

于 2011-04-06T14:54:56.030 に答える