ruby_ext_backtrace 0.0.1 → 0.0.2

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/README.md CHANGED
@@ -26,14 +26,17 @@ require 'pp'
26
26
  require 'ruby_ext_backtrace'
27
27
 
28
28
  def some_method2 param
29
- pp caller(0); puts; pp caller_ext(0)
29
+ c1 = caller_ext(0); c2 = caller(0)
30
+ pp c1
31
+ puts "\n#Original caller for comparison:"
32
+ pp c2
30
33
  end
31
34
 
32
- def some_method param1, param2=nil, &blk
35
+ def some_method param1, param2=nil, *splat, &blk
33
36
  yield "block_param0", "block_param1"
34
37
  end
35
38
 
36
- some_method(1111){|bp1,bp2|
39
+ some_method(1111, nil, 1, 2, 3){|bp1,bp2|
37
40
  some_method2 "some_method2_param"
38
41
  }
39
42
  ```
@@ -42,36 +45,32 @@ this outputs:
42
45
 
43
46
  ```ruby
44
47
 
45
- ["./test.rb:10:in `meth'",
46
- "./test.rb:17:in `some_method2'",
47
- "./test.rb:25:in `block in <main>'",
48
- "./test.rb:21:in `some_method'",
49
- "./test.rb:24:in `<main>'"]
50
-
51
- [{:file=>"./test.rb",
48
+ [{:file=>"test.rb",
52
49
  :line=>10,
53
- :method=>"meth",
54
- :argc=>1,
55
- 0=>"default_meth_param"},
56
- {:file=>"./test.rb",
57
- :line=>17,
58
50
  :method=>"some_method2",
59
51
  :argc=>1,
60
52
  0=>"some_method2_param"},
61
- {:file=>"./test.rb",
62
- :line=>25,
53
+ {:file=>"test.rb",
54
+ :line=>21,
63
55
  :method=>"block in <main>",
64
56
  :argc=>2,
65
57
  0=>"block_param0",
66
58
  1=>"block_param1"},
67
- {:file=>"./test.rb",
68
- :line=>21,
59
+ {:file=>"test.rb",
60
+ :line=>17,
69
61
  :method=>"some_method",
70
- :argc=>3,
62
+ :argc=>4,
71
63
  0=>1111,
72
64
  1=>nil,
73
- 2=>#<Proc:0x007f8c5b02fff0@./test.rb:24>},
74
- {:file=>"./test.rb", :line=>24, :method=>"<main>", :argc=>0}]
65
+ 2=>[1, 2, 3],
66
+ 3=>#<Proc:0x007fc87c053290@test.rb:20>},
67
+ {:file=>"test.rb", :line=>20, :method=>"<main>", :argc=>0}]
68
+
69
+ #Original caller for comparison:
70
+ ["test.rb:10:in `some_method2'",
71
+ "test.rb:21:in `block in <main>'",
72
+ "test.rb:17:in `some_method'",
73
+ "test.rb:20:in `<main>'"]
75
74
  ```
76
75
 
77
76
  Note that fetching parameters for CFUNCs with variable parameters (argc&lt;0) is not supported.
@@ -5,7 +5,13 @@ require 'mkmf'
5
5
  require 'debugger/ruby_core_source'
6
6
 
7
7
  hdrs = proc {
8
- have_header("vm_core.h") # and have_header("iseq.h")
8
+ res = have_header("vm_core.h") # and have_header("iseq.h")
9
+
10
+ if RUBY_VERSION=='1.9.2'
11
+ # on 1.9.3 it fails to link in runtime, but still checks to be ok
12
+ have_var('ruby_current_thread', 'vm_core.h')
13
+ end
14
+ res
9
15
  }
10
16
 
11
17
  dir_config("ruby") # allow user to pass in non-standard core include directory
@@ -10,6 +10,13 @@
10
10
  #error Need RubyVM, use another ruby
11
11
  #endif
12
12
 
13
+ #ifdef HAVE_RUBY_CURRENT_THREAD
14
+ extern VALUE ruby_engine_name;
15
+ #else
16
+ #define ruby_engine_name Qnil
17
+ #define ruby_current_thread ((rb_thread_t *)RTYPEDDATA_DATA(rb_thread_current()))
18
+ #endif
19
+
13
20
  typedef int (rb_backtrace_iter_ext_func)(void *arg, VALUE file, int line, VALUE method_name, int argc, VALUE* argv);
14
21
 
15
22
  static int
@@ -49,7 +56,7 @@ vm_backtrace_each_ext(rb_thread_t *th, int lev, void (*init)(void *), rb_backtra
49
56
  } else
50
57
  if (RUBYVM_CFUNC_FRAME_P(cfp)) {
51
58
  ID id = cfp->me->def? cfp->me->def->original_id : cfp->me->called_id;
52
- extern VALUE ruby_engine_name;
59
+
53
60
  if (NIL_P(file)) file = ruby_engine_name;
54
61
 
55
62
  if (id != ID_ALLOCATOR){
@@ -7,13 +7,16 @@ require 'pp'
7
7
  require 'ruby_ext_backtrace'
8
8
 
9
9
  def some_method2 param
10
- pp caller(0); puts; pp caller_ext(0)
10
+ c1 = caller_ext(0); c2 = caller(0)
11
+ pp c1
12
+ puts "\n #Original caller for comparison:"
13
+ pp c2
11
14
  end
12
15
 
13
- def some_method param1, param2=nil, &blk
16
+ def some_method param1, param2=nil, *splat, &blk
14
17
  yield "block_param0", "block_param1"
15
18
  end
16
19
 
17
- some_method(1111){|bp1,bp2|
20
+ some_method(1111, nil, 1, 2, 3){|bp1,bp2|
18
21
  some_method2 "some_method2_param"
19
- }
22
+ }
@@ -1,3 +1,3 @@
1
1
  module RubyExtBacktrace
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["vasilyfedoseyev@gmail.com"]
11
11
  gem.description = %q{Extended backtrace for ruby}
12
12
  gem.summary = %q{have you ever wanted to see method parameters in backtrace?}
13
- gem.homepage = ""
13
+ gem.homepage = "https://github.com/Vasfed/ruby_ext_backtrace"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_ext_backtrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-29 00:00:00.000000000 Z
12
+ date: 2012-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: debugger-ruby_core_source
@@ -62,7 +62,7 @@ files:
62
62
  - lib/ruby_ext_backtrace.rb
63
63
  - lib/ruby_ext_backtrace/version.rb
64
64
  - ruby_ext_backtrace.gemspec
65
- homepage: ''
65
+ homepage: https://github.com/Vasfed/ruby_ext_backtrace
66
66
  licenses: []
67
67
  post_install_message:
68
68
  rdoc_options: []
@@ -76,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
76
  version: '0'
77
77
  segments:
78
78
  - 0
79
- hash: -835126318862271968
79
+ hash: -543521818031646013
80
80
  required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  version: '0'
86
86
  segments:
87
87
  - 0
88
- hash: -835126318862271968
88
+ hash: -543521818031646013
89
89
  requirements: []
90
90
  rubyforge_project:
91
91
  rubygems_version: 1.8.24