rbtrace 0.1.0 → 0.2.0
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 +1 -0
- data/README.md +110 -61
- data/bin/rbtrace +350 -135
- data/ext/.gitignore +4 -0
- data/ext/extconf.rb +3 -0
- data/ext/rbtrace.c +191 -151
- data/rbtrace.gemspec +3 -1
- data/server.rb +1 -0
- data/test.sh +32 -0
- metadata +21 -6
- data/ext/test.rb +0 -57
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
|
+
s.version = '0.2.0'
|
4
4
|
s.homepage = 'http://github.com/tmm1/rbtrace'
|
5
5
|
|
6
6
|
s.authors = "Aman Gupta"
|
@@ -13,6 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.executables << 'rbtrace'
|
14
14
|
|
15
15
|
s.add_dependency 'ffi'
|
16
|
+
s.add_dependency 'trollop'
|
16
17
|
|
17
18
|
s.summary = 'rbtrace: like strace but for ruby code'
|
19
|
+
s.description = 'rbtrace shows you method calls happening inside another ruby process in real time.'
|
18
20
|
end
|
data/server.rb
CHANGED
data/test.sh
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
set -e
|
3
|
+
|
4
|
+
make -C ext 2>&1 >/dev/null
|
5
|
+
ruby server.rb &
|
6
|
+
export PID=$!
|
7
|
+
|
8
|
+
trap cleanup SIGINT SIGTERM
|
9
|
+
cleanup() {
|
10
|
+
kill $PID
|
11
|
+
wait $PID || true
|
12
|
+
}
|
13
|
+
|
14
|
+
trace() {
|
15
|
+
echo ------------------------------------------
|
16
|
+
echo ./bin/rbtrace -p $PID $*
|
17
|
+
echo ------------------------------------------
|
18
|
+
./bin/rbtrace -p $PID -r 3 $* &
|
19
|
+
sleep 2
|
20
|
+
kill $!
|
21
|
+
wait $! || true
|
22
|
+
echo
|
23
|
+
}
|
24
|
+
|
25
|
+
trace -m sleep
|
26
|
+
trace -m sleep Dir.chdir Dir.pwd Process.pid "String#gsub" "String#*"
|
27
|
+
trace -m "Kernel#"
|
28
|
+
trace -m "String#gsub(self,@test)" "String#*(self,__source__)" "String#multiply_vowels(self,self.length,num)"
|
29
|
+
trace --slow=250
|
30
|
+
trace --firehose
|
31
|
+
|
32
|
+
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:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Aman Gupta
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-15 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -32,7 +32,21 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
-
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: trollop
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
49
|
+
description: rbtrace shows you method calls happening inside another ruby process in real time.
|
36
50
|
email: aman@tmm1.net
|
37
51
|
executables:
|
38
52
|
- rbtrace
|
@@ -44,11 +58,12 @@ files:
|
|
44
58
|
- Gemfile
|
45
59
|
- README.md
|
46
60
|
- bin/rbtrace
|
61
|
+
- ext/.gitignore
|
47
62
|
- ext/extconf.rb
|
48
63
|
- ext/rbtrace.c
|
49
|
-
- ext/test.rb
|
50
64
|
- rbtrace.gemspec
|
51
65
|
- server.rb
|
66
|
+
- test.sh
|
52
67
|
has_rdoc: true
|
53
68
|
homepage: http://github.com/tmm1/rbtrace
|
54
69
|
licenses: []
|
data/ext/test.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
class Test
|
2
|
-
def call
|
3
|
-
self[:a] = :b
|
4
|
-
end
|
5
|
-
def []=(k,v)
|
6
|
-
Another.new.call
|
7
|
-
:ok
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class Another
|
12
|
-
def call
|
13
|
-
self[:a] = :b
|
14
|
-
end
|
15
|
-
def []=(key, value)
|
16
|
-
(@hash ||= {})[key]=value
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
module Do
|
21
|
-
module It
|
22
|
-
def something
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class Slow
|
28
|
-
include Do::It
|
29
|
-
def self.something
|
30
|
-
sleep 0.01
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
require 'rbtrace'
|
35
|
-
rbtrace 'Slow.something'
|
36
|
-
rbtrace 'Do::It#something'
|
37
|
-
rbtrace '[]='
|
38
|
-
rbtrace 'call'
|
39
|
-
|
40
|
-
1.times do
|
41
|
-
Slow.something
|
42
|
-
Slow.new.something
|
43
|
-
Test.new.call
|
44
|
-
end
|
45
|
-
|
46
|
-
__END__
|
47
|
-
|
48
|
-
Slow.something <10047>
|
49
|
-
Do::It#something <4>
|
50
|
-
Test#call
|
51
|
-
Test#[]=
|
52
|
-
Another#call
|
53
|
-
Another#[]= <4>
|
54
|
-
<14>
|
55
|
-
<28>
|
56
|
-
<40>
|
57
|
-
|