2

Ubuntu で C++ アプリケーションを実行しています。私がやりたいのは、アプリケーション バイナリからシンボルを取り除いてバイナリの一部にならないようにすることですが、addr2line ユーティリティを使用して、バイナリの一部であるシンボルの代わりにシンボル ファイルを参照してバックトレース情報を取得します。 . これは可能ですか?

これまでに得た最も近いものは、次を使用してシンボル ファイルを生成することです。

strip MyBinary -o thesymbols.sym

そして、そのファイルを addr2line ユーティリティで次のように使用してみました。

addr2line 0x779e81 -b thesymbols.sym

しかし、これは苦情をもたらします:

addr2line: 'a.out': No such file

それで、私は試しました:

addr2line 0x779e81 -e MyBinary -b thesymbols.sym

しかし、これは苦情をもたらします:

addr2line: MyBinary: Invalid bfd target

誰かが私を正しい方向に導くことができますか? 私は何を間違っていますか?

助けてくれてありがとう!

編集:

次のようなシンボル情報だけを含むファイルを作成していると思ったとき、今気づきました。

strip MyBinary -o thesymbols.sym

私は実際には、thesymbols.sym と呼ばれる削除されたバイナリを作成していました。

そうは言っても、私の最初の質問はまだ残っています。何か案は?

4

1 に答える 1

2

ストリップされたバイナリを実行しているアドレスで addr2line を使用して、ストリップされていないバイナリを使用できます。アドレスは、ストリップされたバイナリとストリップされていないバイナリの両方で同じである .text セクションの開始に対して相対的です。

于 2016-02-17T20:54:20.677 に答える