Ticket #2808 (closed enhancement: fixed)

Opened 9 years ago

Last modified 9 years ago

エラーページ表示時にSmarty Debug Consoleにバックトレースを表示してほしい

Reported by: tsukamoto Assigned to: nobody
Priority: minor Milestone: OpenPNE2.13.2
Component: 指定しない Version:
Keywords: 2.13要望 Cc:

Description (Last modified by kiwa)

■概要

■仕様

■関連情報

元のdescription

エラーページ表示時に、Smarty Debug Consoleにバックトレースを表示してほしいと思います。

エラーページは、複数のプロセスで、同じエラーページ表示になることがあります。この時の問題切り分けのため、エラーページ表示時には、Smarty Debug Consoleにバックトレースを表示してほしいと思います。

OpenPNE 2.12.1に対するパッチを添付します。

Attachments

openpne_2.12.1_ticket2808_diff.txt (0.8 kB) - added by tsukamoto on 07/11/08 17:13:14.
Diff for 2.12.1 (trunk)

Change History

07/11/08 17:13:14 changed by tsukamoto

  • attachment openpne_2.12.1_ticket2808_diff.txt added.

Diff for 2.12.1 (trunk)

07/17/08 12:51:01 changed by kiwa

  • milestone set to OpenPNE2.13.2.

2.13.2で取り込み検討してほしいです

07/19/08 01:35:28 changed by ebihara

パッチの提供ありがとうございます。これは開発者にとってはすごくありがたい機能改善ですね。是非取り込ませていただきたいです。

Smarty Debug Console が表示される状態というのはほぼ開発時だと思うので、エラーページに限らず、(OPENPNE_DEBUGGING が 2 の状態に限り)すべてのページでバックトレースの結果をアサインしてしまってもいいかなとなんとなく思いついたのですが、これについてはどうお考えでしょうか?

また単にアサインするだけでなく、 webapp/templates/debug.tpl を書き換えてバックトレースを見やすく表示させてみても面白いかもしれませんね。

07/29/08 20:26:05 changed by tsukamoto

遅くなりました。

すべてのページでバックトレースの結果をアサインしてしまってもいいかなとなんとなく思いついたのですが、これについてはどうお考えでしょうか?

良いと思います。

ただ、パッチで行っているdebug_backtraceによるトレースの取得は、呼び出された場所から、直接の呼び出し元を上方向に辿るだけなので、成功時にcontroller.php内で呼んでも情報量がないですね。(a)うまい呼び出しタイミングがあるか、(b)debug_backtrace以外の(PNE独自の?)トレース情報を提供できれば、有効だと思います。

08/29/08 16:34:01 changed by kiwa

  • keywords changed from 2.13要望 to 2.13要望 確認中.
  • description changed.

trunkにマージしました。descriptionの変更をどなたかにやってもらいたいです。

09/03/08 18:11:19 changed by ebihara

  • keywords changed from 2.13要望 確認中 to 2.13要望 テスト待ち.

09/03/08 19:30:33 changed by ebihara

  • keywords changed from 2.13要望 テスト待ち to 2.13要望 差し戻し.

OpenPNE_DB 内など、 $debug_backtrace が巨大になってしまう場合で openpne_display_error() をコールすると、 Smarty Debug Console の $debug_backtrace を出力していく際に、

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 206084 bytes) in /path/to/OpenPNE/lib/include/Smarty/plugins/modifier.debug_print_var.php on line 37

というエラーを出力してスクリプトの実行が停止してしまいます。

09/03/08 20:20:17 changed by ebihara

とりあえずの対処として、

  • 引数が配列もしくはオブジェクトの場合は、それを示す文字列に置換
  • クラスのメソッドをコールした場合に追加される object というキーの値が、そのクラスのインスタンスなので、この値をクラス名に置換

をおこないます。

09/03/08 20:47:04 changed by ebihara

  • keywords changed from 2.13要望 差し戻し to 2.13要望 テスト待ち.

r8182 で、引数が配列かオブジェクトだった場合、もしくは関数ではなくクラスメソッドであった場合にフィルタリングするよう変更しました。

r8183 で、相対パスへの変換を OPENPNE_DIR を用いておこなうよう変更しました。

09/03/08 21:12:48 changed by kiwa

  • keywords changed from 2.13要望 テスト待ち to 2.13要望.
  • status changed from new to closed.
  • resolution set to fixed.

確認しました。問題ありません。