井上です。
毎度、お騒がせしております。

また、Rubyをいじくる発想のコメントですが、私の暴走の定義をしたいと思います。


暴走の定義

1)時間自爆

  明らかに暴走の場合は、指定した時間以上の動作を行うこととする。

  例えば、 ruby --kamikaze 300 5分以上経つと、例外が発生する

これは状況自爆でなくて、時限自爆。timeoutを使えば良いかもしれませんが、
スクリプトのレベルでなく Ruby本体レベルで行うことで、ソースが汚れず強力であ
る。

2)状況自爆

loop{
  print "A"
}

これも作者の意図をしている場合もあるので、これだけでは判断付きにくい。よっ
て、

$LOOP_ENABLE = false というグローバル変数を設けて、ループの善悪を決める。
falseはループを認めないということで、同じ位置に戻った場合 Rubyのソースでルー
プは必ずスタート位置があるので、
そこを通過したら、FLAGを立て2回目回るとフラグを見て例外を発生させる。
例外=終了と位置づけている。

例外としている点は、ここで強制終了されたら困る場合の保険で3回目通過した場合
は、問答無用の強制終了を行う。

呼び合いの場合

def a()
  b()
end

def b()
  a()
end


もともと、このようなソースは書く自体あまり無いのですが、
実行後に分かる複雑なものもあるかもしれませんのでRubyに持ってもらった方が
話が早いと思いました。

すべでこれらはデバックモードの話で、オプション指定なので通常モード時には困ら
ないと思います。

へぼな意見ばかりですが、みなさんのご意見をお聞かせ下さい。



_________________________________________________________________
メールだけじゃなかった!インターネット便利サービスがひとまとまり 
http://explorer.msn.co.jp/