C/C++プログラムのメモリ管理に役立つツール(Linux用)を実装するように求められました。主な目的はメモリリークを追跡することですが、私はmemcpyに対する重複する引数もチェックしています。Cメモリエラーを追跡するツールを実装し、私のオーバーライドされたmallocなどがどこから呼び出されているかを見つける
実際に私のバージョンでこれらの関数の呼び出しを(他のライブラリなどから)傍受する必要があります。実際にはそれらをオーバーライドする必要があります。だから私はすべての投稿に示唆された#defineトリックを使用することはできません。私の質問は、どのように元のソースファイル名、呼び出しが行われた関数と行番号を見つけるかです。
私の唯一のアイデアは、デバッグ情報でプログラムをコンパイルし、オブジェクトファイル(ELFは私がlinuxを使用しているので)を掘り下げることです。私はオブジェクトファイルで遊んだことがないし、アセンブリ言語の基本を知っているだけなので、これはかなり重い作業のようです。
これを実現する他の簡単な方法はありますか?似たようなことに取り組んでいる人なら誰も私がそれを始めるのを助けることができないでしょうか?
あなたは
だから、あなたは[valgrind](http://valgrind.org/)のようなものを書こうとしていますか?それはオープンソースなので、彼らがどのようにそれをしたかを調べることができます。またはそれを使用してください。 –
[Valgrind](http://valgrind.org/)を使わない理由を聞かれますか?これが大学の割り当てなどでない限り、私はあなたが何かを実装すべき理由は見当たりません。 – darioo
はいこれは大学の割り当てです^^。しかし、ありがとう、私はValgrindsのソースをチェックして、私がどれくらい手を伸ばしているか見るつもりです:)。誰かがもっと有用なポインタを持っていれば、私はあなたの助けに感謝します。ありがとう – SpotsWood