rb-trace 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,2 +1,2 @@
1
- /*~
1
+ *~
2
2
  /pkg
data/NEWS CHANGED
@@ -1,4 +1,7 @@
1
- March 28 2011 (0.5)
1
+ November 25, 2012 (0.6)
2
+ Revise for Ruby 1.9.3 p327. Stub C extension is used for 1.9.3.
3
+
4
+ March 28, 2011 (0.5)
2
5
  Add YIELD event names
3
6
  Go over packaging
4
7
 
data/README.textile CHANGED
@@ -1,2 +1,3 @@
1
- rb-trace adds a trace_hook object, translates hooks bitmasks to sets and vice versa, and extends set_trace_func to ignore frames or
2
- functions.
1
+ _rb-trace_ adds a trace_hook object, translates hooks bitmasks to Ruby sets and vice versa, and extends _set_trace_func()_ to allow ignore specified frames or functions.
2
+
3
+ See "this":https://github.com/rocky/rb-trace/wiki/irb-method%2C-class%2C-and-definition-capturing for a cool non-debugger use of this.
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env rake
2
2
  # -*- Ruby -*-
3
3
  require 'rubygems'
4
+ require 'fileutils'
4
5
 
5
6
  ROOT_DIR = File.dirname(__FILE__)
6
7
  Gemspec_filename='rb-trace.gemspec'
@@ -9,7 +10,7 @@ def gemspec
9
10
  @gemspec ||= eval(File.read(Gemspec_filename), binding, Gemspec_filename)
10
11
  end
11
12
 
12
- require 'rake/gempackagetask'
13
+ require 'rubygems/package_task'
13
14
  desc "Build the gem"
14
15
  task :package=>:gem
15
16
  task :gem=>:gemspec do
@@ -45,11 +46,11 @@ Rake::TestTask.new(:'test:unit') do |t|
45
46
  t.options = '--verbose' if $VERBOSE
46
47
  end
47
48
 
48
- desc "Create the core ruby-debug shared library extension"
49
+ desc "Create the core rb-trace shared library extension"
49
50
  task :ext do
50
51
  Dir.chdir('ext') do
51
52
  system("#{Gem.ruby} extconf.rb && make")
52
- end
53
+ end if '1.9.2' == RUBY_VERSION
53
54
  end
54
55
 
55
56
  desc 'Remove built files'
@@ -0,0 +1,24 @@
1
+ /**********************************************************************
2
+
3
+ thread_pthread.h -
4
+
5
+ $Author$
6
+
7
+ Copyright (C) 2004-2007 Koichi Sasada
8
+
9
+ **********************************************************************/
10
+
11
+ #ifndef RUBY_THREAD_PTHREAD_H
12
+ #define RUBY_THREAD_PTHREAD_H
13
+
14
+ #include <pthread.h>
15
+ typedef pthread_t rb_thread_id_t;
16
+ typedef pthread_mutex_t rb_thread_lock_t;
17
+ typedef pthread_cond_t rb_thread_cond_t;
18
+
19
+ typedef struct native_thread_data_struct {
20
+ void *signal_thread_list;
21
+ pthread_cond_t sleep_cond;
22
+ } native_thread_data_t;
23
+
24
+ #endif /* RUBY_THREAD_PTHREAD_H */
@@ -1,8 +1,6 @@
1
+ #include "../version.h"
1
2
  #include "vm_core_mini.h" /* Pulls in ruby.h */
2
3
 
3
- /* What release we got? */
4
- #define TRACE_VERSION "0.5"
5
-
6
4
  extern VALUE rb_cRubyVM; /* RubyVM class */
7
5
  extern rb_vm_t *ruby_current_vm;
8
6
  extern VALUE rb_obj_is_proc(VALUE proc);
File without changes
data/ext/1.9.3/trace.c ADDED
@@ -0,0 +1,22 @@
1
+ /* Ruby 1.9.3 doesn't need a C extension while 1.9.2 does. I can't figure
2
+ out a way build a gem so that it loads the C extension conditionally.
3
+ So instead we have a simple stupid stub extension.
4
+
5
+ This as it is not elegant.
6
+ */
7
+
8
+ #include <ruby.h>
9
+ #include <ruby/version.h>
10
+ #include <string.h>
11
+ void
12
+ Init_trace(void)
13
+ {
14
+ if (0 == strncmp("1.9.2", ruby_version, sizeof("1.9.2")))
15
+ {
16
+ rb_raise(rb_eLoadError,
17
+ "Gem installed under Ruby 1.9.3 but this Ruby 1.9.2. Please reinstall 'rb-trace' gem under 1.9.2.");
18
+ } else if (0 == strncmp("1.9.3", ruby_version, sizeof("1.9.3"))) {
19
+ rb_raise(rb_eLoadError,
20
+ "Under Ruby 1.9.3 there is no reason to load this trace C extension.");
21
+ }
22
+ }
data/ext/extconf.rb CHANGED
@@ -1,8 +1,16 @@
1
1
  require "mkmf"
2
2
 
