質問
以前、makefile を使用してリリース バージョンの実行可能ファイルをコンパイルしましたが、後でデバッグしようと思ったときに、デバッグできないことがわかりました。
これで問題は解決するだろうと思ったのです-g
が、後になって、まったく問題が解決しないことがわかりました。
ここにオプションが追加されましたが-g
、デバッグ中にソース ファイルが見つかりません。
解決
Makefile でコンパイルされた既存の C/C++ プロジェクトのリリース バージョンを、ソース コードを変更せずにデバッグ バージョンに変換する方法。
この問題についてメイクファイルを注意深く調べた結果、メイクファイルのルールはタイムスタンプに基づいていることがわかりました。
つまり、ソースコードに変更がなければ、.o
元のリリースバージョンで生成された中間ファイルは、後からメイクファイルにオプションを追加してもデバッグ可能ですが-g
、ソースコードに入力することはできません。ソース ファイルが変更されていないため、.o
中間ファイルは再生成されず、対応する-g
オプションは追加されません。
最終操作:
一方では: makefile にコンパイル オプションを追加し、-g
他方では:最初にコンパイルされたリリース バージョンによって生成されたすべての中間ファイルを削除することが.o
非常に重要です。
以前の本でも言及されていましたが、-g
オプションとコード最適化オプションを-O/O1/O2/O3
同時に表示すべきではありません。