[#3536] Re: [ruby-list:10256] Re: for が修飾子だったら — Junichi Kurokawa <jun@...>

Reply-To: ruby-devとしました。

15 messages 1998/10/22

[ruby-dev:3530] Re: GC target (Re: [ruby-list:10035] Re: Ruby/Gtk text widget)

From: Takashi Nakai <nakai@...1.sys.to.casio.co.jp>
Date: 1998-10-13 20:48:42 UTC
List: ruby-dev #3530
ど〜も、中井と申します。 /['o']

下記の話題でのGC絡みのデバッグについてなのですが、簡単そうな
アイディアを思い付きましたので検討していただければ幸いです。

1.GC絡みのデバッグ用のコンパイルスイッチを用意して、

    そのスイッチが定義されている場合は、

2.こまめにGCをかけて、参照されていない部分は回収しちゃう
    でも、印をつけるだけでメモリーの再利用はしない。

3.アクセスのたびに、上記の印をがついているオブジェクトを
    参照していないかのチェックする。

と言うものです。

「3.アクセスのたび…」が難しい場合は、「2.…印をつける…」
所で、必要な情報以外は、死にやすい(トラップをかけやすい?)デー
タで初期化してしまっておくだけでもデバッガーで追っかけやすいのでは
ないでしょうか。

この方法の欠点は、メモリーを再利用しないので、長時間動作後に
発生するエラー等のデバッグは難しい(バグにぶつかる前にメモリー
がなくなってしまう)ことでしょう。

でも、以外と簡単に対応出来そうなので、正式版に入っていなくても
必要に応じて組み込めそうな気がします。

それでは、失礼いたします。


matz@netlab.co.jp (Yukihiro Matsumoto) さんは書きました:
>まつもと ゆきひろです
>
>In message "[ruby-dev:3524] GC target (Re: [ruby-list:10035] Re: Ruby/Gtk text 
widget)"
>    on 98/10/13, "D.Kanda" <MAP2303@mapletown.net> writes:
>
>|  かんだです。
>
>|  これ、GC で落ちているんですけれど、何を GC しようとしたかっていう情報は
>|得られませんかね? クラス名だけでもいいですので。もしくはGC を OFF にして、
>|参照が無くなったらすぐに free するように動作させられてもいいです。
>
>うにゃ? GCで落ちるというのはだいたい
>
>  (1) 参照されてないから勝手に回収されちゃう
>  (2) 回収された領域をアクセスしにいっちゃう
>
>という独立した2段階からなっていて,クラス名が分かるのは前者,
>実際に落ちるのは後者ですから,落ちるタイミングでクラス名を知
>るのはかなり難しいですね.
>
>なんか良い手は無いかなあ.
>
>|  GC のタイミングはプログラムの流れと独立だから、デバッガで辿っても患部の
>|発見が難しいので。
>
>制御の流れとは独立ですが,場所は固定なのでちょっと慣れると
>「ここで落ちると言うことは,ここが保護されてないんだな」と分
>かるようになります.
>                                まつもと ゆきひろ /:|)
>

--
T.NAKAI  nakai@m1.sys.to.casio.co.jp

In This Thread

Prev Next