8

こんにちは、valgrind は初めてです。コマンドラインから実行可能ファイルに対して valgrind を実行する方法を知っています。しかし、apache/myqld/traffic サーバーなどのサーバー プロセスで valgrind を実行するにはどうすればよいでしょうか。

トラフィック サーバー ( http://incubator.apache.org/projects/trafficserver.html ) で valgrind を実行して、作成したプラグインで発生しているメモリ リークを検出したいと考えています。

助言がありますか ?

ありがとう、ピゴル

4

1 に答える 1

5

Valgrind の制御下でサーバーを起動する必要があります。サーバーの通常の起動コマンドを取得し、先頭にvalgrind.

Valgrind は、メインの「サーバー」プロセスが生成するすべてのプロセスにアタッチします。各スレッドまたはプロセスが終了すると、Valgrind はその分析を出力するので、それをファイルにパイプすることをお勧めします (標準エラー出力か標準出力かは不明です)。

通常の起動コマンドが の場合、/usr/local/mysql/bin/mysqld代わりに を使用してサーバーを起動しますvalgrind /usr/local/mysql/bin/mysqld

通常、スクリプト ( など/etc/init.d/mysql start) を使用してサービスを開始する場合は、スクリプトが実行する実際のコマンドをスクリプト内で調べて、スクリプトの代わりにそれを実行する必要があります。

--leak-check=fullオプションを valgrind に渡してメモリ リーク レポートを取得することを忘れないでください。

于 2010-03-22T10:33:06.560 に答える