rbtrace 0.4.7 → 0.4.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile.lock +4 -4
- data/LICENSE +21 -0
- data/ext/extconf.rb +2 -1
- data/ext/rbtrace.c +20 -15
- data/lib/rbtrace/cli.rb +6 -2
- data/lib/rbtrace/rbtracer.rb +1 -1
- data/lib/rbtrace/version.rb +1 -1
- data/test.sh +2 -0
- metadata +17 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a3761d428e8be7fe2d44989f4d649ddf58803273
|
4
|
+
data.tar.gz: 3b1c8033019f92df1dbe645d9b7525fa22190abf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 74bb3fdc12bac96869edb039d7c3299e140eab13a3e592dcb61afebce79df7905c5e652392ee620f36c78f1ddc7078060528cb83308e7bd31985969ae7e32a2e
|
7
|
+
data.tar.gz: 5afab515374aec50c19dc7c42c8df838b0993bd9999d21bd473bec907a6095c9762c0983c3c358e0afefaf4d8b250d5eaabfd6308265724cd2da9e007337fdf2
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rbtrace (0.4.
|
4
|
+
rbtrace (0.4.7)
|
5
5
|
ffi (>= 1.0.6)
|
6
6
|
msgpack (>= 0.4.3)
|
7
7
|
trollop (>= 1.16.2)
|
@@ -9,9 +9,9 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
ffi (1.9.
|
13
|
-
msgpack (0.
|
14
|
-
trollop (2.
|
12
|
+
ffi (1.9.8)
|
13
|
+
msgpack (0.6.0)
|
14
|
+
trollop (2.1.2)
|
15
15
|
|
16
16
|
PLATFORMS
|
17
17
|
ruby
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2011-2015 Aman Gupta
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/ext/extconf.rb
CHANGED
@@ -16,7 +16,7 @@ libdir = File.basename RbConfig::CONFIG['libdir']
|
|
16
16
|
unless File.exists?("#{CWD}/dst/#{libdir}/libmsgpackc.a")
|
17
17
|
Logging.message "Building msgpack\n"
|
18
18
|
|
19
|
-
msgpack = File.basename('msgpack-
|
19
|
+
msgpack = File.basename('msgpack-1.1.0.tar.gz')
|
20
20
|
dir = File.basename(msgpack, '.tar.gz')
|
21
21
|
cflags, ldflags = ENV['CFLAGS'], ENV['LDFLAGS']
|
22
22
|
cc = ENV['CC']
|
@@ -38,6 +38,7 @@ unless File.exists?("#{CWD}/dst/#{libdir}/libmsgpackc.a")
|
|
38
38
|
if RUBY_PLATFORM =~ /darwin/ and File.exist?("/usr/bin/gcc-4.2")
|
39
39
|
ENV['CC'] = '/usr/bin/gcc-4.2'
|
40
40
|
end
|
41
|
+
puts " -- env CFLAGS=#{ENV['CFLAGS'].inspect} LDFLAGS=#{ENV['LDFLAGS'].inspect} CC=#{ENV['CC'].inspect}"
|
41
42
|
sys("./configure --disable-dependency-tracking --disable-shared --with-pic --prefix=#{CWD}/dst/ --libdir=#{CWD}/dst/#{libdir}")
|
42
43
|
sys("make install")
|
43
44
|
end
|
data/ext/rbtrace.c
CHANGED
@@ -184,8 +184,8 @@ rbtrace__send_event(int nargs, const char *name, ...)
|
|
184
184
|
|
185
185
|
msgpack_pack_array(pk, nargs+1);
|
186
186
|
|
187
|
-
|
188
|
-
|
187
|
+
msgpack_pack_bin(pk, strlen(name));
|
188
|
+
msgpack_pack_bin_body(pk, name, strlen(name));
|
189
189
|
|
190
190
|
if (nargs > 0) {
|
191
191
|
int type;
|
@@ -238,8 +238,8 @@ rbtrace__send_event(int nargs, const char *name, ...)
|
|
238
238
|
if (!str)
|
239
239
|
str = (char *)"";
|
240
240
|
|
241
|
-
|
242
|
-
|
241
|
+
msgpack_pack_bin(pk, strlen(str));
|
242
|
+
msgpack_pack_bin_body(pk, str, strlen(str));
|
243
243
|
break;
|
244
244
|
|
245
245
|
default:
|
@@ -260,7 +260,7 @@ rbtrace__send_event(int nargs, const char *name, ...)
|
|
260
260
|
#else
|
261
261
|
0,
|
262
262
|
#endif
|
263
|
-
&rbtracer.mqo_addr, rbtracer.mqo_len
|
263
|
+
(const struct sockaddr *)&rbtracer.mqo_addr, rbtracer.mqo_len
|
264
264
|
);
|
265
265
|
|
266
266
|
if (ret == -1 && (errno == EINVAL || errno == ENOENT || errno == ECONNREFUSED || errno == EPIPE)) {
|
@@ -877,7 +877,7 @@ rbtrace__process_event(msgpack_object cmd)
|
|
877
877
|
VALUE val = Qnil;
|
878
878
|
|
879
879
|
msgpack_object_array ary;
|
880
|
-
|
880
|
+
msgpack_object_str str;
|
881
881
|
|
882
882
|
/* fprintf(stderr, "GOT: ");*/
|
883
883
|
/* msgpack_object_print(stderr, cmd);*/
|
@@ -886,10 +886,10 @@ rbtrace__process_event(msgpack_object cmd)
|
|
886
886
|
ary = cmd.via.array;
|
887
887
|
|
888
888
|
if (ary.size < 1 ||
|
889
|
-
ary.ptr[0].type !=
|
889
|
+
ary.ptr[0].type != MSGPACK_OBJECT_STR)
|
890
890
|
return;
|
891
891
|
|
892
|
-
str = ary.ptr[0].via.
|
892
|
+
str = ary.ptr[0].via.str;
|
893
893
|
|
894
894
|
if (0 == strncmp("attach", str.ptr, str.size)) {
|
895
895
|
if (ary.size != 2 ||
|
@@ -930,11 +930,11 @@ rbtrace__process_event(msgpack_object cmd)
|
|
930
930
|
|
931
931
|
} else if (0 == strncmp("add", str.ptr, str.size)) {
|
932
932
|
if (ary.size != 3 ||
|
933
|
-
ary.ptr[1].type !=
|
933
|
+
ary.ptr[1].type != MSGPACK_OBJECT_STR ||
|
934
934
|
ary.ptr[2].type != MSGPACK_OBJECT_BOOLEAN)
|
935
935
|
return;
|
936
936
|
|
937
|
-
str = ary.ptr[1].via.
|
937
|
+
str = ary.ptr[1].via.str;
|
938
938
|
bool is_slow = ary.ptr[2].via.boolean;
|
939
939
|
|
940
940
|
strncpy(query, str.ptr, str.size);
|
@@ -943,10 +943,10 @@ rbtrace__process_event(msgpack_object cmd)
|
|
943
943
|
|
944
944
|
} else if (0 == strncmp("addexpr", str.ptr, str.size)) {
|
945
945
|
if (ary.size != 2 ||
|
946
|
-
ary.ptr[1].type !=
|
946
|
+
ary.ptr[1].type != MSGPACK_OBJECT_STR)
|
947
947
|
return;
|
948
948
|
|
949
|
-
str = ary.ptr[1].via.
|
949
|
+
str = ary.ptr[1].via.str;
|
950
950
|
|
951
951
|
strncpy(query, str.ptr, str.size);
|
952
952
|
query[str.size] = 0;
|
@@ -1006,10 +1006,10 @@ rbtrace__process_event(msgpack_object cmd)
|
|
1006
1006
|
|
1007
1007
|
} else if (0 == strncmp("eval", str.ptr, str.size)) {
|
1008
1008
|
if (ary.size != 2 ||
|
1009
|
-
ary.ptr[1].type !=
|
1009
|
+
ary.ptr[1].type != MSGPACK_OBJECT_STR)
|
1010
1010
|
return;
|
1011
1011
|
|
1012
|
-
str = ary.ptr[1].via.
|
1012
|
+
str = ary.ptr[1].via.str;
|
1013
1013
|
|
1014
1014
|
strncpy(query, str.ptr, str.size);
|
1015
1015
|
query[str.size] = 0;
|
@@ -1074,8 +1074,9 @@ rbtrace_gc_mark()
|
|
1074
1074
|
}
|
1075
1075
|
}
|
1076
1076
|
|
1077
|
-
static VALUE gc_hook
|
1077
|
+
static VALUE gc_hook;
|
1078
1078
|
|
1079
|
+
#if defined(HAVE_RB_POSTPONED_JOB_REGISTER_ONE) || !defined(RUBY_VM)
|
1079
1080
|
static void
|
1080
1081
|
sigurg(int signal)
|
1081
1082
|
{
|
@@ -1085,7 +1086,10 @@ sigurg(int signal)
|
|
1085
1086
|
rbtrace__receive(0);
|
1086
1087
|
#endif
|
1087
1088
|
}
|
1089
|
+
#endif
|
1088
1090
|
|
1091
|
+
#if !defined(HAVE_RB_POSTPONED_JOB_REGISTER_ONE) && defined(RUBY_VM)
|
1092
|
+
static VALUE signal_handler_proc;
|
1089
1093
|
static VALUE
|
1090
1094
|
signal_handler_wrapper(VALUE arg, VALUE ctx)
|
1091
1095
|
{
|
@@ -1098,6 +1102,7 @@ signal_handler_wrapper(VALUE arg, VALUE ctx)
|
|
1098
1102
|
|
1099
1103
|
return Qnil;
|
1100
1104
|
}
|
1105
|
+
#endif
|
1101
1106
|
|
1102
1107
|
void
|
1103
1108
|
Init_rbtrace()
|
data/lib/rbtrace/cli.rb
CHANGED
@@ -199,7 +199,7 @@ EOS
|
|
199
199
|
:short => nil
|
200
200
|
|
201
201
|
opt :timeout,
|
202
|
-
"seconds to wait before giving up on attach/detach",
|
202
|
+
"seconds to wait before giving up on attach/detach/eval",
|
203
203
|
:default => 5
|
204
204
|
end
|
205
205
|
|
@@ -248,7 +248,7 @@ EOS
|
|
248
248
|
Array(opts[:config]).each do |config|
|
249
249
|
file = [
|
250
250
|
config,
|
251
|
-
File.expand_path("
|
251
|
+
File.expand_path("../../../tracers/#{config}.tracer", __FILE__)
|
252
252
|
].find{ |f| File.exists?(f) }
|
253
253
|
|
254
254
|
unless file
|
@@ -389,6 +389,10 @@ EOS
|
|
389
389
|
parser.die :pid, "(#{e.message})"
|
390
390
|
end
|
391
391
|
|
392
|
+
if opts[:timeout] > 0
|
393
|
+
tracer.timeout = opts[:timeout]
|
394
|
+
end
|
395
|
+
|
392
396
|
if opts[:fork_given]
|
393
397
|
pid = tracer.fork
|
394
398
|
STDERR.puts "*** forked off a busy looping copy at #{pid} (make sure to kill -9 it when you're done)"
|
data/lib/rbtrace/rbtracer.rb
CHANGED
data/lib/rbtrace/version.rb
CHANGED
data/test.sh
CHANGED
metadata
CHANGED
@@ -1,62 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.8
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Aman Gupta
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-01-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: ffi
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.0.6
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 1.0.6
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: trollop
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.16.2
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 1.16.2
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: msgpack
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 0.4.3
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 0.4.3
|
62
55
|
description: rbtrace shows you method calls happening inside another ruby process
|
@@ -68,15 +61,16 @@ extensions:
|
|
68
61
|
- ext/extconf.rb
|
69
62
|
extra_rdoc_files: []
|
70
63
|
files:
|
71
|
-
- .gitignore
|
64
|
+
- ".gitignore"
|
72
65
|
- Gemfile
|
73
66
|
- Gemfile.lock
|
67
|
+
- LICENSE
|
74
68
|
- README.md
|
75
69
|
- bin/rbtrace
|
76
70
|
- ext/.gitignore
|
77
71
|
- ext/extconf.rb
|
78
72
|
- ext/rbtrace.c
|
79
|
-
- ext/src/msgpack-
|
73
|
+
- ext/src/msgpack-1.1.0.tar.gz
|
80
74
|
- lib/rbtrace/cli.rb
|
81
75
|
- lib/rbtrace/core_ext.rb
|
82
76
|
- lib/rbtrace/msgq.rb
|
@@ -95,27 +89,25 @@ files:
|
|
95
89
|
homepage: http://github.com/tmm1/rbtrace
|
96
90
|
licenses:
|
97
91
|
- MIT
|
92
|
+
metadata: {}
|
98
93
|
post_install_message:
|
99
94
|
rdoc_options: []
|
100
95
|
require_paths:
|
101
96
|
- lib
|
102
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
98
|
requirements:
|
105
|
-
- -
|
99
|
+
- - ">="
|
106
100
|
- !ruby/object:Gem::Version
|
107
101
|
version: '0'
|
108
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
103
|
requirements:
|
111
|
-
- -
|
104
|
+
- - ">="
|
112
105
|
- !ruby/object:Gem::Version
|
113
106
|
version: '0'
|
114
107
|
requirements: []
|
115
108
|
rubyforge_project:
|
116
|
-
rubygems_version:
|
109
|
+
rubygems_version: 2.2.3
|
117
110
|
signing_key:
|
118
|
-
specification_version:
|
119
|
-
summary:
|
111
|
+
specification_version: 4
|
112
|
+
summary: 'rbtrace: like strace but for ruby code'
|
120
113
|
test_files: []
|
121
|
-
has_rdoc:
|