Project

General

Profile

Bug #14582

Updated by guilhermereiscampos (Guilherme Reis Campos) over 6 years ago

Hi, 

 I am trying to use dtrace/systemtap probes and not being able to use it after the 2.5. The 2.4 version works fine. I was hoping this was fixed on 2.6-preview, but apparently not (just downloaded dev and tested). 

 I tried on OSX using dtrace and also on ubuntu (vagrant).  

 ``` 
 # test.rb 
 class Foo 

   def bar 
     100.times { "Bar" } 
   end 
 end 

 foo = Foo.new 
 foo.bar 
 # test.stp 
 probe process("/home/vagrant/.rbenv/versions/2.4.0/bin/ruby").mark("method__entry") # you probably will need to change this to your ruby path. 
 { 
	 printf("%s => %s.%s in %s:%d\n", thread_indent(1), kernel_string($arg1),kernel_string($arg2),kernel_string($arg3),$arg4); 
 } 
 probe process("/home/vagrant/.rbenv/versions/2.4.0/bin/ruby").mark("method__return") 
 { 
     printf("%s <= %s.%s in %s:%d\n", thread_indent(-1), kernel_string($arg1),kernel_string($arg2),kernel_string($arg3),$arg4); 
 }  
 ``` 

 dtrace was something similar to it. 

 I was expecting to see this output: 

 ``` 
 `` 
 # lots of calls 
 # .... 
 # then: 
   4090 ruby(9667):     <= Gem::Specification.unresolved_deps in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/specification.rb:1298 
   4095 ruby(9667):     => MonitorMixin.mon_exit in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:197 
   4100 ruby(9667):      => MonitorMixin.mon_check_owner in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:247 
   4104 ruby(9667):      <= MonitorMixin.mon_check_owner in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:251 
   4109 ruby(9667):     <= MonitorMixin.mon_exit in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:204 
   4283 ruby(9667):    <= Kernel.require in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55 
   4303 ruby(9667): <= Kernel.require in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55 
      0 ruby(9667): => Foo.bar in test.rb:3 
     16 ruby(9667): <= Foo.bar in test.rb:5 
 ``` 
 (The output above is 2.4) 

 my ruby (all versions that I tested) was install with rb-env: 
 ``` 
 RUBY_CONFIGURE_OPTS='--enable-dtrace --disable-install-doc' rbenv install 2.5.0 
 ``` 


 I am happy to provide details if required. 

 Thanks, 

Back