ライブラリのロードをトレースするにはどうすればよいですか?


16

システムにインストールされているlibboost 1.67にリンクされているライブラリに依存するプログラムがあります。起動すると、libboost_system.so.1.58存在しないエラーが発生します。LD_PRELOADそしてLD_LIBRARY_PATH設定されていません。

lddtree実行では、このライブラリは依存関係として表示されませんが、表示されlddます。

ライブラリが必要な場所からどのようにトレースできますか?

回答:


16

GNUシステムの場合、次を使用してアプリケーションを実行してみてください。

LD_DEBUG=libs your-application

LD_DEBUG=helpその他のオプションまたはを参照してくださいman ld.so


tcshでLD_DEBUG = libs python3.6を試すと、LD_DEBUGコマンドが見つかりません。tcshの代替手段は何ですか?
ガンサブ

1
@gansub接頭辞を持つコマンドenvのtcshで
ステファンChazelas

6

プログラムがdlopen()を使用してlibboost_systemを手動でロードしている場合、ltraceを使用してdlopen()を呼び出しているかどうかを確認し、場合によってはgdbでdlopen()の呼び出しにブレークポイントを設定してから、スタックバックトレースを生成します。(latraceも参照してください。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.