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.
- data/README.md +1 -1
- data/bin/rbtrace +16 -5
- data/ext/rbtrace.c +1 -1
- data/rbtrace.gemspec +1 -1
- 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
|
-
|
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
|
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.
|
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 =>
|
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
|
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
metadata
CHANGED