問題タブ [ld-preload]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1396 参照

c - LD_PRELOAD の malloc と解放

独自のmallocfreeを作成し、それらを共有ライブラリにコンパイルしました。私は自分のプログラムでそのライブラリを LD_PRELOAD します。このように、私のプログラムは常にカスタムのmallocfreeを使用しますか、そうでない場合もあります。gcc には malloc とfreeも組み込まれていると聞いたことがあります。gcc に付属の glibc がビルトインのmallocfreeを使用している可能性はありますか?

次に、プログラムを実行すると、 malloc/calloc呼び出しよりもfree関数呼び出しの方が頻繁に表示されることに気付きました(98 から 16)。私は自分でメモリ割り当てを行わないので (1 か所を除いて)、すべての割り当ては私が使用する標準ライブラリ関数によって行われます。また、プログラムで pthread を使用していることにも注意してください。知りたい場合は、私のプログラムは次のようになります。

0 投票する
1 に答える
989 参照

c++ - LD_PRELOAD は unix/linux のすべてのフレーバーで動作しますか?

Ubuntuサーバーでコンパイルされた単純なLD_PRELOADモジュールを作成しました。このプリロードは、Solaris、FreeBSD、CentOS などの他のシステムでも機能しますか? 一部の OS で特別な問題はありますか?

0 投票する
1 に答える
1338 参照

c++ - ほとんどのシステムでLD_PRELOADをコンパイルする方法

LD_PRELOADファイルがあります。ほとんどのシステム(Unix / Linux)で動作するように、このプリロードをコンパイルする必要があるOSと条件を確認してください。最も求められているのは、FreeBSD、Ubuntu、CenstOS、Solarisです。

ありがとう!

0 投票する
1 に答える
983 参照

c++ - 64 ビット Ubuntu で x32 ビット LD_PRELOAD をコンパイルする

x64プラットフォーム(Ubuntu)でx32 LD_PRELOADをコンパイルしようとしています、私のコマンド:

しかし、私はエラーが発生しています:

どうすれば修正できますか?ありがとう!

0 投票する
1 に答える
850 参照

c - LD_PRELOADがすべてのシンボルをプリロードしない

、、、などmmapのLD_PRELOAD関数を試していますが、一部の関数はLD_PRELOADを正常に取得しますが、他の関数は取得しません。たとえば、、は完全にプリロードされていますが、そうではありませんが、 pthreadを使用しているため、によって報告されたように、プログラムから呼び出されていることは確かです。ここでLD_PRELOADされない理由は何ですか?readopenclonemmapreadopencloneclonestraceclone

0 投票する
1 に答える
219 参照

c++ - LD_PRELOAD をブーストで実行するとエラーが発生する

ブースト (locks.hpp) を使用する LD_PRELOAD をコンパイルしました。コンパイルは成功しました。このLD_PRELOADを他のLinuxサーバーにコピーしましたが、実行するとエラーが発生しました:

/usr/bin/java: シンボル検索エラー: /test/test.so: 未定義のシンボル: _ZN5boost11this_thread20disable_interruptionC1Ev

どうすればこれを修正できますか? このサーバーにブーストをインストールせずにこの問題を回避できますか?

LD_PRELOAD をコンパイルする方法:

ありがとう!

0 投票する
1 に答える
756 参照

c++ - Linuxで受け入れるときに同じソケットID?

accept()関数をインターセプトするLD_PRELOADを作成しました。時々accept関数が同じファイル記述子を与えるので、私は問題を抱えています。このプリロードを1つのプロセスに対してのみロードします

私のコード:

出力は次のとおりです。

ファイル記述子:213

ファイル記述子:213 <-なぜですか?

..。

記述子を閉じる:213

なぜaccept関数は同じファイル記述子を返すのですか?

ありがとう!

0 投票する
2 に答える
1452 参照

c++ - G++ Linux サーバーで FreeBSD 用にコンパイルする方法

linux/unix(ld_preload) 用のコードをいくつか書きましたが、G++ または他のコンパイラを使用して、Ubuntu サーバーで FreeBSD 用にコンパイルするにはどうすればよいですか?

ありがとう!

0 投票する
1 に答える
1668 参照

linux - LD_PRELOAD でロードされたライブラリに引数を渡す

ロードされているライブラリに引数を渡すことは可能ですかLD_PRELOAD:

このライブラリに引数を渡すにはどうすればよいですか?

0 投票する
1 に答える
397 参照

c++ - LD_PRELOADを使用したヒープアナライザーのロード、およびC++でのグローバルスコープオブジェクト

Linuxを実行しているPPCシステムにデプロイされているアプリケーションのメモリリークなどのエラーを主に監視するために、および(およびその他)lib_debugをオーバーライドするヒープアナライザー(参照用)を作成しました。共有ライブラリとしてコンパイルされ、必要に応じてロードされます。freemalloclib_debugLD_PRELOAD

このデバッガーはこれまでうまく機能してきました。が呼び出されるたびmallocに、メモリモニターシングルトンがスタック上に作成されます。このシングルトンは、終了時にスコープから外れると、解放されていないメモリについて報告します。

ただし、アプリケーションの1つがstd::vectorグローバルスコープでを割り当てます。このグローバルvectorは、ヒープアナライザーが作成される前に作成されており、最も重要なのは後で破棄されているようです。したがって、これにmain何かを挿入すると、シャットダウン時にメモリリークが発生したと見なされます。vectorlib_debug

説明のために、これは私がイベントのシーケンスであると私が信じているものです:

  1. LD_PRELOADからシンボルをロードしますlib_debug;
  2. std::vectorグローバルスコープでスタック上に作成されます。
  3. lib_debug初期化が発生します-mallocどこかで呼び出され、実際のヒープアナライザシングルトンがスタック上に作成されます。
  4. 入力main;
  5. std::vector::push_back()発生し、ヒープにメモリを割り当てます。
  6. main終了します。
  7. ヒープアナライザのlib_debugシングルトンがスコープ外になり、vectorメモリが解放されていないことがわかります-エラーが報告されます。
  8. vectorグローバルスコープから外れ、メモリを解放します。
  9. プログラムが終了します。

LD_PRELOADedしたがって、シングルトンが常に最後に削除されることを保証しfree、アプリケーションで発生するすべてのシングルをキャッチする方法はありますか?