rbtrace 0.3.9 → 0.3.10

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rbtrace (0.3.9)
4
+ rbtrace (0.3.10)
5
5
  ffi (>= 1.0.5)
6
6
  msgpack (>= 0.4.3)
7
7
  trollop (>= 1.16.2)
data/bin/rbtrace CHANGED
@@ -550,7 +550,7 @@ class RBTracer
550
550
  print ')'
551
551
  @last_tracer[:arglist] = false
552
552
  end
553
- puts
553
+ newline
554
554
  if @show_time
555
555
  t = Time.at(time/1_000_000)
556
556
  print t.strftime("%H:%M:%S.")
@@ -563,7 +563,7 @@ class RBTracer
563
563
  @max_nesting = @nesting if @nesting > @max_nesting
564
564
  @last_nesting = @nesting
565
565
  @last_tracer = tracer
566
- tracer[:last] = name
566
+ tracer[:last] = "#{name}:#{@nesting-1}"
567
567
 
568
568
  when 'return','creturn'
569
569
  time, tracer_id = *cmd
@@ -574,11 +574,11 @@ class RBTracer
574
574
  if start = tracer[:times].pop
575
575
  name = tracer[:names].pop
576
576
  diff = time - start
577
- @last_tracer[:arglist] = false if @last_tracer and @last_tracer[:last] != name
577
+ @last_tracer[:arglist] = false if @last_tracer and @last_tracer[:last] != "#{name}:#{@nesting}"
578
578
 
579
579
  print ')' if @last_tracer and @last_tracer[:arglist]
580
580
 
581
- unless tracer == @last_tracer and @last_tracer[:last] == name
581
+ unless tracer == @last_tracer and @last_tracer[:last] == "#{name}:#{@nesting}"
582
582
  newline
583
583
  print ' '*16 if @show_time
584
584
  print @prefix*@nesting if @nesting > 0
@@ -653,7 +653,7 @@ class RBTracer
653
653
  parser = Trollop::Parser.new do
654
654
  version <<-EOS
655
655
  rbtrace: like strace, but for ruby code
656
- version 0.3.9
656
+ version 0.3.10
657
657
  (c) 2011 Aman Gupta (tmm1)
658
658
  http://github.com/tmm1/rbtrace
659
659
  EOS
data/ext/rbtrace.c CHANGED
@@ -91,6 +91,7 @@ static struct {
91
91
  uint32_t threshold;
92
92
 
93
93
  unsigned int num;
94
+ unsigned int num_slow;
94
95
  rbtracer_t list[MAX_TRACERS];
95
96
 
96
97
  key_t mqo_key;
@@ -118,6 +119,7 @@ rbtracer = {
118
119
  .threshold = 250,
119
120
 
120
121
  .num = 0,
122
+ .num_slow = 0,
121
123
  .list = {},
122
124
 
123
125
  .mqo_key = 0,
@@ -356,13 +358,16 @@ event_hook(rb_event_t event, NODE *node, VALUE self, ID mid, VALUE klass)
356
358
  }
357
359
  }
358
360
 
359
- // no tracer for current method call
360
- if (!tracer) goto out;
361
+ if (tracer) {
362
+ // matched something, all good!
363
+ } else if (rbtracer.slow && rbtracer.num_slow == 0) {
364
+ // in global slow mode, so go ahead.
365
+ } else {
366
+ goto out;
367
+ }
361
368
 
362
- } else if (rbtracer.slow) {
363
- // trace anything that's slow
364
- // fall through to slow logic below, after the previous conditional
365
- // selects specific methods we might be interested in
369
+ } else if (rbtracer.slow && rbtracer.num_slow == 0) {
370
+ // trace everything that's slow
366
371
 
367
372
  } else {
368
373
  // what are we doing here?
@@ -539,6 +544,9 @@ rbtracer_remove(char *query, int id)
539
544
  }
540
545
 
541
546
  rbtracer.num--;
547
+ if (tracer->is_slow)
548
+ rbtracer.num_slow--;
549
+
542
550
  if (rbtracer.num == 0)
543
551
  event_hook_remove();
544
552
  }
@@ -674,6 +682,8 @@ rbtracer_add(char *query, bool is_slow)
674
682
  event_hook_install();
675
683
 
676
684
  rbtracer.num++;
685
+ if (tracer->is_slow)
686
+ rbtracer.num_slow++;
677
687
 
678
688
  out:
679
689
  rbtrace__send_event(2,
data/rbtrace.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'rbtrace'
3
- s.version = '0.3.9'
3
+ s.version = '0.3.10'
4
4
  s.homepage = 'http://github.com/tmm1/rbtrace'
5
5
 
6
6
  s.authors = 'Aman Gupta'
data/test.sh CHANGED
@@ -23,7 +23,7 @@ trace() {
23
23
  echo ------------------------------------------
24
24
  echo ./bin/rbtrace -p $PID $*
25
25
  echo ------------------------------------------
26
- ./bin/rbtrace -p $PID -r 3 $* &
26
+ ./bin/rbtrace -p $PID $* &
27
27
  sleep 2
28
28
  kill $!
29
29
  wait $! || true
@@ -40,6 +40,8 @@ trace --gc -m Dir.
40
40
  trace --slow=250
41
41
  trace --slow=250 --slow-methods sleep
42
42
  trace --gc -m Dir. --slow=250 --slow-methods sleep
43
- trace --firehose
43
+ trace --gc -m Dir. --slow=250
44
+ trace -m Process. Dir.pwd "Proc#call"
45
+ # trace --firehose
44
46
 
45
47
  cleanup
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: 1
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 9
10
- version: 0.3.9
9
+ - 10
10
+ version: 0.3.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Aman Gupta