Bug #3660
Trace events seem to be missing
| Status: | Rejected | Start date: | 08/06/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | - | |||
| Target version: | 1.9.3 | |||
| ruby -v: | ruby 1.9.3dev (2010-07-22 trunk 28717) [i386-mingw32] |
Description
When tracing this code:
a = [1,2,3]
a.each{|n|
p n
}
with 1.9.1 I get "expected output" list this:
http://gist.github.com/506859
However, with 1.9.2+ I get almost no output:
C:\dev\ruby\ruby-prof>ruby -vrtracer test_array.rb
ruby 1.9.2dev (2010-07-02) [i386-mingw32]
#0:test_array.rb:1::-: a = [1,2,3]
#0:test_array.rb:2::-: a.each{|n|
#0:test_array.rb:3::-: p n
1
#0:test_array.rb:3::-: p n
2
#0:test_array.rb:3::-: p n
3
This on windows and Linux.
Unless it's expected, in which case it's just missing the return statement.
Thanks.
-r
History
Updated by rogerdpack (Roger Pack) over 1 year ago
still the case with ruby 1.9.3dev (2010-08-26 trunk 29104) [i386-mingw32]
Updated by shyouhei (Shyouhei Urabe) over 1 year ago
- Status changed from Open to Assigned
- Assignee set to ko1 (Koichi Sasada)
Updated by wanabe (_ wanabe) over 1 year ago
- Assignee changed from ko1 (Koichi Sasada) to keiju (Keiju Ishitsuka)
It is intended. see r24226. But I don't know the reason of this change. Keiju, I would appreciate it if you could explain why.
Updated by rocky (Rocky Bernstein) over 1 year ago
I think this was fixed by r29914 which changes
elsif caller.size <= 1
to:
elsif caller.count {|bt| /\A<internal:[^<>]+>:/ !~ bt} <= 1
Updated by headius (Charles Nutter) over 1 year ago
It's worth mentioning that tracer is broken in JRuby for the same reason. Depending on caller to be the same all the time is a bit fragile. Ideally there'd be a better marker for whether tracer should be started up right away or not.
Updated by rogerdpack (Roger Pack) over 1 year ago
This isn't actually a problem with "-rtracer" not turning Tracer.on, it's that it does output, but outputs far fewer symbols (mostly missing tons of returns). Cheers! -r
Updated by rogerdpack (Roger Pack) about 1 year ago
Keiju was this expected? I'm thinking it wasn't...
Updated by nahi (Hiroshi Nakamura) 11 months ago
- Target version set to 1.9.3
Updated by keiju (Keiju Ishitsuka) 11 months ago
- Status changed from Assigned to Rejected
These trace messages is spec that ignore c-func and c-return event, now.
If you want to print c-func and c-return event, please set:
Tracer::display_c_call = true
Updated by Anonymous 8 days ago
> If you want to print c-func and c-return event, please set:
>
> Tracer::display_c_call = true
> ...
> However, with 1.9.2+ I get almost no output:
>
> C:\dev\ruby\ruby-prof>ruby -vrtracer test_array.rb
> ruby 1.9.2dev (2010-07-02) [i386-mingw32]
> #0:test_array.rb:1::-: a = [1,2,3]
> #0:test_array.rb:2::-: a.each{|n|
> #0:test_array.rb:3::-: p n
> 1
> #0:test_array.rb:3::-: p n
> 2
> #0:test_array.rb:3::-: p n
> 3
It works.
Still seems a bit odd to me that it doesn't appear to log a "return"
call from the #each method unless you have display_c_call turned on
[?]