問題タブ [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.
c - LD_PRELOAD の malloc と解放
独自のmallocとfreeを作成し、それらを共有ライブラリにコンパイルしました。私は自分のプログラムでそのライブラリを LD_PRELOAD します。このように、私のプログラムは常にカスタムのmallocとfreeを使用しますか、そうでない場合もあります。gcc には malloc とfreeも組み込まれていると聞いたことがあります。gcc に付属の glibc がビルトインのmallocとfreeを使用している可能性はありますか?
次に、プログラムを実行すると、 malloc/calloc呼び出しよりもfree関数呼び出しの方が頻繁に表示されることに気付きました(98 から 16)。私は自分でメモリ割り当てを行わないので (1 か所を除いて)、すべての割り当ては私が使用する標準ライブラリ関数によって行われます。また、プログラムで pthread を使用していることにも注意してください。知りたい場合は、私のプログラムは次のようになります。
c++ - LD_PRELOAD は unix/linux のすべてのフレーバーで動作しますか?
Ubuntuサーバーでコンパイルされた単純なLD_PRELOADモジュールを作成しました。このプリロードは、Solaris、FreeBSD、CentOS などの他のシステムでも機能しますか? 一部の OS で特別な問題はありますか?
c++ - ほとんどのシステムでLD_PRELOADをコンパイルする方法
LD_PRELOADファイルがあります。ほとんどのシステム(Unix / Linux)で動作するように、このプリロードをコンパイルする必要があるOSと条件を確認してください。最も求められているのは、FreeBSD、Ubuntu、CenstOS、Solarisです。
ありがとう!
c++ - 64 ビット Ubuntu で x32 ビット LD_PRELOAD をコンパイルする
x64プラットフォーム(Ubuntu)でx32 LD_PRELOADをコンパイルしようとしています、私のコマンド:
しかし、私はエラーが発生しています:
どうすれば修正できますか?ありがとう!
c - LD_PRELOADがすべてのシンボルをプリロードしない
、、、などmmap
のLD_PRELOAD関数を試していますが、一部の関数はLD_PRELOADを正常に取得しますが、他の関数は取得しません。たとえば、、は完全にプリロードされていますが、そうではありませんが、 pthreadを使用しているため、によって報告されたように、プログラムから呼び出されていることは確かです。ここでLD_PRELOADされない理由は何ですか?read
open
clone
mmap
read
open
clone
clone
strace
clone
c++ - LD_PRELOAD をブーストで実行するとエラーが発生する
ブースト (locks.hpp) を使用する LD_PRELOAD をコンパイルしました。コンパイルは成功しました。このLD_PRELOADを他のLinuxサーバーにコピーしましたが、実行するとエラーが発生しました:
/usr/bin/java: シンボル検索エラー: /test/test.so: 未定義のシンボル: _ZN5boost11this_thread20disable_interruptionC1Ev
どうすればこれを修正できますか? このサーバーにブーストをインストールせずにこの問題を回避できますか?
LD_PRELOAD をコンパイルする方法:
ありがとう!
c++ - Linuxで受け入れるときに同じソケットID?
accept()関数をインターセプトするLD_PRELOADを作成しました。時々accept関数が同じファイル記述子を与えるので、私は問題を抱えています。このプリロードを1つのプロセスに対してのみロードします
私のコード:
出力は次のとおりです。
ファイル記述子:213
ファイル記述子:213 <-なぜですか?
..。
記述子を閉じる:213
なぜaccept関数は同じファイル記述子を返すのですか?
ありがとう!
c++ - G++ Linux サーバーで FreeBSD 用にコンパイルする方法
linux/unix(ld_preload) 用のコードをいくつか書きましたが、G++ または他のコンパイラを使用して、Ubuntu サーバーで FreeBSD 用にコンパイルするにはどうすればよいですか?
ありがとう!
linux - LD_PRELOAD でロードされたライブラリに引数を渡す
ロードされているライブラリに引数を渡すことは可能ですかLD_PRELOAD
:
このライブラリに引数を渡すにはどうすればよいですか?
c++ - LD_PRELOADを使用したヒープアナライザーのロード、およびC++でのグローバルスコープオブジェクト
Linuxを実行しているPPCシステムにデプロイされているアプリケーションのメモリリークなどのエラーを主に監視するために、および(およびその他)lib_debug
をオーバーライドするヒープアナライザー(参照用)を作成しました。共有ライブラリとしてコンパイルされ、必要に応じてロードされます。free
malloc
lib_debug
LD_PRELOAD
このデバッガーはこれまでうまく機能してきました。が呼び出されるたびmalloc
に、メモリモニターシングルトンがスタック上に作成されます。このシングルトンは、終了時にスコープから外れると、解放されていないメモリについて報告します。
ただし、アプリケーションの1つがstd::vector
グローバルスコープでを割り当てます。このグローバルvector
は、ヒープアナライザーが作成される前に作成されており、最も重要なのは後で破棄されているようです。したがって、これにmain
何かを挿入すると、シャットダウン時にメモリリークが発生したと見なされます。vector
lib_debug
説明のために、これは私がイベントのシーケンスであると私が信じているものです:
LD_PRELOAD
からシンボルをロードしますlib_debug
;std::vector
グローバルスコープでスタック上に作成されます。lib_debug
初期化が発生します-malloc
どこかで呼び出され、実際のヒープアナライザシングルトンがスタック上に作成されます。- 入力
main
; std::vector::push_back()
発生し、ヒープにメモリを割り当てます。main
終了します。- ヒープアナライザの
lib_debug
シングルトンがスコープ外になり、vector
メモリが解放されていないことがわかります-エラーが報告されます。 - は
vector
グローバルスコープから外れ、メモリを解放します。 - プログラムが終了します。
LD_PRELOADed
したがって、シングルトンが常に最後に削除されることを保証しfree
、アプリケーションで発生するすべてのシングルをキャッチする方法はありますか?