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