私は C 用のメモリ プロファイラを作成しており、そのためにmalloc_hooks を介してmalloc
、realloc
および関数への呼び出しをインターセプトしています。free
残念ながら、これらはマルチスレッド環境での動作が悪いため、推奨されていません。同じことを達成するための代替のベスト プラクティス ソリューションを説明するドキュメントが見つかりませんでした。誰か教えてもらえますか?
単純なものでうまくいくと読んだことが#define malloc(s) malloc_hook(s)
ありますが、それは元のコードベースに干渉しすぎてプロファイリング/トレースツールでの使用に適していないため、私が考えているシステム設定では機能しません。元のアプリケーション コードを手動で変更しなければならないことは、まともなプロファイラーにとって致命的です。オプションの共有ライブラリにリンクするだけで、探しているソリューションを有効または無効にすることが最適です。たとえば、現在のセットアップでは、で宣言された関数を使用し__attribute__ ((constructor))
てインターセプトmalloc
フックをインストールします。
ありがとう