debug_inspector 0.0.2 → 0.0.3
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 +7 -0
- data/.travis.yml +15 -0
- data/Gemfile +5 -0
- data/README.md +24 -13
- data/Rakefile +10 -6
- data/debug_inspector.gemspec +2 -0
- data/ext/debug_inspector/debug_inspector.c +10 -10
- data/lib/debug_inspector/version.rb +1 -1
- data/test/basic_test.rb +7 -0
- data/test/test_helper.rb +5 -0
- metadata +28 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0055983985b3e3b9bb36058348588eac38022787
|
4
|
+
data.tar.gz: 776758a397d1e33b3345588331ef3bcb8a3e4051
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b115b41121a9a3d6220f2aa473014a577318873c99f54d53adab1f3b24a25ccdb8a7afce7629e0b6e462ed79958f1bd3df6a7b932db1564593c61e44a46ff4fd
|
7
|
+
data.tar.gz: ab115e7bc09e1bb42987da24f1104ae047a7109916142ab9e855318db5aa007756f03a9c45574974149ee6065010d745e154bfb159ba6b10cec5a166549823c4
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
CHANGED
@@ -1,11 +1,15 @@
|
|
1
|
-
debug_inspector
|
1
|
+
debug_inspector [](https://travis-ci.org/banister/debug_inspector)
|
2
2
|
===============
|
3
3
|
|
4
|
-
(C) John Mair (banisterfiend) 2012
|
5
|
-
|
6
4
|
_A Ruby wrapper for the new MRI 2.0 debug\_inspector API_
|
7
5
|
|
8
|
-
|
6
|
+
The `debug_inspector` C extension and API were designed and built by [Koichi Sasada](https://github.com/ko1), this project
|
7
|
+
is just a gemification of his work.
|
8
|
+
|
9
|
+
**NOTES:**
|
10
|
+
|
11
|
+
* This library makes use of the new debug inspector API in MRI 2.0.0, **do not use this library outside of debugging situations**.
|
12
|
+
* Only works on MRI 2.0. Requiring it on unsupported Rubies will result in a no-op
|
9
13
|
|
10
14
|
Usage
|
11
15
|
-----
|
@@ -13,17 +17,24 @@ Usage
|
|
13
17
|
```ruby
|
14
18
|
require 'debug_inspector'
|
15
19
|
|
16
|
-
#
|
17
|
-
|
20
|
+
# Open debug context
|
21
|
+
# Passed `dc' is only active in a block
|
22
|
+
RubyVM::DebugInspector.open { |dc|
|
23
|
+
# backtrace locations (returns an array of Thread::Backtrace::Location objects)
|
24
|
+
locs = dc.backtrace_locations
|
18
25
|
|
19
|
-
#
|
20
|
-
|
26
|
+
# you can get depth of stack frame with `locs.size'
|
27
|
+
locs.size.times do |i|
|
28
|
+
# binding of i-th caller frame (returns a Binding object or nil)
|
29
|
+
p dc.frame_binding(i)
|
21
30
|
|
22
|
-
#
|
23
|
-
|
31
|
+
# iseq of i-th caller frame (returns a RubyVM::InstructionSequence object or nil)
|
32
|
+
p dc.frame_iseq(i)
|
24
33
|
|
25
|
-
#
|
26
|
-
|
34
|
+
# class of i-th caller frame
|
35
|
+
p dc.frame_class(i)
|
36
|
+
end
|
37
|
+
}
|
27
38
|
```
|
28
39
|
|
29
40
|
Contact
|
@@ -36,7 +47,7 @@ License
|
|
36
47
|
|
37
48
|
(The MIT License)
|
38
49
|
|
39
|
-
Copyright (c) 2012 (John Mair)
|
50
|
+
Copyright (c) 2012-2013 (John Mair)
|
40
51
|
|
41
52
|
Permission is hereby granted, free of charge, to any person obtaining
|
42
53
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
$:.unshift 'lib'
|
2
2
|
require 'rake/clean'
|
3
3
|
require "debug_inspector/version"
|
4
|
+
require 'rake/testtask'
|
4
5
|
|
5
6
|
dlext = RbConfig::CONFIG['DLEXT']
|
6
7
|
direc = File.expand_path(File.dirname(__FILE__))
|
@@ -8,18 +9,21 @@ CLOBBER.include("**/*.#{dlext}", "**/*~", "**/*#*", "**/*.log", "**/*.o")
|
|
8
9
|
CLEAN.include("ext/**/*.#{dlext}", "ext/**/*.log", "ext/**/*.o",
|
9
10
|
"ext/**/*~", "ext/**/*#*", "ext/**/*.obj", "**/*#*", "**/*#*.*",
|
10
11
|
"ext/**/*.def", "ext/**/*.pdb", "**/*_flymake*.*", "**/*_flymake", "**/*.rbc")
|
12
|
+
|
13
|
+
Rake::TestTask.new(:test) do |t|
|
14
|
+
t.libs << "test"
|
15
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
16
|
+
t.warning = true
|
17
|
+
t.verbose = true
|
18
|
+
end
|
19
|
+
|
11
20
|
desc "Show version"
|
12
21
|
task :version do
|
13
22
|
puts "debug_inspector version: #{DebugInspector::VERSION}"
|
14
23
|
end
|
15
24
|
|
16
25
|
desc "run tests"
|
17
|
-
task :default => [:test]
|
18
|
-
|
19
|
-
desc "Run tests"
|
20
|
-
task :test do
|
21
|
-
sh "bacon -Itest -rubygems -a -q"
|
22
|
-
end
|
26
|
+
task :default => [:compile, :test]
|
23
27
|
|
24
28
|
task :pry do
|
25
29
|
puts "loading debug_inspector into pry"
|
data/debug_inspector.gemspec
CHANGED
@@ -10,15 +10,7 @@
|
|
10
10
|
**********************************************************************/
|
11
11
|
|
12
12
|
#include "ruby/ruby.h"
|
13
|
-
|
14
|
-
typedef struct rb_debug_inspector_struct rb_debug_inspector_t;
|
15
|
-
typedef VALUE (*rb_debug_inspector_func_t)(const rb_debug_inspector_t *, void *);
|
16
|
-
|
17
|
-
VALUE rb_debug_inspector_open(rb_debug_inspector_func_t func, void *data);
|
18
|
-
VALUE rb_debug_inspector_frame_binding_get(const rb_debug_inspector_t *dc, int index);
|
19
|
-
VALUE rb_debug_inspector_frame_class_get(const rb_debug_inspector_t *dc, int index);
|
20
|
-
VALUE rb_debug_inspector_frame_iseq_get(const rb_debug_inspector_t *dc, int index);
|
21
|
-
VALUE rb_debug_inspector_backtrace_locations(const rb_debug_inspector_t *dc);
|
13
|
+
#include "ruby/debug.h"
|
22
14
|
|
23
15
|
static size_t
|
24
16
|
di_size(const void *dummy)
|
@@ -37,7 +29,7 @@ di_get_dc(VALUE self)
|
|
37
29
|
const rb_debug_inspector_t *dc;
|
38
30
|
TypedData_Get_Struct(self, const rb_debug_inspector_t, &di_data_type, dc);
|
39
31
|
if (dc == 0) {
|
40
|
-
rb_raise(rb_eArgError, "invalid
|
32
|
+
rb_raise(rb_eArgError, "invalid debug context");
|
41
33
|
}
|
42
34
|
return dc;
|
43
35
|
}
|
@@ -70,6 +62,13 @@ di_frame_iseq(VALUE self, VALUE index)
|
|
70
62
|
return rb_debug_inspector_frame_iseq_get(dc, NUM2INT(index));
|
71
63
|
}
|
72
64
|
|
65
|
+
static VALUE
|
66
|
+
di_frame_self(VALUE self, VALUE index)
|
67
|
+
{
|
68
|
+
const rb_debug_inspector_t *dc = di_get_dc(self);
|
69
|
+
return rb_debug_inspector_frame_self_get(dc, NUM2INT(index));
|
70
|
+
}
|
71
|
+
|
73
72
|
static VALUE
|
74
73
|
breakpoint_i(const rb_debug_inspector_t *dc, void *ptr)
|
75
74
|
{
|
@@ -114,4 +113,5 @@ Init_debug_inspector(void)
|
|
114
113
|
rb_define_method(cDebugInspector, "frame_binding", di_binding, 1);
|
115
114
|
rb_define_method(cDebugInspector, "frame_class", di_frame_class, 1);
|
116
115
|
rb_define_method(cDebugInspector, "frame_iseq", di_frame_iseq, 1);
|
116
|
+
rb_define_method(cDebugInspector, "frame_self", di_frame_self, 1);
|
117
117
|
}
|
data/test/basic_test.rb
ADDED
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,16 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: debug_inspector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- John Mair (banisterfiend)
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
11
|
+
date: 2017-05-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5'
|
14
27
|
description: A Ruby wrapper for the MRI 2.0 debug_inspector API
|
15
28
|
email:
|
16
29
|
- jrmair@gmail.com
|
@@ -19,6 +32,8 @@ extensions:
|
|
19
32
|
- ext/debug_inspector/extconf.rb
|
20
33
|
extra_rdoc_files: []
|
21
34
|
files:
|
35
|
+
- ".travis.yml"
|
36
|
+
- Gemfile
|
22
37
|
- README.md
|
23
38
|
- Rakefile
|
24
39
|
- debug_inspector.gemspec
|
@@ -26,28 +41,30 @@ files:
|
|
26
41
|
- ext/debug_inspector/extconf.rb
|
27
42
|
- lib/debug_inspector.rb
|
28
43
|
- lib/debug_inspector/version.rb
|
44
|
+
- test/basic_test.rb
|
45
|
+
- test/test_helper.rb
|
29
46
|
homepage: https://github.com/banister/debug_inspector
|
30
|
-
licenses:
|
47
|
+
licenses:
|
48
|
+
- MIT
|
49
|
+
metadata: {}
|
31
50
|
post_install_message:
|
32
51
|
rdoc_options: []
|
33
52
|
require_paths:
|
34
53
|
- lib
|
35
54
|
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
55
|
requirements:
|
38
|
-
- -
|
56
|
+
- - ">="
|
39
57
|
- !ruby/object:Gem::Version
|
40
58
|
version: '0'
|
41
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
60
|
requirements:
|
44
|
-
- -
|
61
|
+
- - ">="
|
45
62
|
- !ruby/object:Gem::Version
|
46
63
|
version: '0'
|
47
64
|
requirements: []
|
48
65
|
rubyforge_project:
|
49
|
-
rubygems_version:
|
66
|
+
rubygems_version: 2.5.1
|
50
67
|
signing_key:
|
51
|
-
specification_version:
|
68
|
+
specification_version: 4
|
52
69
|
summary: A Ruby wrapper for the MRI 2.0 debug_inspector API
|
53
70
|
test_files: []
|