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 +1 -1
- data/bin/rbtrace +5 -5
- data/ext/rbtrace.c +16 -6
- data/rbtrace.gemspec +1 -1
- data/test.sh +4 -2
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/bin/rbtrace
CHANGED
@@ -550,7 +550,7 @@ class RBTracer
|
|
550
550
|
print ')'
|
551
551
|
@last_tracer[:arglist] = false
|
552
552
|
end
|
553
|
-
|
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.
|
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
|
-
|
360
|
-
|
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
|
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
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
|
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 --
|
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