原文: 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.comtruehttp://www.bkjia.com/PHPjc/440136.html技術記事原文: https://bugs.php.net/bugs-getting-valgrind-log.php 前提条件 1. PHP をコンパイルするときは、--enable-debug オプションを指定する必要があります。 2. PHP のメモリ管理を無効にします。 Zend MM Z を無効にする...