rbtrace 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/bin/rbtrace +2 -2
  2. data/ext/rbtrace.c +5 -6
  3. data/rbtrace.gemspec +1 -1
  4. data/server.rb +1 -1
  5. metadata +3 -3
data/bin/rbtrace CHANGED
@@ -132,7 +132,7 @@ class RBTracer
132
132
  @qo = MsgQ.msgget(-pid, 0666)
133
133
 
134
134
  if @qi == -1 || @qo == -1
135
- raise ArgumentError, 'pid is not listening for messages (did you `require "rbtrace"`)'
135
+ raise ArgumentError, 'pid is not listening for messages, did you `require "rbtrace"`'
136
136
  end
137
137
 
138
138
  @tracers = Hash.new{ |h,k|
@@ -376,7 +376,7 @@ class RBTracer
376
376
  opts = Trollop.options do
377
377
  version <<-EOS
378
378
  rbtrace: like strace, but for ruby code
379
- version 0.2.4
379
+ version 0.2.5
380
380
  (c) 2011 Aman Gupta (tmm1)
381
381
  http://github.com/tmm1/rbtrace
382
382
  EOS
data/ext/rbtrace.c CHANGED
@@ -220,6 +220,7 @@ event_hook(rb_event_t event, NODE *node, VALUE self, ID mid, VALUE klass)
220
220
  if (!rbtracer.list[i].klass || rbtracer.list[i].klass == klass) {
221
221
  if (!rbtracer.list[i].self || rbtracer.list[i].self == self) {
222
222
  tracer = &rbtracer.list[i];
223
+ break;
223
224
  }
224
225
  }
225
226
  }
@@ -248,24 +249,22 @@ event_hook(rb_event_t event, NODE *node, VALUE self, ID mid, VALUE klass)
248
249
  size_t len = strlen(expr);
249
250
 
250
251
  VALUE val = Qnil;
251
- char buffer[len+50];
252
+ char buffer[len+150];
252
253
  char *result = NULL;
253
254
 
254
255
  if (len == 4 && strcmp("self", expr) == 0) {
255
256
  val = rb_inspect(self);
256
257
 
257
258
  } else if (len == 10 && strcmp("__source__", expr) == 0) {
258
- snprintf(buffer, len+50, "\"%s:%d\"", rb_sourcefile(), rb_sourceline());
259
+ snprintf(buffer, len+150, "\"%s:%d\"", rb_sourcefile(), rb_sourceline());
259
260
  result = buffer;
260
261
 
261
262
  } else if (len > 1 && expr[0] == '@') {
262
263
  val = rb_inspect(rb_ivar_get(self, rb_intern(expr)));
263
264
 
264
265
  } else if (event == RUBY_EVENT_CALL) {
265
- snprintf(buffer, len+50, "(begin; %s; rescue Exception => e; e; end).inspect", expr);
266
-
267
- VALUE str = rb_str_new2(buffer);
268
- val = rb_obj_instance_eval(1, &str, self);
266
+ snprintf(buffer, len+150, "(begin; ObjectSpace._id2ref(%p >> 1).instance_eval{ %s }; rescue Exception => e; e; end).inspect", (void*)self, expr);
267
+ val = rb_eval_string_protect(buffer, 0);
269
268
  }
270
269
 
271
270
  if (RTEST(val) && TYPE(val) == T_STRING) {
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.4'
3
+ s.version = '0.2.5'
4
4
  s.homepage = 'http://github.com/tmm1/rbtrace'
5
5
 
6
6
  s.authors = "Aman Gupta"
data/server.rb CHANGED
@@ -12,7 +12,7 @@ while true
12
12
  Dir.chdir("/tmp") do
13
13
  Dir.pwd
14
14
  Process.pid
15
- 'hello'.multiply_vowels(3)
15
+ 'hello'.multiply_vowels(3){ :ohai }
16
16
  sleep rand*0.5
17
17
  end
18
18
  }.call
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: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
9
+ - 5
10
+ version: 0.2.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Aman Gupta