rbtrace 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/README.md +1 -1
  2. data/bin/rbtrace +16 -5
  3. data/ext/rbtrace.c +1 -1
  4. data/rbtrace.gemspec +1 -1
  5. metadata +3 -3
data/README.md CHANGED
@@ -119,7 +119,7 @@ rbtrace works on ruby 1.8 and 1.9, running on linux or mac osx.
119
119
 
120
120
  ### get values of variables and other expressions
121
121
 
122
- % rbtrace -p 87854 -m "String#gsub(self)" "String#*(self)" "String#multiply_vowels(self, self.length, num)"
122
+ % rbtrace -p 87854 -m "String#gsub(self, @test)" "String#*(self)" "String#multiply_vowels(self, self.length, num)"
123
123
  *** attached to process 87854
124
124
 
125
125
  String#multiply_vowels(self="hello", self.length=5, num=3)
data/bin/rbtrace CHANGED
@@ -63,8 +63,15 @@ class RBTracer
63
63
  if File.exists?(msgmnb = "/proc/sys/kernel/msgmnb")
64
64
  curr = File.read(msgmnb).to_i
65
65
  max = 1024*1024
66
+ cmd = "sysctl kernel.msgmnb=#{max}"
67
+
66
68
  if curr < max
67
- STDERR.puts "*** run `sudo sysctl kernel.msgmnb=#{max}` to prevent losing events (currently: #{curr} bytes)"
69
+ if Process.uid == 0
70
+ STDERR.puts "*** running `#{cmd}` for you to prevent losing events (currently: #{curr} bytes)"
71
+ system(cmd)
72
+ else
73
+ STDERR.puts "*** run `sudo #{cmd}` to prevent losing events (currently: #{curr} bytes)"
74
+ end
68
75
  end
69
76
  end
70
77
  end
@@ -122,7 +129,7 @@ class RBTracer
122
129
  rescue Errno::ESRCH
123
130
  raise ArgumentError, 'invalid pid'
124
131
  rescue Errno::EPERM
125
- raise ArgumentError, 'could not signal process (run as root)'
132
+ raise ArgumentError, 'could not signal process, are you running as root?'
126
133
  end
127
134
 
128
135
  Process.kill 'URG', @pid
@@ -148,7 +155,7 @@ class RBTracer
148
155
  @nesting = 0
149
156
  @last_tracer = nil
150
157
  @out = STDOUT
151
- @prefix = ' '
158
+ @prefix = ' '
152
159
  @show_time = false
153
160
  @show_duration = true
154
161
  end
@@ -241,6 +248,10 @@ class RBTracer
241
248
 
242
249
  def recv_cmd(block=true)
243
250
  MsgQ::EventMsg.recv_cmd(@qi, block)
251
+ rescue Errno::EINTR
252
+ # on linux, an incoming signal will interrupt msgrcv()
253
+ # regardless of what SA_RESTART is set to
254
+ retry
244
255
  end
245
256
 
246
257
  def print(*args)
@@ -379,7 +390,7 @@ class RBTracer
379
390
  parser = Trollop::Parser.new do
380
391
  version <<-EOS
381
392
  rbtrace: like strace, but for ruby code
382
- version 0.2.6
393
+ version 0.2.7
383
394
  (c) 2011 Aman Gupta (tmm1)
384
395
  http://github.com/tmm1/rbtrace
385
396
  EOS
@@ -460,7 +471,7 @@ EOS
460
471
 
461
472
  opt :prefix,
462
473
  "prefix nested method calls with N spaces",
463
- :default => 1,
474
+ :default => 2,
464
475
  :short => '-r'
465
476
 
466
477
  opt :config,
data/ext/rbtrace.c CHANGED
@@ -262,7 +262,7 @@ event_hook(rb_event_t event, NODE *node, VALUE self, ID mid, VALUE klass)
262
262
  } else if (len > 2 && expr[0] == '@' && expr[1] != '@') {
263
263
  val = rb_inspect(rb_ivar_get(self, rb_intern(expr)));
264
264
 
265
- } else if (event == RUBY_EVENT_CALL) {
265
+ } else {
266
266
  snprintf(buffer, len+150, "(begin; ObjectSpace._id2ref(%p >> 1).instance_eval{ %s }; rescue Exception => e; e; end).inspect", (void*)self, expr);
267
267
  val = rb_eval_string_protect(buffer, 0);
268
268
  }
data/rbtrace.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'rbtrace'
3
- s.version = '0.2.6'
3
+ s.version = '0.2.7'
4
4
  s.homepage = 'http://github.com/tmm1/rbtrace'
5
5
 
6
6
  s.authors = "Aman Gupta"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbtrace
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 6
10
- version: 0.2.6
9
+ - 7
10
+ version: 0.2.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Aman Gupta