6

私はGDBの初心者であり、正しく機能するようになりました。しかし、これが大きなプロジェクトでどのように使用されているのか疑問に思っています。makefileとg++を使用してビルドを行うプロジェクトがあります。GDBを機能させるには、デバッグシンボルをオンにしてコンパイルする必要があります(g ++ -gファイル)。

質問

  1. make debugのようなデバッグビルドを作成できるように、makefileに「debug」のような新しいターゲットを作成する必要がありますか。これはベストプラクティスですか?
  2. foo.cppのみをデバッグする必要があり、mainを含むプログラム全体をビルドする以外の目的でのみデバッグシンボルを生成することは可能ですか?

何かご意見は?

4

5 に答える 5

2
  1. 必要ありませんが、常に -g を使用してビルドすることを検討することをお勧めします (場合によっては、最適化された (-O1、-O2 など) コードを試してデバッグする必要さえあるかもしれません)。なぜ -g をオンのままにしないのですか? リリースでは、常にバイナリで strip を実行するだけです。

  2. はい。-g でそのファイルだけをビルドします。

于 2009-04-26T07:41:57.953 に答える
1

大規模、中規模、小規模のプロジェクトでの gdb の使用法に大きな違いはないと思います。ただし、大規模なプロジェクトでは、デバッグ情報によってオブジェクト ファイルと実行可能ファイルのサイズが大きくなるため、ビルドに必要な容量を考慮する必要があります。

  1. ソリューション全体のデバッグの必要性を最初に過小評価すると、将来、その決定に苦しむことになるでしょう。デバッグ情報の有無にかかわらずビルドを実行できる場合はいつでも良いので、ビルド スクリプトは慎重に記述してください。
  2. はい。ただし、以前の回答を考慮してください。場合によっては、デバッグ情報がないモジュールから問題が発生している可能性があります。
于 2009-04-26T07:48:59.123 に答える
0

いつでもデバッグバージョンをどこかに保存できます。シンボル情報を再バインドする必要がある場合は、ストリップ/リリースバージョンをデバッグした後、「file / path」に移動するだけで、gdbがシンボルを再読み取りします。そのターゲット。また、「symbol-file / path」を使用して、ストリップされたファイルにバインドされるようにシンボル情報を構成できます。

于 2009-07-14T03:20:28.300 に答える
0

gdb はシンボルなしで動作します。その場合、出力があまり役に立たないだけです。

  1. それは好みの問題です。デフォルトではすべてをデバッグ モードでビルドし、必要に応じてリリースします。
  2. はい。
于 2009-04-26T07:38:55.247 に答える