14

私は関与するプロジェクトを持っています

  • 共有ライブラリ ie:mylib.so
  • (テスト) これらの共有ライブラリを使用するプログラム:test_mylib

で実行しようとするgdbtest_mylib、次のように出力されます。

"test_mylib": not in executable format: File format not recognized

代わりに実際のプログラム ( .libs/test_mylib) を直接使用すると、まだエラーが発生します。

.libs/test_mylib: can't load library 'libhello.so.0'

gdb を実行してプログラムをデバッグするにはどうすればよいですか?

4

2 に答える 2

16

これは私が数日前に遭遇した問題であり、SO に関する一般的な回答はまだありません。特殊なケースのみ。このページで見つけた答えは次のとおりです。http://www.gnu.org/software/libtool/manual/html_node/Debugging-executables.html

プログラムがインストールされるまで、システムは共有オブジェクトを探す場所を知りません。通常.libs、ソース フォルダのサブディレクトリにあります。

Libtool は、実際のインストールが完了する前にデバッグを可能にする便利なスクリプトを生成します (誰がバグのあるソフトウェアをインストールする前にインストールし、後でデバッグしたいですか?)

幸いなことに、生成されたスクリプトはこれに対するヘルパーを提供します。

libtool --mode=execute gdb test_mylib
于 2012-08-27T19:52:54.870 に答える