PHPのデバッガで文字列が途中で切れる。 [プログラミング]
EclipseとかVSCodeのデバッガで実行中のPHPの変数の中身を見れたりするのだけれど、その中身が不完全だという話。
ヒアドキュメントでSQLとかの文字列をべた書きにしていたりするのだけれど、あんまり長い文字列だと表示が切れるようだった。初めはヒアドキュメントの文字列の長さ制限とか、文字列自体の長さ制限かなと思っていたんだけど、全然違った。調べたんだけどたぶん2GBとか、普通に使っていれば何の問題もない上限だったと思う。
ヒアドキュメントとはいえ、2GBを超えるテキストというのはなかなかないと思うので、これがボトルネックになっているわけではなかった。何が悪かったかというと、どうやらXdebugにボトルネックというか表示制限があったようだ。
これはvar_dump用なんだけど、他の出力にも効くかな?
https://mawatari.jp/archives/do-not-omit-the-result-of-var_dump
Eclipse側にも表示の限界が設定されていて、それを意図的に取り払わないと見られないようだ。
https://www.it-swarm-ja.tech/ja/java/eclipse%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E4%B8%AD%E3%81%AB%E5%AE%8C%E5%85%A8%E3%81%AA%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/969626321/
ん~上手くいかない。デバッガ出力には関係ないのかな? EclipseでもVSCodeでも同じところで切れてしまうのは変わっていなかった。切れる場所も設定前も後も同じ。
やっぱSQLの文字列とか抽出して見たいときとかあるから(実際に別のツールでエラーが出てるか投入したりできるしね)、やっぱり全部見たりできた方がいい。
VSCodeで設定しないと切れるという話があった。ちょっとやってみる。
https://www.saaria.info/archives/3897
ダメやった。何が悪いんだろう。php.iniと同じ名前にしたらいいかなと思ったけど、それだとデバッガが動かなかった。なんだろうねぇ。それと無制限の-1の設定とかはVSCode側ではできないっぽい。まぁとりあえずは見られているからいいんだけど、いざとなったとき困りそうな気がする。
https://kitigai.hatenablog.com/entry/2019/06/20/004843
やっぱ-1とかはダメみたい。今度はphp.iniと揃えてみっか。ううむ、php.iniとVSCodeを揃えてみたけれどうまくいかないな。何が悪いのだろう。
ここいらへん見たけど、何が関係しているのかわかんないし。
https://xdebug.org/docs/develop#display
そもそも文字列の長さと
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
が関係しているのかどうかも怪しいんですけどね。
そもそも文字列の扱いが内部的に一文字ずつのarrayだったりしたら長さ的に話にならないし。それこそ-1で無制限にしないといけないんだろうけど、それだとVSCodeで扱えないみたいだしね。なんか面倒になってきて諦めました。
ヒアドキュメントでSQLとかの文字列をべた書きにしていたりするのだけれど、あんまり長い文字列だと表示が切れるようだった。初めはヒアドキュメントの文字列の長さ制限とか、文字列自体の長さ制限かなと思っていたんだけど、全然違った。調べたんだけどたぶん2GBとか、普通に使っていれば何の問題もない上限だったと思う。
ヒアドキュメントとはいえ、2GBを超えるテキストというのはなかなかないと思うので、これがボトルネックになっているわけではなかった。何が悪かったかというと、どうやらXdebugにボトルネックというか表示制限があったようだ。
これはvar_dump用なんだけど、他の出力にも効くかな?
https://mawatari.jp/archives/do-not-omit-the-result-of-var_dump
Eclipse側にも表示の限界が設定されていて、それを意図的に取り払わないと見られないようだ。
https://www.it-swarm-ja.tech/ja/java/eclipse%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E4%B8%AD%E3%81%AB%E5%AE%8C%E5%85%A8%E3%81%AA%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/969626321/
ん~上手くいかない。デバッガ出力には関係ないのかな? EclipseでもVSCodeでも同じところで切れてしまうのは変わっていなかった。切れる場所も設定前も後も同じ。
やっぱSQLの文字列とか抽出して見たいときとかあるから(実際に別のツールでエラーが出てるか投入したりできるしね)、やっぱり全部見たりできた方がいい。
VSCodeで設定しないと切れるという話があった。ちょっとやってみる。
https://www.saaria.info/archives/3897
ダメやった。何が悪いんだろう。php.iniと同じ名前にしたらいいかなと思ったけど、それだとデバッガが動かなかった。なんだろうねぇ。それと無制限の-1の設定とかはVSCode側ではできないっぽい。まぁとりあえずは見られているからいいんだけど、いざとなったとき困りそうな気がする。
https://kitigai.hatenablog.com/entry/2019/06/20/004843
やっぱ-1とかはダメみたい。今度はphp.iniと揃えてみっか。ううむ、php.iniとVSCodeを揃えてみたけれどうまくいかないな。何が悪いのだろう。
ここいらへん見たけど、何が関係しているのかわかんないし。
https://xdebug.org/docs/develop#display
そもそも文字列の長さと
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
が関係しているのかどうかも怪しいんですけどね。
そもそも文字列の扱いが内部的に一文字ずつのarrayだったりしたら長さ的に話にならないし。それこそ-1で無制限にしないといけないんだろうけど、それだとVSCodeで扱えないみたいだしね。なんか面倒になってきて諦めました。
タグ:PHP
コメント 0