Opened 13 years ago
Closed 12 years ago
#2808 closed enhancement (fixed)
エラーページ表示時にSmarty Debug Consoleにバックトレースを表示してほしい
Reported by: | tsukamoto | Owned by: | nobody |
---|---|---|---|
Priority: | minor | Milestone: | OpenPNE2.13.2 |
Component: | 指定しない | Version: | |
Keywords: | 2.13要望 | Cc: |
Description (last modified by )
■概要
■仕様
■関連情報
元のdescription
エラーページ表示時に、Smarty Debug Consoleにバックトレースを表示してほしいと思います。
エラーページは、複数のプロセスで、同じエラーページ表示になることがあります。この時の問題切り分けのため、エラーページ表示時には、Smarty Debug Consoleにバックトレースを表示してほしいと思います。
OpenPNE 2.12.1に対するパッチを添付します。
Attachments (1)
Change History (10)
Changed 13 years ago by
Attachment: | openpne_2.12.1_ticket2808_diff.txt added |
---|
comment:2 Changed 13 years ago by
パッチの提供ありがとうございます。これは開発者にとってはすごくありがたい機能改善ですね。是非取り込ませていただきたいです。
Smarty Debug Console が表示される状態というのはほぼ開発時だと思うので、エラーページに限らず、(OPENPNE_DEBUGGING が 2 の状態に限り)すべてのページでバックトレースの結果をアサインしてしまってもいいかなとなんとなく思いついたのですが、これについてはどうお考えでしょうか?
また単にアサインするだけでなく、 webapp/templates/debug.tpl を書き換えてバックトレースを見やすく表示させてみても面白いかもしれませんね。
comment:3 Changed 12 years ago by
遅くなりました。
すべてのページでバックトレースの結果をアサインしてしまってもいいかなとなんとなく思いついたのですが、これについてはどうお考えでしょうか?
良いと思います。
ただ、パッチで行っているdebug_backtraceによるトレースの取得は、呼び出された場所から、直接の呼び出し元を上方向に辿るだけなので、成功時にcontroller.php内で呼んでも情報量がないですね。(a)うまい呼び出しタイミングがあるか、(b)debug_backtrace以外の(PNE独自の?)トレース情報を提供できれば、有効だと思います。
comment:4 Changed 12 years ago by
Description: | modified (diff) |
---|---|
Keywords: | 確認中 added |
- trunk: r8160
trunkにマージしました。descriptionの変更をどなたかにやってもらいたいです。
comment:5 Changed 12 years ago by
Keywords: | テスト待ち added; 確認中 removed |
---|
comment:6 Changed 12 years ago by
Keywords: | 差し戻し added; テスト待ち removed |
---|
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
というエラーを出力してスクリプトの実行が停止してしまいます。
comment:7 Changed 12 years ago by
とりあえずの対処として、
- 引数が配列もしくはオブジェクトの場合は、それを示す文字列に置換
- クラスのメソッドをコールした場合に追加される object というキーの値が、そのクラスのインスタンスなので、この値をクラス名に置換
をおこないます。
comment:8 Changed 12 years ago by
Keywords: | テスト待ち added; 差し戻し removed |
---|
comment:9 Changed 12 years ago by
Keywords: | テスト待ち removed |
---|---|
Resolution: | → fixed |
Status: | new → closed |
確認しました。問題ありません。
Diff for 2.12.1 (trunk)