3
+ fail "You need to install a threadframe-patched Ruby.
4
+ See http://github.com/rocky/rb-threadframe/wiki/How-to-Install" unless
5
+ RbConfig::CONFIG.member?('rb-threadframe')
6
+
7
+ # Allow use customization of compile options. For example, the
8
+ # following lines could be put in config_options:
9
+ # CONFIG['optflags'] = '' # Or -O3
10
+ # CONFIG['debugflags'] = '-g3 -ggdb'
3
11
  config_file = File.join(File.dirname(__FILE__), 'config_options')
4
12
  load config_file if File.exist?(config_file)
5
13
 
6
14
  # Temporary: to turn off optimization
7
15
  # $CFLAGS='-fno-strict-aliasing -g -fPIC'
8
- create_makefile("trace")
16
+ create_makefile('trace', RUBY_VERSION)
data/ext/version.h ADDED
@@ -0,0 +1,2 @@
1
+ /* What release we got? */
2
+ #define TRACE_VERSION "0.6"
data/lib/eventbuffer.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # Copyright (C) 2011 Rocky Bernstein <rockyb@rubyforge.net>
1
2
  module Trace
2
3
 
3
4
  class EventBuffer
data/lib/trace_mod.rb CHANGED
@@ -1,4 +1,4 @@
1
- require_relative '../ext/trace'
1
+ require_relative '../ext/trace' if '1.9.2' == RUBY_VERSION
2
2
 
3
3
  # A module for interfacing with Kernel::set_trace which adds
4
4
  # filtering of events inside Ruby (as opposed to inside your trace
data/lib/tracefilter.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # Copyright (C) 2011 Rocky Bernstein <rockyb@rubyforge.net>
1
2
  require 'set'
2
3
  # require '/src/external-vcs/rb-threadframe/ext/thread_frame'
3
4
  require 'thread_frame'
@@ -19,7 +20,7 @@ module Trace
19
20
  @excluded = Set.new(excluded_meths.map{|m| m.to_s})
20
21
  end
21
22
 
22
- # +fn+ should be a RubyVM::ThreadFrame object or a Proc which has an
23
+ # +fn+ should be a RubyVM::Frame object or a Proc which has an
23
24
  # instruction sequence
24
25
  def valid_meth?(fn)
25
26
  fn.is_a?(Method)
@@ -56,10 +57,10 @@ module Trace
56
57
  end
57
58
 
58
59
  # A shim to convert between older-style trace hook call to newer
59
- # style trace hook using RubyVM::ThreadFrame. Methods stored in
60
+ # style trace hook using RubyVM::Frame. Methods stored in
60
61
  # @+excluded+ are ignored.
61
62
  def trace_hook(event, file, line, id, binding, klass)
62
- tf = RubyVM::ThreadFrame::current.prev
63
+ tf = RubyVM::Frame::current.prev
63
64
 
64
65
  # FIXME: Clean this mess up. And while your at it, understand
65
66
  # what's going on better.
@@ -81,7 +82,7 @@ module Trace
81
82
  # turning it off in the frame and frames called from that.
82
83
  # Example: if a trace hook yields to or calls a block
83
84
  # outside not derived from the frame, then tracing should
84
- # start again. But either way, since RubyVM::ThreadFrame
85
+ # start again. But either way, since RubyVM::Frame
85
86
  # allows control over tracing *any* decision is not
86
87
  # irrevocable, just possibly unhelpful.
87
88
  tf_check.trace_off = true
