2008年2月14日

[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@xxxxx]
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倍以上遅い感じがします。

言語使用が魅力的なだけに、デバッガーの遅さが難点として浮き出てしまっ
ている感じがします。
私もぜひ、高速デバッガーが標準で添付されることを望みます。
(要求ばかりですみません)

もりた

投稿者 xml-rpc : 2008年2月14日 11:15
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69787
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。