エラー時にスタックトレースを生成する方法


20

Drupalサイトをデバッグしようとしているsysadminです。サーバーログでは、最終的にPHPがメモリを使い果たし、Apacheが500エラーを返すまで、DrupalがSolrインスタンスに対して何度も同じリクエストを行っていることがわかります。

ディスクのどこかにスタックトレースを記録するようにDrupalを構成するにはどうすればよいですか?

回答:


15

Develモジュールを使用して、admin / config / development / develの構成ページで提供される「Krumo Backtrace」オプションのいずれかを選択できます。

クルモバックトレース

必ずadmin / config / development / loggingにアクセスして、「エラーと警告」または「すべてのメッセージ」を選択してください。Syslogモジュール、または他のロギングモジュールを有効にしている場合は、それを無効にし、Dblogモジュールを有効にする必要があります。

バックトレース設定


6
このメソッドは、特定の例外(EntityMetadataWrapperオブジェクトの存在しないプロパティへのアクセスなど)に対してkrumoバックトレースを提供できません。
artfulrobot

3
EntityMetadataWrapperエラーの場合、報告されたエラーの行に移動し、ddebug_backtrace();その行の直前に挿入します。もちろんそれを削除することを忘れないでください!
ダンカンムー

これらのメッセージはどこかに記録されますか、それともログに記録することは可能ですか?それ以外の場合は、本番環境では役に立ちません。
ユール

1

drupalシステムでは、コアモジュールの下のモジュールセクションにログをディスクに保存するsyslogモジュールがあります。探しているものに役立つことを願っています。


1
残念ながら、これは致命的なエラー(メモリ不足エラーなど)では機能しません。
-stefgosselin

0

Drupal 7および8の場合、モジュール検査はバックトレースに最適です。

それらを表示するのではなく、ファイルまたはDrupalデータベースのログに追加できます。これは、Krumoバックトレース、ddebug_backtrace()および画面上の直接出力を作成する他のソリューションが失敗する場合に役立ちます。これは、出力のレンダリングが開始される前に発生するエラーと例外の場合です。

inspectの管理バックエンド構成エリアには、コードでの使用方法に関するクイックリファレンスが含まれています。


2
私は中に周りつついinspectドキュメントが、私はそれはエラー時にスタックトレースを生成するための方法の使用を見ていません。それができることですか?
ケンウィリアムズ

0

トレースモジュールは、私の状況のためにはるかに優れていました。

これは、Drupalフック呼び出し、データベースクエリ、およびPHPエラーのための広範なトレース機能を追加するシステム管理者および開発者向けのツールです。

このモジュールのバージョン1.0で提供されるいくつかの機能:

  • トレースメッセージをファイルまたはsyslog(UNIXプラットフォーム)に出力します。
  • オプションのフィルターとスタックトレースを使用してDrupalフック呼び出しをトレースします。
  • オプションのフルスタックトレースを使用して、PHPの警告とエラーをトレースします。
  • クエリタイプによるオプションのフィルタリングを使用して、SQLデータベースクエリをトレースします。
  • トレース出力には、マイクロ秒レベルのタイミング情報が含まれます。
  • スタックトレースには、PHP構文で渡された関数の引数が含まれます。
  • オプションのデバッグ出力には、PHPスーパーグローバルとHTTPヘッダーが含まれます。
  • 他のモジュールがトレース出力ターゲットを拡張できるようにするフックを定義します。

1
現在、このモジュールは開発中ではなく、D7バージョンは利用できないようです…:(
tanius
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.