debug_inspector 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Build Status](https://travis-ci.org/banister/debug_inspector.svg?branch=master)](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: []
|