Fri, Jul 30, 1999 at 02:13:13PM +0900 において kikutani / sprintmail.com 曰く: > On Fri, 30 Jul 1999 12:53:46 +0900, > matz / netlab.co.jp (Yukihiro Matsumoto) wrote: > > > 私が前回「原理的には簡単なんだが」と発言したときのアイディア > > は以下の通りです。 > > > > debug.rbを改造して > > > > + UNIX domain socketを作り、そこからコマンド入出力を行う。 > > > > + UNIX domain socketに対する双方向入出力をするプログラム > > をdebugcomm.rbとすると、kterm -e ruby debugcomm.rb <path>& > > で入出力用ウィンドウを開く。 > > なるほど。ありがとうございます。 > でも、ソケットって使ったことないんだよな... やってみました。意外に簡単でした。 UNIXsocket/UNIXserver の使用例が全然ないので最初だけハマったけど。 やったことは、debug.rb を sdebug.rb にコピーし、 class DEBUGGER__ def initialize ... ... @debug_socket = "/tmp/ruby-debug" @debug_port = UNIXsocket.new(@debug_socket) end とし、あとはSTDINとSTDOUTを@debug_portにリプレースしただけ。 べつのrxvtでは以下のものを走らせている。 require "socket" debug_socket = "/tmp/ruby-debug" if FileTest.exist?(debug_socket) File.unlink debug_socket end us = UNIXserver.open(debug_socket) port = us.accept $reader = Thread.new do while true s = port.gets printf "> %s", s STDOUT.flush end end while true s = STDIN.gets printf(port, "%s", s) end この程度で一応使えてますが、C-cでdebugプロンプトに戻るのは どうやればいいんでしょうか。debug用サーバではtrapでつかまえる として、どうやってdebuggerに送るのかわかりませぬ。 -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani / sprintmail.com