[#7284] font-lock in ruby-mode.el — Shugo Maeda <shugo@...>
前田です。
7 messages
1999/07/06
[#7291] dualstack-httpd.rb — gotoken@... (GOTO Kentaro)
itojunさん作 sample/dualstack-httpd.rb の応答に些細な間違い
5 messages
1999/07/08
[#7300] resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>
あんまり ruby-dev な話でも無いのですが、ちょっとした機能拡張の提案なので、
12 messages
1999/07/12
[#7321] Re: resolver を呼ばない UDPsocket#recvfrom
— Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>
1999/07/15
From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@csce.kyushu-u.ac.jp>
[#7367] Re: resolver を呼ばない UDPsocket#recvfrom
— matz@... (Yukihiro Matsumoto)
1999/07/19
まつもと ゆきひろです
[#7301] Re: mod_ruby/0.1.2 with Apache/1.3.6 on Solaris/2.5.1 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
11 messages
1999/07/13
[#7302] Re: mod_ruby/0.1.2 with Apache/1.3.6 on Solaris/2.5.1
— Katsuyuki Komatsu <komatsu@...>
1999/07/13
小松です。
[#7313] Ruby 1.3.5 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.5 is out, check out:
59 messages
1999/07/15
[#7314] Re: Ruby 1.3.5
— "NAKAMURA, Hiroshi" <nakahiro@...>
1999/07/15
なひです.
[#7315] Re: Ruby 1.3.5
— matz@... (Yukihiro Matsumoto)
1999/07/15
まつもと ゆきひろです
[#7318] Re: Ruby 1.3.5
— WATANABE Hirofumi <watanabe@...>
1999/07/15
わたなべです.
[#7326] Re: Ruby 1.3.5
— Wakou Aoyama <wakou@...>
1999/07/15
青山です。
[#7331] Re: Ruby 1.3.5
— matz@... (Yukihiro Matsumoto)
1999/07/16
まつもと ゆきひろです
[#7340] Re: Ruby 1.3.5
— Wakou Aoyama <wakou@...>
1999/07/16
青山です。
[#7355] Re: Ruby 1.3.5
— Wakou Aoyama <wakou@...>
1999/07/17
青山です。
[#7368] Re: Ruby 1.3.5
— matz@... (Yukihiro Matsumoto)
1999/07/19
まつもと ゆきひろです
[#7373] Re: Ruby 1.3.5
— Shin-ichiro Hara <sinara@...>
1999/07/19
原です。
[#7374] Re: Ruby 1.3.5
— matz@... (Yukihiro Matsumoto)
1999/07/19
まつもと ゆきひろです
[#7382] Re: Ruby 1.3.5
— Wakou Aoyama <wakou@...>
1999/07/19
青山です。
[#7386] Re: Ruby 1.3.5
— matz@... (Yukihiro Matsumoto)
1999/07/21
まつもと ゆきひろです
[#7388] Re: Ruby 1.3.5
— Wakou Aoyama <wakou@...>
1999/07/21
青山です。
[#7389] Re: Ruby 1.3.5
— Wakou Aoyama <wakou@...>
1999/07/21
青山です。
[#7391] Re: Ruby 1.3.5
— Shin-ichiro Hara <sinara@...>
1999/07/21
原です。
[#7392] Re: Ruby 1.3.5
— matz@... (Yukihiro Matsumoto)
1999/07/21
まつもと ゆきひろです
[#7393] Re: Ruby 1.3.5
— matz@... (Yukihiro Matsumoto)
1999/07/21
まつもと ゆきひろです
[#7394] Re: Ruby 1.3.5
— Wakou Aoyama <wakou@...>
1999/07/21
青山です。
[#7327] [PATCH] ext/extmk.rb.in, instruby.rb, lib/mkmf.rb — Katsuyuki Komatsu <komatsu@...>
小松です.
5 messages
1999/07/16
[#7347] AC_OBJEXT — Katsuyuki Komatsu <komatsu@...>
小松です。
10 messages
1999/07/16
[#7353] const assign — Minero Aoki <aamine@...>
あおきです。
7 messages
1999/07/16
[#7387] [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>
早坂@会津大学です。
10 messages
1999/07/21
[#7401] Re: [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD
— matz@... (Yukihiro Matsumoto)
1999/07/23
まつもと ゆきひろです
[#7403] Re: [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD
— Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>
1999/07/23
早坂@会津大学です。
[#7404] Re: [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD
— matz@... (Yukihiro Matsumoto)
1999/07/23
まつもと ゆきひろです
[#7419] File#expand_path ignore drive letter on mswin32 — Katsuyuki Komatsu <komatsu@...>
小松です。
8 messages
1999/07/26
[#7421] Re: File#expand_path ignore drive letter on mswin32
— KIMURA Koichi <kimura@...>
1999/07/26
[#7422] Re: File#expand_path ignore drive letter on mswin32
— WATANABE Hirofumi <watanabe@...>
1999/07/26
わたなべです.
[#7428] [PATCH] tools.rb — WATANABE Hirofumi <watanabe@...>
わたなべです.
8 messages
1999/07/27
[#7435] Re: [PATCH] tools.rb
— matz@... (Yukihiro Matsumoto)
1999/07/27
まつもと ゆきひろです
[#7444] dualstack-*.rb on mswin32 — Katsuyuki Komatsu <komatsu@...>
小松です。
7 messages
1999/07/27
[#7466] [PATCH] for djgpp — WATANABE Hirofumi <watanabe@...>
わたなべです.
21 messages
1999/07/29
[#7467] Re: [PATCH] for djgpp
— Katsuyuki Komatsu <komatsu@...>
1999/07/29
小松です。
[#7549] Re: [PATCH] for djgpp
— okabe katsuyuki <hgc02147@...>
1999/08/05
binsuffixを導入した岡部です(^^;
[#7550] Re: [PATCH] for djgpp
— Katsuyuki Komatsu <komatsu@...>
1999/08/06
小松です。
[#7557] Re: [PATCH] for djgpp
— okabe katsuyuki <hgc02147@...>
1999/08/07
岡部です。
[#7573] Re: [PATCH] for djgpp
— EGUCHI Osamu <eguchi@...>
1999/08/08
えぐち@エスアンドイー です。
[#7598] Re: [PATCH] for djgpp
— okabe katsuyuki <hgc02147@...>
1999/08/10
岡部です。
[#7471] Range#each — WATANABE Hirofumi <watanabe@...>
わたなべです.
7 messages
1999/07/29
[#7501] [PATCH] mswin32 tcltklib for Tcl/Tk 8.0jp — Katsuyuki Komatsu <komatsu@...>
小松です。
5 messages
1999/07/30
[#7503] [PATCH] find_library() — Katsuyuki Komatsu <komatsu@...>
小松です。
9 messages
1999/07/30
[#7507] Re: [PATCH] find_library()
— matz@... (Yukihiro Matsumoto)
1999/07/30
まつもと ゆきひろです
[#7517] Re: [PATCH] find_library()
— Katsuyuki Komatsu <komatsu@...>
1999/08/01
小松です。
[#7529] [PATCH] for mswin32 final (Re: [PATCH] find_library())
— Katsuyuki Komatsu <komatsu@...>
1999/08/02
小松です。
[#7508] [BUG?] install failed — Yasuhiro Fukuma <yasuf@...>
福間%port作成中@福岡 です。
7 messages
1999/07/30
[ruby-dev:7323] [Patch] debug.rb
From:
"NAKAMURA, Hiroshi" <nakahiro@...>
Date:
1999-07-15 14:25:57 UTC
List:
ruby-dev #7323
なひです.
> From: Yukihiro Matsumoto [mailto:matz@netlab.co.jp]
> Sent: Thursday, July 15, 1999 6:13 PM
> |ついでにlist -やlist連打機能もなくなっているので,
> |そのうちまたPatchを作ろうかと思っています.
> |が,なんか,Michaelさんに申し訳ないような気がして躊躇していたり.^^;
> |
> |gdb形式に戻したら怒るかなー.うーん.
>
> patchは歓迎します。gdb形式で構いません。つーのも、それがある
> べき姿だからです。Michaelさんには...私から説明しましょう。
gdbに近いかどうか検証の余地はありますが,とりあえずup/downを元に戻し,
またこれまでに実装済みだった部分を追加しました.
ついでに混乱の元となっていた(?),
caller(0)と@framesの順序について,同じ順序になるように
@framesを入れ替えました.
というわけで1.3.5からのPatchですが,まだ満足に検証してないので,
もし試す方が居らっしゃる場合は,ご注意ください.^^;
もう少し実装したい機能があるので,
それが終わったらまたPatch出します...
けっこうでかいス.^^;
# Michaelの言う「例外からの復帰」は,interpreterの助け無しには
# 難しそうですね...元々「いちかばちか」になるし.
## って話は元のMLでやんなさい > なひ
/ / /
Index: debug.rb
===================================================================
RCS file: /home/cvs/ruby/lib/debug.rb,v
retrieving revision 1.1.1.2.2.4
diff -u -r1.1.1.2.2.4 debug.rb
--- debug.rb 1999/07/15 07:59:58 1.1.1.2.2.4
+++ debug.rb 1999/07/15 14:14:59
@@ -1,22 +1,12 @@
-
class DEBUGGER__
-
- def max(a,b)
- if (a<b); b; else a; end
- end
-
- def min(a,b)
- if (a<=b); a; else b; end
- end
-
trap("INT") { DEBUGGER__::CONTEXT.interrupt }
$DEBUG = TRUE
def initialize
@break_points = []
@stop_next = 1
@frames = [nil]
- @frame_pos = nil # nil means not '0' but `unknown'.
@last_file = nil
+ @last = [nil, nil]
@scripts = {}
end
@@ -41,16 +31,17 @@
end
def debug_command(file, line, id, binding)
+ frame_pos = 0
binding_file = file
binding_line = line
- debug_line = {}
+ previus_line = nil
if (ENV['EMACS'] == 't')
STDOUT.printf "\032\032%s:%d:\n", binding_file, binding_line
else
STDOUT.printf "%s:%d:%s", binding_file, binding_line,
line_at(binding_file, binding_line)
end
- @frames[-1] = binding
+ @frames[0] = binding
STDOUT.print "(rdb:-) "
STDOUT.flush
while input = STDIN.gets
@@ -60,10 +51,10 @@
else
DEBUG_LAST_CMD[0] = input
end
- case input
- when /^b(reak)?\s+(([^:\n]+:)?.+)/
- pos = $2
+ case input
+ when /^b(?:reak)?\s+((?:[^:\n]+:)?.+)/
+ pos = $1
if pos.index ":"
file, pos = pos.split(":")
end
@@ -78,15 +69,15 @@
pname
@break_points.push [file, pos]
- when /^b(reak)?$/
+ when /^b(?:reak)?$/, /^i(?:nfo) b(?:reak)?$/
n = 0
for f, p in @break_points
STDOUT.printf "%d %s:%s\n", n, f, p
n += 1
end
- when /^del(ete)?(\s+(\d+))?$/
- pos = $3
+ when /^del(?:ete)?(?:\s+(\d+))?$/
+ pos = $1
unless pos
STDOUT.print "clear all breakpoints? (y/n) "
STDOUT.flush
@@ -107,99 +98,111 @@
end
end
- when /^c(ont)?$/
+ when /^c(?:ont)?$/
return
- when /^s(tep)?\s*(\d+)?$/
- if $2
- lev = Integer($2)
+ when /^s(?:tep)?\s*(\d+)?$/
+ if $1
+ lev = Integer($1)
else
lev = 1
end
@stop_next = lev
return
- when /^n(ext)?\s*(\d+)?$/
- if $2
- lev = Integer($2)
+ when /^n(?:ext)?\s*(\d+)?$/
+ if $1
+ lev = Integer($1)
else
lev = 1
end
@stop_next = lev
- @no_step = @frames.size
+ @no_step = @frames.size - frame_pos
return
- when /^i(?:nfo)?/, /^w(?:here)?/
- fs = @frames.size
- tb = caller(0)[-fs..-1].reverse
- unless @frame_pos; @frame_pos = fs - 1; end
-
- (fs-1).downto(0){ |i|
- if (@frame_pos == i)
- STDOUT.printf "--> frame %d:%s\n", i, tb[i]
+ when /^w(?:here)?$/, /^f(?:rame)?$/
+ at = caller(0)
+ 0.upto( @frames.size - 1 ) do |n|
+ if ( frame_pos == n )
+ STDOUT.printf "--> #%d %s\n", n, at[-(@frames.size - n)]
else
- STDOUT.printf " frame %d:%s\n", i, tb[i]
- end
- }
-
- when /^l(ist)?$/
- fs = @frames.size
- tb = caller(0)[-fs..-1].reverse
- unless @frame_pos; @frame_pos = fs - 1; end
-
- file, line, func = tb[@frame_pos].split(":")
- line = line.to_i
- b = line - 1
- e = line + 9
- line_at(file, line)
- if lines = @scripts[file] and lines != TRUE
- lines = [0] + lines # Simple offset adjust
- b = max(0, b); e = min(lines.size-1, e)
- for l in b..e
- if (l == line)
- STDOUT.printf "--> %5d %s", l, lines[l]
- else
- STDOUT.printf " %5d %s", l, lines[l]
- end
+ STDOUT.printf " #%d %s\n", n, at[-(@frames.size - n)]
end
- else
- STDOUT.printf "no sourcefile available for %s\n", file
end
- when /^d(?:own)?\s*(\d+)??$/
- if $1; lev = Integer($1); else lev = 1; end
- unless @frame_pos; @frame_pos = 0; end
- @frame_pos -= lev
- if @frame_pos < 0
- STDOUT.print "at stack bottom\n"
- @frame_pos = 0
- else
- STDOUT.printf "at level %d\n", @frame_pos
+ when /^l(?:ist)?(?:\s+(.+))?$/
+ if !$1
+ b = previus_line ? previus_line + 10 : binding_line - 5
+ e = b + 9
+ elsif $1 == '-'
+ b = previus_line ? previus_line - 10 : binding_line - 5
+ e = b + 9
+ else
+ b, e = $1.split(/[-,]/)
+ if e
+ b = Integer(b)
+ e = Integer(e)
+ else
+ b = Integer(b) - 5
+ e = b + 9
+ end
+ end
+ previus_line = b
+ STDOUT.printf "[%d, %d] in %s\n", b, e, binding_file
+ line_at(binding_file, binding_line)
+ if lines = @scripts[binding_file] and lines != TRUE
+ n = 0
+ b.upto(e) do |n|
+ if n > 0 && lines[n-1]
+ if ( n == binding_line )
+ STDOUT.printf "--> %d %s\n", n, lines[n-1].chomp
+ else
+ STDOUT.printf " %d %s\n", n, lines[n-1].chomp
+ end
+ end
+ end
+ else
+ STDOUT.printf "no sourcefile available for %s\n", binding_file
+ end
+
+ when /^up\s*(\d+)?$/
+ previus_line = nil
+ if $1
+ lev = Integer($1)
+ else
+ lev = 1
+ end
+ frame_pos += lev
+ if frame_pos >= @frames.size
+ frame_pos = @frames.size - 1
+ STDOUT.print "at toplevel\n"
end
- binding = @frames[@frame_pos]
-
- when /^u(?:p)?\s*(\d+)?$/
- if $1; lev = Integer($1); else lev = 1; end
- unless @frame_pos; @frame_pos = @frames.size - 1; end
- @frame_pos += lev
- p @frame_pos
- if @frame_pos >= @frames.size
- STDOUT.print "at toplevel\n"
- @frame_pos = nil
- else
- binding = @frames[@frame_pos]
- frame_info = caller(4)[-(@frame_pos+1)]
- STDOUT.print "at #{frame_info}\n"
- frame_info.sub( /:in `.*'$/, '' ) =~ /^(.*):(\d+)$/ #`
- binding_file, binding_line = $1, $2.to_i
- binding = @frames[@frame_pos]
+ binding = @frames[frame_pos]
+ info, binding_file, binding_line = frame_info(frame_pos)
+ STDOUT.printf "#%d %s\n", frame_pos, info
+
+ when /^down\s*(\d+)?$/
+ previus_line = nil
+ if $1
+ lev = Integer($1)
+ else
+ lev = 1
+ end
+ frame_pos -= lev
+ if frame_pos < 0
+ frame_pos = 0
+ STDOUT.print "at stack bottom\n"
end
-
- when /^f(inish)?/
- @finish_pos = @frames.size
+ binding = @frames[frame_pos]
+ info, binding_file, binding_line = frame_info(frame_pos)
+ STDOUT.printf "#%d %s\n", frame_pos, info
+
+ when /^fi(?:nish)?$/
+ @finish_pos = @frames.size - frame_pos
+ frame_pos = 0
return
- when /^q(uit)?$/
+ when /^q(?:uit)?$/
STDOUT.print "really quit? (y/n) "
STDOUT.flush
input = STDIN.gets.chop!
@@ -217,6 +220,12 @@
end
end
+ def frame_info(pos = 0)
+ info = caller(0)[-(@frames.size - pos)]
+ info.sub( /:in `.*'$/, '' ) =~ /^(.*):(\d+)$/
+ [info, $1, $2.to_i]
+ end
+
def line_at(file, line)
lines = @scripts[file]
if lines
@@ -262,7 +271,6 @@
def excn_handle(file, line, id, binding)
fs = @frames.size
tb = caller(0)[-fs..-1]
- unless @frame_pos; @frame_pos = fs - 1; end
STDOUT.printf "%s\n", $!
for i in tb
@@ -271,11 +279,15 @@
debug_command(file, line, id, binding)
end
-
def trace_func(event, file, line, id, binding)
- if event == 'line'
- if @no_step == nil or @no_step >= @frames.size
+ case event
+ when 'line'
+ if !@no_step or @frames.size == @no_step
@stop_next -= 1
+ elsif @frames.size < @no_step
+ @stop_next = 0 # break here before leaving...
+ else
+ # nothing to do. skipped.
end
if @stop_next == 0
if [file, line] == @last
@@ -289,31 +301,26 @@
if check_break_points(file, line, binding, id)
debug_command(file, line, id, binding)
end
- end
- if event == 'call'
- @frames.push binding
+ when 'call'
+ @frames.unshift binding
if check_break_points(file, id.id2name, binding, id)
debug_command(file, line, id, binding)
end
- end
- if event == 'class'
- @frames.push binding
- end
+ when 'class'
+ @frames.unshift binding
- if event == 'return' or event == 'end'
- if @finish_pos == @frames.size
+ when 'return', 'end'
+ if @frames.size == @finish_pos
@stop_next = 1
end
- @frames.pop
- end
+ @frames.shift
- if event == 'raise'
- # @frames.push binding
+ when 'raise'
excn_handle(file, line, id, binding)
- end
+ end
@last_file = file
end