debase 0.1.7 → 0.1.8
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 +4 -4
- data/{README → README.md} +10 -5
- data/ext/context.c +2 -2
- data/ext/debase_internals.c +31 -3
- data/ext/debase_internals.h +1 -1
- data/lib/debase/context.rb +16 -3
- data/lib/debase/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b8071801790f34bce830bdd5a2bb8b57108df2e
|
4
|
+
data.tar.gz: 6cd1dd3915b8fcb14dc46672f7f9322bde458595
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e123a89bfd5e489a8d4fa32e96073db799d7282c4ee19cda94b55a4f997a862f8acc883bc8d747abe3a937edb77bea18a084194328434d7985d3bef2c6e39d9c
|
7
|
+
data.tar.gz: 7dd979b629f781e3a25a2eca95935788f1ad4d089c34d4692472feaa01cbdc8f63c8b5011848f9a2a644228513ed43f080cca4b157b7d078a1709df71de19d11
|
data/{README → README.md}
RENAMED
@@ -1,22 +1,27 @@
|
|
1
|
-
|
1
|
+
[gem]: https://rubygems.org/gems/debase
|
2
|
+
[travis]: https://travis-ci.org/denofevil/debase
|
2
3
|
|
3
|
-
|
4
|
+
# debase
|
5
|
+
[][gem]
|
6
|
+
[][travis]
|
7
|
+
|
8
|
+
## Overview
|
4
9
|
|
5
10
|
debase is a fast implementation of the standard debugger debug.rb for
|
6
11
|
Ruby 2.0.0. The faster execution speed and 2.0.0 compatibility is achieved
|
7
12
|
by utilizing a TracePoint mechanism in the Ruby C API.
|
8
13
|
|
9
|
-
|
14
|
+
## Requirements
|
10
15
|
|
11
16
|
debase requires Ruby 2.0.0 or higher.
|
12
17
|
|
13
|
-
|
18
|
+
## Install
|
14
19
|
|
15
20
|
debase is provided as a RubyGem. To install:
|
16
21
|
|
17
22
|
<tt>gem install debase</tt>
|
18
23
|
|
19
|
-
|
24
|
+
## License
|
20
25
|
|
21
26
|
debase contains parts of the code from ruby-debug-base gem.
|
22
27
|
See MIT_LICENSE and LICENSE for license information.
|
data/ext/context.c
CHANGED
@@ -24,7 +24,7 @@ Context_thnum(VALUE self) {
|
|
24
24
|
}
|
25
25
|
|
26
26
|
static inline void
|
27
|
-
fill_frame(debug_frame_t *frame, char* file, int line, VALUE binding, VALUE self)
|
27
|
+
fill_frame(debug_frame_t *frame, const char* file, int line, VALUE binding, VALUE self)
|
28
28
|
{
|
29
29
|
frame->file = file;
|
30
30
|
frame->line = line;
|
@@ -39,7 +39,7 @@ fill_stack(debug_context_t *context, const rb_debug_inspector_t *inspector) {
|
|
39
39
|
VALUE location;
|
40
40
|
VALUE path;
|
41
41
|
VALUE lineno;
|
42
|
-
char *file;
|
42
|
+
const char *file;
|
43
43
|
int line;
|
44
44
|
int stack_size;
|
45
45
|
int i;
|
data/ext/debase_internals.c
CHANGED
@@ -5,7 +5,7 @@ static VALUE mDebase; /* Ruby Debase Module object */
|
|
5
5
|
static VALUE cContext;
|
6
6
|
static VALUE cDebugThread;
|
7
7
|
|
8
|
-
static VALUE
|
8
|
+
static VALUE verbose = Qfalse;
|
9
9
|
static VALUE locker = Qnil;
|
10
10
|
static VALUE contexts;
|
11
11
|
static VALUE catchpoints;
|
@@ -37,7 +37,7 @@ Debase_thread_context(VALUE self, VALUE thread)
|
|
37
37
|
static VALUE
|
38
38
|
Debase_current_context(VALUE self)
|
39
39
|
{
|
40
|
-
return Debase_thread_context(self, rb_thread_current());
|
40
|
+
return Debase_thread_context(self, rb_thread_current());
|
41
41
|
}
|
42
42
|
|
43
43
|
static int
|
@@ -133,7 +133,7 @@ print_event(rb_trace_point_t *tp, debug_context_t *context)
|
|
133
133
|
VALUE rb_cl_name;
|
134
134
|
const char *defined_class;
|
135
135
|
|
136
|
-
if (
|
136
|
+
if (verbose == Qtrue) {
|
137
137
|
path = rb_tracearg_path(tp);
|
138
138
|
line = rb_tracearg_lineno(tp);
|
139
139
|
event = rb_tracearg_event(tp);
|
@@ -473,6 +473,32 @@ Debase_started(VALUE self)
|
|
473
473
|
{
|
474
474
|
return catchpoints != Qnil ? Qtrue : Qfalse;
|
475
475
|
}
|
476
|
+
|
477
|
+
/*
|
478
|
+
* call-seq:
|
479
|
+
* Debase.verbose? -> bool
|
480
|
+
*
|
481
|
+
* Returns +true+ if verbose output of TracePoint API events is enabled.
|
482
|
+
*/
|
483
|
+
static VALUE
|
484
|
+
Debase_verbose(VALUE self)
|
485
|
+
{
|
486
|
+
return verbose;
|
487
|
+
}
|
488
|
+
|
489
|
+
/*
|
490
|
+
* call-seq:
|
491
|
+
* Debase.verbose = bool
|
492
|
+
*
|
493
|
+
* Enable verbose output of every TracePoint API events, useful for debugging debase.
|
494
|
+
*/
|
495
|
+
static VALUE
|
496
|
+
Debase_set_verbose(VALUE self, VALUE value)
|
497
|
+
{
|
498
|
+
verbose = RTEST(value) ? Qtrue : Qfalse;
|
499
|
+
return value;
|
500
|
+
}
|
501
|
+
|
476
502
|
/*
|
477
503
|
* Document-class: Debase
|
478
504
|
*
|
@@ -493,6 +519,8 @@ Init_debase_internals()
|
|
493
519
|
rb_define_module_function(mDebase, "breakpoints", Debase_breakpoints, 0);
|
494
520
|
rb_define_module_function(mDebase, "catchpoints", Debase_catchpoints, 0);
|
495
521
|
rb_define_module_function(mDebase, "started?", Debase_started, 0);
|
522
|
+
rb_define_module_function(mDebase, "verbose?", Debase_verbose, 0);
|
523
|
+
rb_define_module_function(mDebase, "verbose=", Debase_set_verbose, 1);
|
496
524
|
|
497
525
|
idAlive = rb_intern("alive?");
|
498
526
|
idAtLine = rb_intern("at_line");
|
data/ext/debase_internals.h
CHANGED
data/lib/debase/context.rb
CHANGED
@@ -5,12 +5,14 @@ module Debase
|
|
5
5
|
binding = frame_binding(frame_no)
|
6
6
|
locals = eval("local_variables", binding)
|
7
7
|
if locals.respond_to?(:each)
|
8
|
-
locals.each
|
8
|
+
locals.each do |local|
|
9
|
+
result[local.to_s] = safe_eval(local.to_s, binding)
|
10
|
+
end
|
9
11
|
else
|
10
|
-
result[locals.to_s] =
|
12
|
+
result[locals.to_s] = safe_eval(locals.to_s, binding)
|
11
13
|
end
|
12
14
|
result
|
13
|
-
end
|
15
|
+
end
|
14
16
|
|
15
17
|
def frame_class(frame_no=0)
|
16
18
|
frame_self(frame_no).class
|
@@ -44,5 +46,16 @@ module Debase
|
|
44
46
|
def at_return(file, line)
|
45
47
|
handler.at_return(self, file, line)
|
46
48
|
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def safe_eval(expr, binding)
|
53
|
+
begin
|
54
|
+
eval(expr, binding)
|
55
|
+
rescue => e
|
56
|
+
"*Evaluation error: '#{e}'"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
47
60
|
end
|
48
61
|
end
|
data/lib/debase/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: debase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Ushakov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase-ruby_core_source
|
@@ -69,7 +69,7 @@ files:
|
|
69
69
|
- Gemfile
|
70
70
|
- LICENSE
|
71
71
|
- MIT_LICENSE
|
72
|
-
- README
|
72
|
+
- README.md
|
73
73
|
- Rakefile
|
74
74
|
- debase.gemspec
|
75
75
|
- ext/breakpoint.c
|