From: "Ohto, Yasunori" Date: 2008-02-14T11:15:42+09:00 Subject: [ruby-list:44636] Re: Q: 動的デバッグ方法 大戸です。 大量のデータに対して処理をするプログラムを作っています。 先日作ったプログラムでは、(通常モードでも)処理に1.5日くらいかかってました。 素直にデバッグモードを使っていると大変な時間がかかります。 私の場合、 1.対象データに対する処理対象情報の範囲などを調べる(軽いプログラムにて) 2.対象データから小さなサンプルデータを抽出する(ときには作る) 3.データがロードできない場合にステータスを出力するようにしておく 4.サンプルデータでうまくいくようにデバッグする 5.データロードが終了するところで Marshal.dump / load でキャッシュする 6.読み込めなかったデータがあれば、サンプルデータとして抽出し、デバッグする 7.デバッグモードで起動して、ロード後の処理のデバッグをする 8.デバッグ地点のすぐ近くにキャッシュポイントを再設定する という感じでデバッグを進めています。 確かに、C/C++ や Perl のデバッガはストレスをあまり感じませんでした。 途中でモニタリングするとしても、変数に入っているデータが大量なので、 下手に画面に出力したりすると、表示だけで10分以上かかったりするので、 インタラクティブに、ブレイクポイントにおける他の変数の値を参照しながら 確認範囲を動的に決めていく必要があります。 モニタリング用のプログラムを書くこともできないことはないし、 細かいところで高速化のためのコードを書くこともできるのですが、 結構煩雑になってしまうので、ruby のお手軽さが気に入った私としては、 なかなかつらいところです。 私の場合も、高速デバッガーがあると開発の手間がずっと楽になりますので、 ぜひとも欲しいところです。 -----Original Message----- From: m-morita [mailto:m-morita@ybrain.co.jp] Sent: Thursday, February 14, 2008 10:17 AM To: ruby mailing list Cc: 'M. Morita' Subject: [ruby-list:44635] Re: Q: 動的デバッグ方法 斎藤さん、 ネタ元の もりた (ruby 初心者)です > > デバッグなのですが、起動時に 「-r debug」を使用すると、データ > > 解析部分に入るまでに10分以上かかります。(デバッガー経由だと > > 10倍以上遅い感じがします) この苦痛を何とかしたいです。 > > に対する正攻法として、デバッグライブラリ自体を早いものに変えると > いうのはいかがでしょう。... 現在、breapoint を使用してデバッグしています。正確には binding 変数と eval とで breakpoint 仕様もどきを作り、カスタマイズして使用しています。 これだと、breakpoint を埋め込んだ箇所のスコープに見える変数の内容が わかるだけです。プログラム・ソース上の数行先での変数をみたい場合は、 再度そこに breakpoint を埋め込んで再実行しなければなりません。 やはりデバッガーのステップ実行や動的 breakpoint 設定が使えれば,,, と欲がでます。 ちなみに デバッガー経由で他の言語はどうかというと、(感覚的ですが、) perl は 3倍、python はそれより速かったように記憶していますし、C,C++ に至って は gdbで、速度は変わりません。それに対して ruby 添付のデバッガーは 10倍以上遅い感じがします。 言語使用が魅力的なだけに、デバッガーの遅さが難点として浮き出てしまっ ている感じがします。 私もぜひ、高速デバッガーが標準で添付されることを望みます。 (要求ばかりですみません) もりた