rbtrace 0.3.9 → 0.3.10

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