rbtrace 0.4.8 → 0.4.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3761d428e8be7fe2d44989f4d649ddf58803273
4
- data.tar.gz: 3b1c8033019f92df1dbe645d9b7525fa22190abf
3
+ metadata.gz: a8cd3dd5d2826625fbf017e93f76f52edbaa0b83
4
+ data.tar.gz: 50b49986ffdeab614a9076c5f861738c9d4e4a70
5
5
  SHA512:
6
- metadata.gz: 74bb3fdc12bac96869edb039d7c3299e140eab13a3e592dcb61afebce79df7905c5e652392ee620f36c78f1ddc7078060528cb83308e7bd31985969ae7e32a2e
7
- data.tar.gz: 5afab515374aec50c19dc7c42c8df838b0993bd9999d21bd473bec907a6095c9762c0983c3c358e0afefaf4d8b250d5eaabfd6308265724cd2da9e007337fdf2
6
+ metadata.gz: ab75bcf6469ae23f80ec62e520e840710ef912e7080ef69474821e38077a9893a1a16d812048d3d47d990ffbe79e4d2dc075ed9367484835e240b35257f22dee
7
+ data.tar.gz: 9a2ce4b26b191f1064ba30601a37f4b0f8e6490bb1dec9776720bbcd4935653c823db45f1381d09d0f00b9735a8c0bab31e772985da0524c7f72b7ed17d4ebf1
@@ -30,7 +30,7 @@ unless File.exists?("#{CWD}/dst/#{libdir}/libmsgpackc.a")
30
30
  Dir.chdir('src') do
31
31
  FileUtils.rm_rf(dir) if File.exists?(dir)
32
32
 
33
- sys("tar zxvf #{msgpack}")
33
+ sys("tar zxvfo #{msgpack}")
34
34
  Dir.chdir(dir) do
35
35
  if RUBY_PLATFORM =~ /i686/ and gcc = `gcc -v 2>&1` and gcc =~ /gcc version (\d\.\d)/ and $1.to_f <= 4.1
36
36
  ENV['CFLAGS'] = " #{ENV['CFLAGS']} -march=i686 "
@@ -46,10 +46,8 @@
46
46
 
47
47
  #ifdef __FreeBSD__
48
48
  #define PLATFORM_FREEBSD
49
- #endif
50
-
51
- #ifdef __linux__
52
- #define PLATFORM_LINUX
49
+ #elif __OpenBSD__
50
+ #define PLATFORM_OPENBSD
53
51
  #endif
54
52
 
55
53
 
