処理の途中結果確認ツールの比較
binding.pryとは
デバッグする際にこの時点での処理が見たい時がある。静的言語でIDEを使っている場合はブレークポイントをUIから設定する方法もあるが、pureテキストエディターでスクリプト言語を書いている場合にはそういった機構は無い。
REPLを開いて処理と同じライブラリを読み込んでいけば同じ状態になるが面倒。Rubyにおいてはbinding.pryやbinding.irbを挟むと処理の途中の状態でREPLを起動可能。他の言語でも同様の機構があるか調べた。
Ruby
gem install pry
後
require 'pry' a = 1 b = 2 binding.pry # open REPL puts a+b
Ruby 2.4からはirbで同じことができる
require 'irb' a = 1 b = 2 binding.irb # open REPL puts a+b
Python
pip install ipython
from IPython import embed a = 1 b = 2 embed() # open REPL print(a+b)
Node.js
コツがいる。 node inspect test.js
a = 1; b = 2; debugger; // breakpoint console.log(a+b);
起動時はスクリプトの頭にいるのでbreakpointまで移動
debug> cont // Continue to breakpoint debug> repl // Open REPL
PHP
composer require psy/psysh
<?php require 'vendor/autoload.php'; $a = 1; $b = 2; eval(\Psy\sh()); // open REPL echo $a+$b; echo "\n";
所感
Node.jsだけ独特