rbtrace 0.4.11 → 0.4.12
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/ext/rbtrace.c +37 -3
- data/lib/rbtrace/cli.rb +1 -1
- data/lib/rbtrace/rbtracer.rb +7 -1
- data/lib/rbtrace/version.rb +3 -1
- data/tracers/activerecord.tracer +1 -0
- metadata +3 -5
- data/Gemfile.lock +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90ef44223d9a9594cd447443fff128884825d19b5bb553ba3d4c2924df6c2da0
|
4
|
+
data.tar.gz: a09e1b41bca4f998e47b7de04a711915440deb4bbc81007cbf27264dac9bfcbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 828eead6b86f3b21b743b6391e69ae854bb19ba0b1a6e84258a9b67f2675036dd46a91b6178a622d7568466e480e858b519fa7aa9d099e3030470422a3fa706e
|
7
|
+
data.tar.gz: b735bf29d7fb23d56a36a008df77d8ea23325fc0f1c9d0f16826941077000c11a25fa4e7b9b637cd7157e988bd2db5e0f5017ca53218a6b1b23bab8b7df4d46e
|
data/.gitignore
CHANGED
data/ext/rbtrace.c
CHANGED
@@ -862,6 +862,22 @@ msgq_setup()
|
|
862
862
|
#endif
|
863
863
|
}
|
864
864
|
|
865
|
+
static VALUE
|
866
|
+
eval_inspect(VALUE rb_code) {
|
867
|
+
VALUE binding, result;
|
868
|
+
|
869
|
+
binding = rb_eval_string("$rbtrace_binding ||= binding");
|
870
|
+
result = rb_funcall(binding, rb_intern("eval"), 1, rb_code);
|
871
|
+
return rb_funcall(result, rb_intern("inspect"), 0);
|
872
|
+
}
|
873
|
+
|
874
|
+
static VALUE
|
875
|
+
rescue_inspect(VALUE arg) {
|
876
|
+
VALUE exception = rb_errinfo(); /* get last exception */
|
877
|
+
rb_set_errinfo(Qnil);
|
878
|
+
return rb_funcall(exception, rb_intern("inspect"), 0);
|
879
|
+
}
|
880
|
+
|
865
881
|
static void
|
866
882
|
rbtrace__process_event(msgpack_object cmd)
|
867
883
|
{
|
@@ -1012,8 +1028,10 @@ rbtrace__process_event(msgpack_object cmd)
|
|
1012
1028
|
strncpy(query, str.ptr, str.size);
|
1013
1029
|
query[str.size] = 0;
|
1014
1030
|
|
1015
|
-
|
1016
|
-
|
1031
|
+
VALUE rb_code, binding;
|
1032
|
+
rb_code = rb_str_new2(query);
|
1033
|
+
|
1034
|
+
val = rb_rescue(eval_inspect, rb_code, rescue_inspect, Qnil);
|
1017
1035
|
|
1018
1036
|
if (TYPE(val) == T_STRING) {
|
1019
1037
|
rbtrace__send_event(1,
|
@@ -1021,7 +1039,6 @@ rbtrace__process_event(msgpack_object cmd)
|
|
1021
1039
|
's', RSTRING_PTR(val)
|
1022
1040
|
);
|
1023
1041
|
}
|
1024
|
-
|
1025
1042
|
}
|
1026
1043
|
}
|
1027
1044
|
|
@@ -1102,9 +1119,26 @@ signal_handler_wrapper(VALUE arg, VALUE ctx)
|
|
1102
1119
|
}
|
1103
1120
|
#endif
|
1104
1121
|
|
1122
|
+
static VALUE
|
1123
|
+
send_write(VALUE klass, VALUE val) {
|
1124
|
+
if (TYPE(val) == T_STRING) {
|
1125
|
+
rbtrace__send_event(1,
|
1126
|
+
"write",
|
1127
|
+
's', RSTRING_PTR(val)
|
1128
|
+
);
|
1129
|
+
}
|
1130
|
+
|
1131
|
+
return Qnil;
|
1132
|
+
}
|
1133
|
+
|
1105
1134
|
void
|
1106
1135
|
Init_rbtrace()
|
1107
1136
|
{
|
1137
|
+
VALUE mod = rb_define_module("RBTrace");
|
1138
|
+
VALUE output = rb_define_module_under(mod, "OUT");
|
1139
|
+
|
1140
|
+
rb_define_singleton_method(output, "write", send_write, 1);
|
1141
|
+
|
1108
1142
|
// hook into the gc
|
1109
1143
|
gc_hook = Data_Wrap_Struct(rb_cObject, rbtrace_gc_mark, NULL, NULL);
|
1110
1144
|
rb_global_variable(&gc_hook);
|
data/lib/rbtrace/cli.rb
CHANGED
@@ -34,7 +34,7 @@ class RBTraceCLI
|
|
34
34
|
# Returns nothing.
|
35
35
|
def self.cleanup_queues
|
36
36
|
if (pids = `ps ax -o pid`.split("\n").map{ |p| p.strip.to_i }).any?
|
37
|
-
ipcs = `ipcs -q`.split("\n").grep(/^(q|0x)/).map{ |line| line[/(0x[a-f0-9]+)/,1] }
|
37
|
+
ipcs = `ipcs -q`.split("\n").grep(/^(q|0x)/).map{ |line| line[/(0x[a-f0-9]+)/,1] }.compact
|
38
38
|
ipcs.each do |ipci|
|
39
39
|
next if ipci.match(/^0xf/)
|
40
40
|
|
data/lib/rbtrace/rbtracer.rb
CHANGED
@@ -321,7 +321,9 @@ class RBTracer
|
|
321
321
|
def send_cmd(*cmd)
|
322
322
|
begin
|
323
323
|
msg = cmd.to_msgpack
|
324
|
-
|
324
|
+
# A message is null-terminated, but bytesize gives the unterminated
|
325
|
+
# length.
|
326
|
+
raise ArgumentError, 'command is too long' if msg.bytesize >= MsgQ::EventMsg::BUF_SIZE
|
325
327
|
MsgQ::EventMsg.send_cmd(@qo, msg)
|
326
328
|
rescue Errno::EINTR
|
327
329
|
retry
|
@@ -575,6 +577,10 @@ class RBTracer
|
|
575
577
|
puts if @watch_slow
|
576
578
|
end
|
577
579
|
|
580
|
+
when 'write'
|
581
|
+
data, = *cmd
|
582
|
+
STDOUT.write(data)
|
583
|
+
|
578
584
|
else
|
579
585
|
puts "unknown event #{event}: #{cmd.inspect}"
|
580
586
|
|
data/lib/rbtrace/version.rb
CHANGED
data/tracers/activerecord.tracer
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aman Gupta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -77,7 +77,6 @@ extra_rdoc_files: []
|
|
77
77
|
files:
|
78
78
|
- ".gitignore"
|
79
79
|
- Gemfile
|
80
|
-
- Gemfile.lock
|
81
80
|
- LICENSE
|
82
81
|
- README.md
|
83
82
|
- Rakefile
|
@@ -124,8 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
123
|
- !ruby/object:Gem::Version
|
125
124
|
version: '0'
|
126
125
|
requirements: []
|
127
|
-
|
128
|
-
rubygems_version: 2.7.6
|
126
|
+
rubygems_version: 3.0.3
|
129
127
|
signing_key:
|
130
128
|
specification_version: 4
|
131
129
|
summary: 'rbtrace: like strace but for ruby code'
|
data/Gemfile.lock
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
rbtrace (0.4.11)
|
5
|
-
ffi (>= 1.0.6)
|
6
|
-
msgpack (>= 0.4.3)
|
7
|
-
optimist (>= 3.0.0)
|
8
|
-
|
9
|
-
GEM
|
10
|
-
remote: https://rubygems.org/
|
11
|
-
specs:
|
12
|
-
ffi (1.9.25)
|
13
|
-
msgpack (1.2.4)
|
14
|
-
optimist (3.0.0)
|
15
|
-
rake (10.5.0)
|
16
|
-
|
17
|
-
PLATFORMS
|
18
|
-
ruby
|
19
|
-
|
20
|
-
DEPENDENCIES
|
21
|
-
rake (~> 10.0)
|
22
|
-
rbtrace!
|
23
|
-
|
24
|
-
BUNDLED WITH
|
25
|
-
1.16.4
|