@@ -967,7 +965,7 @@ rbtrace__process_event(msgpack_object cmd)
967
965
  if (outer == 0) {
968
966
  rb_eval_string_protect("$0 = \"[DEBUG] #{Process.ppid}\"", 0);
969
967
 
970
- #ifdef PLATFORM_FREEBSD
968
+ #if defined(PLATFORM_FREEBSD) || defined(PLATFORM_OPENBSD)
971
969
  // The call setpgrp() is equivalent to setpgid(0,0).
972
970
  setpgid(0,0);
973
971
  #else
@@ -3,6 +3,8 @@ require 'rbtrace/rbtracer'
3
3
  require 'rbtrace/version'
4
4
 
5
5
  class RBTraceCLI
6
+ singleton_class.send(:attr_accessor, :tracer)
7
+
6
8
  # Suggest increasing the maximum number of bytes allowed on
7
9
  # a message queue to 1MB.
8
10
  #
@@ -189,6 +191,12 @@ EOS
189
191
  :type => String,
190
192
  :short => '-e'
191
193
 
194
+ opt :interactive,
195
+ "interactive",
196
+ :type => String,
197
+ :default => 'irb',
198
+ :short => '-i'
199
+
192
200
  opt :backtrace,
193
201
  "get lines from the current backtrace in the process",
194
202
  :type => :int
@@ -216,8 +224,8 @@ EOS
216
224
  ARGV.clear
217
225
  end
218
226
 
219
- unless %w[ fork eval backtrace slow slowcpu firehose methods config gc ].find{ |n| opts[:"#{n}_given"] }
220
- $stderr.puts "Error: --slow, --slowcpu, --gc, --firehose, --methods or --config required."
227
+ unless %w[ fork eval interactive backtrace slow slowcpu firehose methods config gc ].find{ |n| opts[:"#{n}_given"] }
228
+ $stderr.puts "Error: --slow, --slowcpu, --gc, --firehose, --methods, --interactive or --config required."
221
229
  $stderr.puts "Try --help for help."
222
230
  exit(-1)
223
231
  end
@@ -384,7 +392,7 @@ EOS
384
392
 
385
393
  begin
386
394
  begin
387
- tracer = RBTracer.new(tracee)
395
+ self.tracer = RBTracer.new(tracee)
388
396
  rescue ArgumentError => e
389
397
  parser.die :pid, "(#{e.message})"
390
398
  end
@@ -411,6 +419,21 @@ EOS
411
419
  tracer.puts "=> #{res}"
412
420
  end
413
421
 
422
+ elsif opts[:interactive_given]
423
+ require "rbtrace/interactive/#{opts[:interactive]}"
424
+
425
+ bin = Gem::Specification.find do |spec|
426
+ bin_file = spec.bin_file(opts[:interactive])
427
+ break bin_file if File.exist?(bin_file)
428
+ end || ENV['PATH'].split(':').find do |path|
429
+ found = Dir["#{path}/*"].find do |file|
430
+ break file if File.basename(file) == opts[:interactive]
431
+ end
432
+ break found if found
433
+ end
434
+
435
+ load(bin)
436
+
414
437
  else
415
438
  tracer.out = output if output
416
439
  tracer.timeout = opts[:timeout] if opts[:timeout] > 0
@@ -0,0 +1,22 @@
1
+
2
+ require 'irb'
3
+
4
+ class IRB::Context
5
+ def puts(arg=nil)
6
+ RBTraceCLI.tracer.puts(arg)
7
+ end
8
+
9
+ def print(arg=nil)
10
+ RBTraceCLI.tracer.print(arg)
11
+ end
12
+
13
+ def inspect_last_value
14
+ @last_value
15
+ end
16
+ end
17
+
18
+ class IRB::WorkSpace
19
+ def evaluate(context, statements, file=__FILE__, line=__LINE__)
20
+ RBTraceCLI.tracer.eval(statements)
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+
2
+ require 'rib/config'
3
+
4
+ module Rib::Rbtrace
5
+ def puts(arg=nil)
6
+ RBTraceCLI.tracer.puts(arg)
7
+ end
8
+
9
+ def print(arg=nil)
10
+ RBTraceCLI.tracer.print(arg)
11
+ end
12
+
13
+ def format_result(result)
14
+ result_prompt + result
15
+ end
16
+
17
+ def loop_eval(input)
18
+ RBTraceCLI.tracer.eval(input)
19
+ end
20
+ end
21
+
22
+ Rib::Shell.send(:include, Rib::Rbtrace)
@@ -1,3 +1,3 @@
1
1
  class RBTracer
2
- VERSION = '0.4.8'
2
+ VERSION = '0.4.9'
3
3
  end
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.8
4
+ version: 0.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aman Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-22 00:00:00.000000000 Z
11
+ date: 2018-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -73,6 +73,8 @@ files:
73
73
  - ext/src/msgpack-1.1.0.tar.gz
74
74
  - lib/rbtrace/cli.rb
75
75
  - lib/rbtrace/core_ext.rb
76
+ - lib/rbtrace/interactive/irb.rb
77
+ - lib/rbtrace/interactive/rib.rb
76
78
  - lib/rbtrace/msgq.rb
77
79
  - lib/rbtrace/rbtracer.rb
78
80
  - lib/rbtrace/version.rb
@@ -106,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
108
  version: '0'
107
109
  requirements: []
108
110
  rubyforge_project:
109
- rubygems_version: 2.2.3
111
+ rubygems_version: 2.6.13
110
112
  signing_key:
111
113
  specification_version: 4
112
114
  summary: 'rbtrace: like strace but for ruby code'