2. ruby - pry-byebug デバッガ - 実行してみる

 
2.1 ソースへの書き込み
2.2 コマンド

2.1 ソースへの書き込み

 デバッガを起動するにはソースへの書き込みが必要になるらしい・・・。  えぇぇ?  それって Visual Studio の VC で DebugBreak(); を使うようなもん?  まぁスレッド実行のような、実行時にポイントの箇所で止めることができないものには便利な機能ですが、いちいちソースに書いたりコメントアウトするのはなんて原始的な・・・。  いきなり起動するのはどうなのかしらん。  とりあえず

#!/usr/bin/env ruby

require('open-uri')
require('nokogiri')

charset = nil

html = open(ARGV[0]) do | f |
  charset = f.charset							#	文字種別を取得
  f.read 										#	htmlを読み込んで変数htmlに渡す
end

doc = Nokogiri::HTML.parse(html, nil, charset)	#	htmlをパース(解析)してオブジェクトを生成

puts("doc.title")								#	タイトルを表示
 てなソースを実行すると

> ./ソースファイル名.rb http://freebsd.sing.ne.jp/lang/ruby/04/02.html
ruby - a?|a?§a??a?1a? ̄a?¬a??a??a?3a?° - open-uri
 てな感じなので、実際 puts で出力されているのかを確認したくて、ソースを修正

#!/usr/bin/env ruby

require('pry')									←	この行を追加
require('open-uri')
require('nokogiri')

binding.pry										←	この行を追加
charset = nil

html = open(ARGV[0]) do | f |
  charset = f.charset							#	文字種別を取得
  f.read 										#	htmlを読み込んで変数htmlに渡す
end

doc = Nokogiri::HTML.parse(html, nil, charset)	#	htmlをパース(解析)してオブジェクトを生成

puts("doc.title")								#	タイトルを表示
 3、7行を追加しておるわけですが、これで実行すると 7行でデバッガが起動します。

2.2 コマンド

 主なコマンドは
コマンド 内容
print 変数名 変数の内容を表示
(と思ったら単に print メソッドを実行している?)
next 次の行を実行
step 次の行を実行
メソッドの場合はメソッド内にステップイン
continue pry を終了して実行を継続
finish 現在のフレームが終わるまで実行
exit 最後まで実行して終了
quit
!!! ループ内だと exit 等でぬけないときに全部終了させるにはこれを使用します

 省略形が効かないらしいのがちょっとつらいところ。