37

私は C 用のメモリ プロファイラを作成しており、そのためにmalloc_hooks を介してmallocreallocおよび関数への呼び出しをインターセプトしています。free残念ながら、これらはマルチスレッド環境での動作が悪いため、推奨されていません。同じことを達成するための代替のベスト プラクティス ソリューションを説明するドキュメントが見つかりませんでした。誰か教えてもらえますか?

単純なものでうまくいくと読んだことが#define malloc(s) malloc_hook(s)ありますが、それは元のコードベースに干渉しすぎてプロファイリング/トレースツールでの使用に適していないため、私が考えているシステム設定では機能しません。元のアプリケーション コードを手動で変更しなければならないことは、まともなプロファイラーにとって致命的です。オプションの共有ライブラリにリンクするだけで、探しているソリューションを有効または無効にすることが最適です。たとえば、現在のセットアップでは、で宣言された関数を使用し__attribute__ ((constructor))てインターセプトmallocフックをインストールします。

ありがとう

4

3 に答える 3