data/rb-trace.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # -*- Ruby -*-
2
+ # -*- encoding: utf-8 -*-
3
+ require 'rake'
4
+ require 'rubygems' unless
5
+ Object.const_defined?(:Gem)
6
+
7
+ PACKAGE_VERSION = open('ext/version.h') do |f|
8
+ f.grep(/^#define TRACE_VERSION/).first[/"(.+)"/,1]
9
+ end
10
+
11
+ spec = Gem::Specification.new do |spec|
12
+ spec.authors = ['R. Bernstein']
13
+ spec.name = 'rb-trace'
14
+
15
+ spec.homepage = 'https://github.com/rocky/rb-trace/wiki'
16
+ spec.summary = 'Trace hook extensions'
17
+ spec.description = <<-EOF
18
+
19
+ rb-trace adds a trace_hook object, translates hooks bitmasks to Ruby sets and vice versa, and extends set_trace_func() to allow ignore specified frames or functions.
20
+ EOF
21
+
22
+ spec.version = PACKAGE_VERSION
23
+ spec.extensions = ['ext/extconf.rb']
24
+
25
+ spec.email = 'rockyb@rubyforge.org'
26
+ spec.platform = Gem::Platform::RUBY
27
+ spec.files = `git ls-files`.split("\n")
28
+ spec.add_dependency('rb-threadframe', '>= 0.39.9')
29
+
30
+ # spec.required_ruby_version = '~> 1.9.2frame'
31
+ spec.date = Time.now
32
+ # spec.rubyforge_project = 'rocky-hacks'
33
+
34
+ # rdoc
35
+ spec.has_rdoc = true
36
+ # spec.extra_rdoc_files = ['README', 'threadframe.rd']
37
+ end
38
+
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'test/unit'
3
- require_relative '../../ext/trace'
3
+ require_relative '../../ext/trace' if '1.9.2' == RUBY_VERSION
4
4
 
5
5
  # Testing RubyVM::TraceHook
6
6
  class TestTraceHook < Test::Unit::TestCase
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'test/unit'
3
- require_relative '../../lib/trace_mod'
3
+ require_relative '../../lib/trace_mod' if '1.9.2' == RUBY_VERSION
4
4
 
5
5
  # Testing Trace Module
6
6
  class TestTrace < Test::Unit::TestCase
@@ -60,7 +60,12 @@ class TestTraceFilter < Test::Unit::TestCase
60
60
 
61
61
  assert_equal(false, $events.empty?,
62
62
  'We should have gotting some trace output')
63
- assert_equal([Kernel], $args,
63
+ if '1.9.3' == RUBY_VERSION
64
+ expected = [Kernel, Kernel]
65
+ else
66
+ expected = [Kernel]
67
+ end
68
+ assert_equal(expected, $args,
64
69
  'C call/returns set $args')
65
70
 
66
71
  $line_nos.each_with_index do
metadata CHANGED
@@ -1,47 +1,44 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rb-trace
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 5
8
- version: "0.5"
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.6'
5
+ prerelease:
9
6
  platform: ruby
10
- authors:
7
+ authors:
11
8
  - R. Bernstein
12
9
  autorequire:
13
10
  bindir: bin
14
11
  cert_chain: []
15
-
16
- date: 2011-03-28 00:00:00 -04:00
17
- default_executable:
18
- dependencies:
19
- - !ruby/object:Gem::Dependency
12
+ date: 2012-11-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
20
15
  name: rb-threadframe
21
- prerelease: false
22
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- - 38
30
- version: "0.38"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.39.9
31
22
  type: :runtime
32
- version_requirements: *id001
33
- description: "\n\
34
- rb-trace adds a trace_hook object, translates hooks bitmasks to sets\n\
35
- and vice versa, and extends set_trace_func to ignore frames or\n\
36
- functions.\n"
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.39.9
30
+ description: ! '
31
+
32
+ rb-trace adds a trace_hook object, translates hooks bitmasks to Ruby sets and vice
33
+ versa, and extends set_trace_func() to allow ignore specified frames or functions.
34
+
35
+ '
37
36
  email: rockyb@rubyforge.org
38
37
  executables: []
39
-
40
- extensions:
38
+ extensions:
41
39
  - ext/extconf.rb
42
40
  extra_rdoc_files: []
43
-
44
- files:
41
+ files:
45
42
  - .gitignore
46
43
  - ChangeLog
47
44
  - LICENSE
@@ -49,53 +46,46 @@ files:
49
46
  - README.textile
50
47
  - Rakefile
51
48
  - ext/.gitignore
49
+ - ext/1.9.2/thread_pthread.h
50
+ - ext/1.9.2/trace.c
51
+ - ext/1.9.2/vm_core_mini.h
52
+ - ext/1.9.3/trace.c
52
53
  - ext/extconf.rb
53
54
  - ext/thread_pthread.h
54
- - ext/trace.c
55
- - ext/vm_core_mini.h
55
+ - ext/version.h
56
56
  - lib/.gitignore
57
57
  - lib/eventbuffer.rb
58
58
  - lib/trace.rb
59
59
  - lib/trace_mod.rb
60
60
  - lib/tracefilter.rb
61
+ - rb-trace.gemspec
61
62
  - test/unit/.gitignore
62
63
  - test/unit/test-event2bitmask.rb
63
64
  - test/unit/test-trace-hook.rb
64
65
  - test/unit/test-trace_mod.rb
65
66
  - test/unit/test-tracefilter.rb
66
- has_rdoc: true
67
- homepage: http://github.com/rocky/rb-trace/tree/master
67
+ homepage: https://github.com/rocky/rb-trace/wiki
68
68
  licenses: []
69
-
70
69
  post_install_message:
71
70
  rdoc_options: []
72
-
73
- require_paths:
71
+ require_paths:
74
72
  - lib
75
- required_ruby_version: !ruby/object:Gem::Requirement
73
+ required_ruby_version: !ruby/object:Gem::Requirement
76
74
  none: false
77
- requirements:
78
- - - ~>
79
- - !ruby/object:Gem::Version
80
- segments:
81
- - 1
82
- - 9
83
- - 2frame
84
- version: 1.9.2frame
85
- required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
80
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- segments:
91
- - 0
92
- version: "0"
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
93
85
  requirements: []
94
-
95
86
  rubyforge_project:
96
- rubygems_version: 1.3.7
87
+ rubygems_version: 1.8.23
97
88
  signing_key:
98
89
  specification_version: 3
99
90
  summary: Trace hook extensions
100
91
  test_files: []
101
-