rbtrace 0.2.4 → 0.2.5

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/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