1

バックトレースでソース コード ビューを無効にして、行番号とファイル名のみを表示することはできますか?

アプリケーションファイルからも読み取ることができるため、これらの情報をアプリケーションに含めないでください。

ソースコードを誰にも見られたくありません。

GDB で不可能な場合、そのような機能を備えた他のデバッガーはありますか?

4

1 に答える 1

2

GDBは、元のソースファイルを見つけることができる場合にのみソースコードを表示できます。人々がバックトレースであなたのソースを見ることができれば、おそらく彼らはあなたのソースベース全体も見ることができます。

したがって、コンパイラがアプリケーションバイナリにソースを含めたくないということですか?

実際、アプリケーションバイナリには、ソースファイル名、行番号、シンボル名(関数名や変数名など)、および一部のタイプ情報のみが含まれています。を使用する場合-g3は、プリプロセッサマクロも含まれる可能性がありますが、ほとんどの人はを使用します-g

「ソース」情報を除外する最も簡単な方法は、デバッグ情報を含むバイナリを出荷しないことです。-gそもそも使用せずにビルドすることもstrip、事後に使用して削除することもできます。

デバッグ情報を使用してビルドしないと、絶対に必要ではないすべてのシンボル名(static関数、およびすべてのローカル変数名を含む)が削除されますが、外部から表示される関数のシンボル名は削除されません。リンカーはそれらを確認する必要があります。strip私は試したことがありませんが、それらのいくつかも削除できると思います。ライブラリには、外部から見える機能のシンボル名が必要であることに注意してください。

デバッグ情報を削除すると、行番号情報とソースファイル名も削除されるため、これはまだ希望どおりではありません。

a)恥ずかしくない、または手がかりを与えないようにソースコードをリファクタリングし、b)デバッグ情報を同梱しないことをお勧めします。

于 2012-08-14T13:39:24.957 に答える