ホームページ >バックエンド開発 >PHPチュートリアル >valgrind_PHP チュートリアルを使用した PHP 拡張メモリ リークの検出

valgrind_PHP チュートリアルを使用した PHP 拡張メモリ リークの検出

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-20 11:16:031164ブラウズ

原文: https://bugs.php.net/bugs-getting-valgrind-log.php

前提

1. phpをコンパイルするときは--enable-debug选项を持参する必要があります。

2. PHP のメモリ管理を無効にします。

Zend MM を無効にする

Zend 仮想マシンは独自のプログラムを使用してメモリ管理を最適化するため、valgrind はほとんどのメモリ問題を検出できません。 valgrind を使用して php を実行する前に、Zend 独自のメモリ マネージャーを無効にする必要があります。これを無効にするには、環境変数 USE_ZEND_ALLOC を 0 に設定します。

リーリー

または

リーリー

上記の方法はphp5.2以降のバージョンに適しています。 5.2 より前の PHP は、

オプションを使用してコンパイルする必要があります。 --disable-zend-memory-manager

共有拡張機能を使用する

valgrind で拡張機能のメモリ スタックを正しく表示するには、以下を設定する必要があります:

リーリー

または

リーリー

この設定は、PHP 5.3.11 以降のバージョンに適用されます。

編集者注: たとえば、

が設定されていない場合、valgrindはZEND_DONT_UNLOAD_MODULESを報告する可能性があります。 リーリー

設定

すると以下のように表示されますZEND_DONT_UNLOAD_MODULES リーリー

CLI、Webサーバー組み込み、またはCGIを使用してphpを実行します

php CLI/CGI が valgrind ログを生成するには、次のコマンドを実行する必要があります:

リーリー

これにより、現在のディレクトリの php.log ファイルにログが出力されます。

Web サーバーに組み込まれている PHP を検出したい場合は、CLI 実行可能ファイルに適切な -S および -t パラメーターを使用する必要があります。次に、ブラウザー要求を通じてそれを実行し、php.log で valgrind エラーを確認します。

valgrind経由でPHP Apacheモジュールを実行

PHP と Apache を静的にコンパイルしている場合は、make install 後に Apache bin が分離されていないことを確認する必要があります。分離されていないと、必要なデバッグ情報が失われます。以下のように検出して実行

/path/to/httpd,这样会输出一些东西(例如not stripped) リーリー リーリー

Apache の PHP MOD の valgrind 検出レポートを生成したい場合は、valgrind で Apache を実行する必要があります:

リーリー

ブラウザリクエストを通じてアクセスすると、すべてのメモリエラーがapache.logに出力されます。

http://www.bkjia.com/PHPjc/440136.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/440136.html技術記事原文: https://bugs.php.net/bugs-getting-valgrind-log.php 前提条件 1. PHP をコンパイルするときは、--enable-debug オプションを指定する必要があります。 2. PHP のメモリ管理を無効にします。 Zend MM Z を無効にする...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。