2011-02-21 5 views
0

メモリリークの場合、valgrindなど利用可能なツールが多数あります。これらのツールを使用して、リークの原因を特定できます。 OpenGLのリークには、glDEBuggerがありました。これは、そのようなものには非常に便利でした。ネットワークアプリケーション(ソケットハンドラなど)のリソースリークの分析

ネットワークプログラミングのための類似のツールはありますか?特に、Linuxソケットとパイプで作業する場合。

おそらくプログラムは(どのように多くのソケット、どのように多くのスレッド、どのように多くのミューテックスなど?)も

を使用しているどのように多くのPOSIX資源、測定私が間違っているなら、私を修正するための-posixのツールがありますしかし、C++とは対照的に、より高いレベルの言語(Java、Pythonなど)は、メモリ管理と同様に、これらのリソース管理を行うことができますか?

答えて

1

Valgrindは、あなたが興味を持っているリソースの数を追跡する能力を持っている:

  • メモリmemcheck

  • ファイルディスクリプタ経由--track-fds=yes memcheckオプション

  • スレッドとロックを介して、 HelgrindDRD

生成された情報は必ずしも詳細なものではありませんが、非常に役に立ちます。

1

straceとlsofは、リークの特定に役立つことがあります。ほとんどの場合、メモリデバッグツールで追跡できるソケット、パイプなどと一緒に割り当てられたメモリがあります。特に、リソースクラスをラップするカスタムクラスがある場合は、これらのクラスに未使用のデータを大量に格納し、memcheckなどの結果で膨大な数のデータを探します。

上位レベルの言語では、これらのリソースを管理する場合とそうでない場合があります。たとえば、高水準言語で同じ低レベル関数にアクセスしている場合、ほとんどの場合、そのリソースは管理されていない可能性があります。しかし、リソースがガベージコレクション可能なクラスにラップされている場合は、ガベージコレクションもリソースを処理できると思います。

関連する問題