jets 0.5.5 → 0.5.6
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/CHANGELOG.md +3 -0
- data/Gemfile.lock +1 -1
- data/lib/jets/builders/code_builder.rb +1 -0
- data/lib/jets/builders/gem_replacer.rb +1 -0
- data/lib/jets/version.rb +1 -1
- data/vendor/lambdagem/CHANGELOG.md +3 -0
- data/vendor/lambdagem/Gemfile.lock +3 -3
- data/vendor/lambdagem/README.md +0 -4
- data/vendor/lambdagem/lib/lambdagem.rb +2 -0
- data/vendor/lambdagem/lib/lambdagem/base.rb +2 -0
- data/vendor/lambdagem/lib/lambdagem/extract/base.rb +6 -6
- data/vendor/lambdagem/lib/lambdagem/extract/gem.rb +6 -5
- data/vendor/lambdagem/lib/lambdagem/extract/ruby.rb +4 -3
- data/vendor/lambdagem/lib/lambdagem/util.rb +30 -0
- data/vendor/lambdagem/lib/lambdagem/version.rb +1 -1
- metadata +3 -140
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/byebug-10.0.0/byebug/byebug.so +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/byebug-10.0.0/gem.build_complete +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/byebug-10.0.0/gem_make.out +0 -19
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/LICENSE +0 -23
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/exe/byebug +0 -6
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/Makefile +0 -263
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/breakpoint.c +0 -517
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/breakpoint.o +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/byebug.c +0 -905
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/byebug.h +0 -143
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/byebug.o +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/byebug.so +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/context.c +0 -673
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/context.o +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/extconf.rb +0 -12
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/locker.c +0 -96
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/locker.o +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/threads.c +0 -230
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/ext/byebug/threads.o +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug.rb +0 -3
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/attacher.rb +0 -48
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/breakpoint.rb +0 -111
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/byebug.so +0 -0
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/command.rb +0 -111
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/command_list.rb +0 -34
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands.rb +0 -39
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/break.rb +0 -116
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/catch.rb +0 -82
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/condition.rb +0 -57
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/continue.rb +0 -50
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/debug.rb +0 -38
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/delete.rb +0 -57
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/disable.rb +0 -33
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/disable/breakpoints.rb +0 -42
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/disable/display.rb +0 -43
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/display.rb +0 -66
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/down.rb +0 -45
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/edit.rb +0 -68
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/enable.rb +0 -33
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/enable/breakpoints.rb +0 -42
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/enable/display.rb +0 -43
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/finish.rb +0 -57
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/frame.rb +0 -57
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/help.rb +0 -64
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/history.rb +0 -39
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/info.rb +0 -37
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/info/breakpoints.rb +0 -67
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/info/display.rb +0 -51
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/info/file.rb +0 -82
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/info/line.rb +0 -35
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/info/program.rb +0 -49
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/interrupt.rb +0 -34
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/irb.rb +0 -52
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/kill.rb +0 -47
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/list.rb +0 -159
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/method.rb +0 -53
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/next.rb +0 -40
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/pry.rb +0 -43
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/quit.rb +0 -42
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/restart.rb +0 -64
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/save.rb +0 -72
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/set.rb +0 -79
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/show.rb +0 -45
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/source.rb +0 -42
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/step.rb +0 -40
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/thread.rb +0 -34
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/thread/current.rb +0 -37
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/thread/list.rb +0 -43
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/thread/resume.rb +0 -47
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/thread/stop.rb +0 -43
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/thread/switch.rb +0 -46
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/tracevar.rb +0 -57
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/undisplay.rb +0 -52
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/untracevar.rb +0 -36
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/up.rb +0 -45
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/var.rb +0 -37
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/var/all.rb +0 -41
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/var/args.rb +0 -39
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/var/const.rb +0 -51
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/var/global.rb +0 -37
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/var/instance.rb +0 -39
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/var/local.rb +0 -39
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/commands/where.rb +0 -53
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/context.rb +0 -157
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/core.rb +0 -114
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/errors.rb +0 -29
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/frame.rb +0 -185
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/bin.rb +0 -47
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/eval.rb +0 -126
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/file.rb +0 -63
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/frame.rb +0 -75
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/parse.rb +0 -77
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/path.rb +0 -40
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/reflection.rb +0 -19
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/string.rb +0 -36
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/thread.rb +0 -67
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/toggle.rb +0 -64
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/helpers/var.rb +0 -54
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/history.rb +0 -130
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/interface.rb +0 -146
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/interfaces/local_interface.rb +0 -44
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/interfaces/remote_interface.rb +0 -50
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/interfaces/script_interface.rb +0 -32
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/interfaces/test_interface.rb +0 -67
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/option_setter.rb +0 -95
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/printers/base.rb +0 -69
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/printers/plain.rb +0 -44
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/printers/texts/base.yml +0 -115
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/printers/texts/plain.yml +0 -33
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/processors/command_processor.rb +0 -173
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/processors/control_processor.rb +0 -24
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/processors/post_mortem_processor.rb +0 -18
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/processors/script_processor.rb +0 -49
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/remote.rb +0 -85
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/remote/client.rb +0 -55
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/remote/server.rb +0 -47
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/runner.rb +0 -198
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/setting.rb +0 -79
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/autoirb.rb +0 -29
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/autolist.rb +0 -29
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/autopry.rb +0 -29
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/autosave.rb +0 -17
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/basename.rb +0 -16
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/callstyle.rb +0 -20
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/fullpath.rb +0 -16
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/histfile.rb +0 -20
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/histsize.rb +0 -20
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/linetrace.rb +0 -22
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/listsize.rb +0 -21
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/post_mortem.rb +0 -27
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/savefile.rb +0 -20
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/stack_on_error.rb +0 -15
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/settings/width.rb +0 -20
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/source_file_formatter.rb +0 -71
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/subcommands.rb +0 -54
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/gems/byebug-10.0.0/lib/byebug/version.rb +0 -8
- data/vendor/lambdagem/bundled/gems/ruby/2.5.0/specifications/byebug-10.0.0.gemspec +0 -39
Binary file
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "mkmf"
|
4
|
-
|
5
|
-
makefile_config = RbConfig::MAKEFILE_CONFIG
|
6
|
-
|
7
|
-
makefile_config["CC"] = ENV["CC"] if ENV["CC"]
|
8
|
-
|
9
|
-
makefile_config["CFLAGS"] << " -gdwarf-2 -g3 -O0" if ENV["debug"]
|
10
|
-
|
11
|
-
dir_config("ruby")
|
12
|
-
with_cflags(makefile_config["CFLAGS"]) { create_makefile("byebug/byebug") }
|
@@ -1,96 +0,0 @@
|
|
1
|
-
#include "byebug.h"
|
2
|
-
|
3
|
-
/**
|
4
|
-
* A simple linked list containing locked threads, FIFO style.
|
5
|
-
*/
|
6
|
-
|
7
|
-
typedef struct locked_thread_t
|
8
|
-
{
|
9
|
-
VALUE thread;
|
10
|
-
struct locked_thread_t *next;
|
11
|
-
} locked_thread_t;
|
12
|
-
|
13
|
-
static locked_thread_t *locked_head = NULL;
|
14
|
-
static locked_thread_t *locked_tail = NULL;
|
15
|
-
|
16
|
-
static int
|
17
|
-
is_in_locked(VALUE thread)
|
18
|
-
{
|
19
|
-
locked_thread_t *node;
|
20
|
-
|
21
|
-
if (!locked_head)
|
22
|
-
return 0;
|
23
|
-
|
24
|
-
for (node = locked_head; node != locked_tail; node = node->next)
|
25
|
-
if (node->thread == thread)
|
26
|
-
return 1;
|
27
|
-
|
28
|
-
return 0;
|
29
|
-
}
|
30
|
-
|
31
|
-
extern void
|
32
|
-
add_to_locked(VALUE thread)
|
33
|
-
{
|
34
|
-
locked_thread_t *node;
|
35
|
-
|
36
|
-
if (is_in_locked(thread))
|
37
|
-
return;
|
38
|
-
|
39
|
-
node = ALLOC(locked_thread_t);
|
40
|
-
node->thread = thread;
|
41
|
-
node->next = NULL;
|
42
|
-
|
43
|
-
if (locked_tail)
|
44
|
-
locked_tail->next = node;
|
45
|
-
|
46
|
-
locked_tail = node;
|
47
|
-
|
48
|
-
if (!locked_head)
|
49
|
-
locked_head = node;
|
50
|
-
}
|
51
|
-
|
52
|
-
extern VALUE
|
53
|
-
pop_from_locked()
|
54
|
-
{
|
55
|
-
VALUE thread;
|
56
|
-
locked_thread_t *node;
|
57
|
-
|
58
|
-
if (!locked_head)
|
59
|
-
return Qnil;
|
60
|
-
|
61
|
-
node = locked_head;
|
62
|
-
locked_head = locked_head->next;
|
63
|
-
|
64
|
-
if (locked_tail == node)
|
65
|
-
locked_tail = NULL;
|
66
|
-
|
67
|
-
thread = node->thread;
|
68
|
-
xfree(node);
|
69
|
-
|
70
|
-
return thread;
|
71
|
-
}
|
72
|
-
|
73
|
-
extern void
|
74
|
-
remove_from_locked(VALUE thread)
|
75
|
-
{
|
76
|
-
locked_thread_t *node;
|
77
|
-
locked_thread_t *next_node;
|
78
|
-
|
79
|
-
if (NIL_P(thread) || !locked_head || !is_in_locked(thread))
|
80
|
-
return;
|
81
|
-
|
82
|
-
if (locked_head->thread == thread)
|
83
|
-
{
|
84
|
-
pop_from_locked();
|
85
|
-
return;
|
86
|
-
}
|
87
|
-
|
88
|
-
for (node = locked_head; node != locked_tail; node = node->next)
|
89
|
-
if (node->next && node->next->thread == thread)
|
90
|
-
{
|
91
|
-
next_node = node->next;
|
92
|
-
node->next = next_node->next;
|
93
|
-
xfree(next_node);
|
94
|
-
return;
|
95
|
-
}
|
96
|
-
}
|
Binary file
|
@@ -1,230 +0,0 @@
|
|
1
|
-
#include "byebug.h"
|
2
|
-
|
3
|
-
/* Threads table class */
|
4
|
-
static VALUE cThreadsTable;
|
5
|
-
|
6
|
-
/* If not Qnil, holds the next thread that must be run */
|
7
|
-
VALUE next_thread = Qnil;
|
8
|
-
|
9
|
-
/* To allow thread syncronization, we must stop threads when debugging */
|
10
|
-
static VALUE locker = Qnil;
|
11
|
-
|
12
|
-
static int
|
13
|
-
t_tbl_mark_keyvalue(st_data_t key, st_data_t value, st_data_t tbl)
|
14
|
-
{
|
15
|
-
UNUSED(tbl);
|
16
|
-
|
17
|
-
rb_gc_mark((VALUE)key);
|
18
|
-
|
19
|
-
if (!value)
|
20
|
-
return ST_CONTINUE;
|
21
|
-
|
22
|
-
rb_gc_mark((VALUE)value);
|
23
|
-
|
24
|
-
return ST_CONTINUE;
|
25
|
-
}
|
26
|
-
|
27
|
-
static void
|
28
|
-
t_tbl_mark(void *data)
|
29
|
-
{
|
30
|
-
threads_table_t *t_tbl = (threads_table_t *)data;
|
31
|
-
st_table *tbl = t_tbl->tbl;
|
32
|
-
|
33
|
-
st_foreach(tbl, t_tbl_mark_keyvalue, (st_data_t)tbl);
|
34
|
-
}
|
35
|
-
|
36
|
-
static void
|
37
|
-
t_tbl_free(void *data)
|
38
|
-
{
|
39
|
-
threads_table_t *t_tbl = (threads_table_t *)data;
|
40
|
-
|
41
|
-
st_free_table(t_tbl->tbl);
|
42
|
-
xfree(t_tbl);
|
43
|
-
}
|
44
|
-
|
45
|
-
/*
|
46
|
-
* Creates a numeric hash whose keys are the currently active threads and
|
47
|
-
* whose values are their associated contexts.
|
48
|
-
*/
|
49
|
-
VALUE
|
50
|
-
create_threads_table(void)
|
51
|
-
{
|
52
|
-
threads_table_t *t_tbl;
|
53
|
-
|
54
|
-
t_tbl = ALLOC(threads_table_t);
|
55
|
-
t_tbl->tbl = st_init_numtable();
|
56
|
-
return Data_Wrap_Struct(cThreadsTable, t_tbl_mark, t_tbl_free, t_tbl);
|
57
|
-
}
|
58
|
-
|
59
|
-
/*
|
60
|
-
* Checks a single entry in the threads table.
|
61
|
-
*
|
62
|
-
* If it has no associated context or the key doesn't correspond to a living
|
63
|
-
* thread, the entry is removed from the thread's list.
|
64
|
-
*/
|
65
|
-
static int
|
66
|
-
check_thread_i(st_data_t key, st_data_t value, st_data_t data)
|
67
|
-
{
|
68
|
-
UNUSED(data);
|
69
|
-
|
70
|
-
if (!value)
|
71
|
-
return ST_DELETE;
|
72
|
-
|
73
|
-
if (!is_living_thread((VALUE)key))
|
74
|
-
return ST_DELETE;
|
75
|
-
|
76
|
-
return ST_CONTINUE;
|
77
|
-
}
|
78
|
-
|
79
|
-
/*
|
80
|
-
* Checks whether a thread is either in the running or sleeping state.
|
81
|
-
*/
|
82
|
-
int
|
83
|
-
is_living_thread(VALUE thread)
|
84
|
-
{
|
85
|
-
VALUE status = rb_funcall(thread, rb_intern("status"), 0);
|
86
|
-
|
87
|
-
if (NIL_P(status) || status == Qfalse)
|
88
|
-
return 0;
|
89
|
-
|
90
|
-
if (rb_str_cmp(status, rb_str_new2("run")) == 0
|
91
|
-
|| rb_str_cmp(status, rb_str_new2("sleep")) == 0)
|
92
|
-
return 1;
|
93
|
-
|
94
|
-
return 0;
|
95
|
-
}
|
96
|
-
|
97
|
-
/*
|
98
|
-
* Checks threads table for dead/finished threads.
|
99
|
-
*/
|
100
|
-
static void
|
101
|
-
cleanup_dead_threads(void)
|
102
|
-
{
|
103
|
-
threads_table_t *t_tbl;
|
104
|
-
|
105
|
-
Data_Get_Struct(threads, threads_table_t, t_tbl);
|
106
|
-
st_foreach(t_tbl->tbl, check_thread_i, 0);
|
107
|
-
}
|
108
|
-
|
109
|
-
/*
|
110
|
-
* Looks up a context in the threads table. If not present, it creates it.
|
111
|
-
*/
|
112
|
-
void
|
113
|
-
thread_context_lookup(VALUE thread, VALUE *context)
|
114
|
-
{
|
115
|
-
threads_table_t *t_tbl;
|
116
|
-
|
117
|
-
Data_Get_Struct(threads, threads_table_t, t_tbl);
|
118
|
-
|
119
|
-
if (!st_lookup(t_tbl->tbl, thread, context) || !*context)
|
120
|
-
{
|
121
|
-
*context = context_create(thread);
|
122
|
-
st_insert(t_tbl->tbl, thread, *context);
|
123
|
-
}
|
124
|
-
}
|
125
|
-
|
126
|
-
/*
|
127
|
-
* Holds thread execution while another thread is active.
|
128
|
-
*
|
129
|
-
* Thanks to this, all threads are "frozen" while the user is typing commands.
|
130
|
-
*/
|
131
|
-
void
|
132
|
-
acquire_lock(debug_context_t *dc)
|
133
|
-
{
|
134
|
-
while ((!NIL_P(locker) && locker != rb_thread_current())
|
135
|
-
|| CTX_FL_TEST(dc, CTX_FL_SUSPEND))
|
136
|
-
{
|
137
|
-
add_to_locked(rb_thread_current());
|
138
|
-
rb_thread_stop();
|
139
|
-
|
140
|
-
if (CTX_FL_TEST(dc, CTX_FL_SUSPEND))
|
141
|
-
CTX_FL_SET(dc, CTX_FL_WAS_RUNNING);
|
142
|
-
}
|
143
|
-
|
144
|
-
locker = rb_thread_current();
|
145
|
-
}
|
146
|
-
|
147
|
-
/*
|
148
|
-
* Releases our global lock and passes execution on to another thread, either
|
149
|
-
* the thread specified by +next_thread+ or any other thread if +next_thread+
|
150
|
-
* is nil.
|
151
|
-
*/
|
152
|
-
void
|
153
|
-
release_lock(void)
|
154
|
-
{
|
155
|
-
VALUE thread;
|
156
|
-
|
157
|
-
cleanup_dead_threads();
|
158
|
-
|
159
|
-
locker = Qnil;
|
160
|
-
|
161
|
-
if (NIL_P(next_thread))
|
162
|
-
thread = pop_from_locked();
|
163
|
-
else
|
164
|
-
{
|
165
|
-
remove_from_locked(next_thread);
|
166
|
-
thread = next_thread;
|
167
|
-
next_thread = Qnil;
|
168
|
-
}
|
169
|
-
|
170
|
-
if (!NIL_P(thread) && is_living_thread(thread))
|
171
|
-
rb_thread_run(thread);
|
172
|
-
}
|
173
|
-
|
174
|
-
/*
|
175
|
-
* call-seq:
|
176
|
-
* Byebug.unlock -> nil
|
177
|
-
*
|
178
|
-
* Unlocks global switch so other threads can run.
|
179
|
-
*/
|
180
|
-
static VALUE
|
181
|
-
Unlock(VALUE self)
|
182
|
-
{
|
183
|
-
UNUSED(self);
|
184
|
-
|
185
|
-
release_lock();
|
186
|
-
|
187
|
-
return locker;
|
188
|
-
}
|
189
|
-
|
190
|
-
/*
|
191
|
-
* call-seq:
|
192
|
-
* Byebug.lock -> Thread.current
|
193
|
-
*
|
194
|
-
* Locks global switch to reserve execution to current thread exclusively.
|
195
|
-
*/
|
196
|
-
static VALUE
|
197
|
-
Lock(VALUE self)
|
198
|
-
{
|
199
|
-
debug_context_t *dc;
|
200
|
-
VALUE context;
|
201
|
-
|
202
|
-
UNUSED(self);
|
203
|
-
|
204
|
-
if (!is_living_thread(rb_thread_current()))
|
205
|
-
rb_raise(rb_eRuntimeError, "Current thread is dead!");
|
206
|
-
|
207
|
-
thread_context_lookup(rb_thread_current(), &context);
|
208
|
-
Data_Get_Struct(context, debug_context_t, dc);
|
209
|
-
|
210
|
-
acquire_lock(dc);
|
211
|
-
|
212
|
-
return locker;
|
213
|
-
}
|
214
|
-
|
215
|
-
/*
|
216
|
-
*
|
217
|
-
* Document-class: ThreadsTable
|
218
|
-
*
|
219
|
-
* == Sumary
|
220
|
-
*
|
221
|
-
* Hash table holding currently active threads and their associated contexts
|
222
|
-
*/
|
223
|
-
void
|
224
|
-
Init_threads_table(VALUE mByebug)
|
225
|
-
{
|
226
|
-
cThreadsTable = rb_define_class_under(mByebug, "ThreadsTable", rb_cObject);
|
227
|
-
|
228
|
-
rb_define_module_function(mByebug, "unlock", Unlock, 0);
|
229
|
-
rb_define_module_function(mByebug, "lock", Lock, 0);
|
230
|
-
}
|
Binary file
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
# Main Container for all of Byebug's code
|
5
|
-
#
|
6
|
-
module Byebug
|
7
|
-
#
|
8
|
-
# Starts byebug, and stops at the first line of user's code.
|
9
|
-
#
|
10
|
-
def self.attach
|
11
|
-
require "byebug/core"
|
12
|
-
|
13
|
-
unless started?
|
14
|
-
self.mode = :attached
|
15
|
-
|
16
|
-
start
|
17
|
-
run_init_script
|
18
|
-
end
|
19
|
-
|
20
|
-
current_context.step_out(3, true)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.spawn(host = "localhost", port = nil)
|
24
|
-
require "byebug/core"
|
25
|
-
|
26
|
-
self.wait_connection = true
|
27
|
-
start_server(host, port || PORT)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
#
|
32
|
-
# Adds a `byebug` method to the Kernel module.
|
33
|
-
#
|
34
|
-
# Dropping a `byebug` call anywhere in your code, you get a debug prompt.
|
35
|
-
#
|
36
|
-
module Kernel
|
37
|
-
def byebug
|
38
|
-
Byebug.attach
|
39
|
-
end
|
40
|
-
|
41
|
-
def remote_byebug(host = "localhost", port = nil)
|
42
|
-
Byebug.spawn(host, port)
|
43
|
-
|
44
|
-
Byebug.attach
|
45
|
-
end
|
46
|
-
|
47
|
-
alias debugger byebug
|
48
|
-
end
|
@@ -1,111 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Byebug
|
4
|
-
#
|
5
|
-
# Implements breakpoints
|
6
|
-
#
|
7
|
-
class Breakpoint
|
8
|
-
#
|
9
|
-
# First breakpoint, in order of creation
|
10
|
-
#
|
11
|
-
def self.first
|
12
|
-
Byebug.breakpoints.first
|
13
|
-
end
|
14
|
-
|
15
|
-
#
|
16
|
-
# Last breakpoint, in order of creation
|
17
|
-
#
|
18
|
-
def self.last
|
19
|
-
Byebug.breakpoints.last
|
20
|
-
end
|
21
|
-
|
22
|
-
#
|
23
|
-
# Adds a new breakpoint
|
24
|
-
#
|
25
|
-
# @param [String] file
|
26
|
-
# @param [Fixnum] line
|
27
|
-
# @param [String] expr
|
28
|
-
#
|
29
|
-
def self.add(file, line, expr = nil)
|
30
|
-
breakpoint = Breakpoint.new(file, line, expr)
|
31
|
-
Byebug.breakpoints << breakpoint
|
32
|
-
breakpoint
|
33
|
-
end
|
34
|
-
|
35
|
-
#
|
36
|
-
# Removes a breakpoint
|
37
|
-
#
|
38
|
-
# @param id [integer] breakpoint number
|
39
|
-
#
|
40
|
-
def self.remove(id)
|
41
|
-
Byebug.breakpoints.reject! { |b| b.id == id }
|
42
|
-
end
|
43
|
-
|
44
|
-
#
|
45
|
-
# Returns an array of line numbers in file named +filename+ where
|
46
|
-
# breakpoints could be set. The list will contain an entry for each
|
47
|
-
# distinct line event call so it is possible (and possibly useful) for a
|
48
|
-
# line number appear more than once.
|
49
|
-
#
|
50
|
-
# @param filename [String] File name to inspect for possible breakpoints
|
51
|
-
#
|
52
|
-
def self.potential_lines(filename)
|
53
|
-
name = "#{Time.new.to_i}_#{rand(2**31)}"
|
54
|
-
iseq = RubyVM::InstructionSequence.compile(File.read(filename), name)
|
55
|
-
|
56
|
-
if iseq.respond_to?(:each_child)
|
57
|
-
potential_lines_with_trace_points(iseq, {})
|
58
|
-
else
|
59
|
-
potential_lines_without_trace_points(iseq, {})
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.potential_lines_with_trace_points(iseq, lines)
|
64
|
-
iseq.trace_points.each { |(line, _)| lines[line] = true }
|
65
|
-
iseq.each_child do |child|
|
66
|
-
potential_lines_with_trace_points(child, lines)
|
67
|
-
end
|
68
|
-
|
69
|
-
lines.keys.sort
|
70
|
-
end
|
71
|
-
|
72
|
-
private_class_method :potential_lines_with_trace_points
|
73
|
-
|
74
|
-
def self.potential_lines_without_trace_points(iseq, lines)
|
75
|
-
iseq.disasm.each_line do |line|
|
76
|
-
res = /^\d+ (?<insn>\w+)\s+.+\(\s*(?<lineno>\d+)\)$/.match(line)
|
77
|
-
next unless res && res[:insn] == "trace"
|
78
|
-
|
79
|
-
lines[res[:lineno].to_i] = true
|
80
|
-
end
|
81
|
-
|
82
|
-
lines.keys
|
83
|
-
end
|
84
|
-
|
85
|
-
private_class_method :potential_lines_without_trace_points
|
86
|
-
|
87
|
-
#
|
88
|
-
# Returns true if a breakpoint could be set in line number +lineno+ in file
|
89
|
-
# name +filename.
|
90
|
-
#
|
91
|
-
def self.potential_line?(filename, lineno)
|
92
|
-
potential_lines(filename).member?(lineno)
|
93
|
-
end
|
94
|
-
|
95
|
-
#
|
96
|
-
# True if there's no breakpoints
|
97
|
-
#
|
98
|
-
def self.none?
|
99
|
-
Byebug.breakpoints.empty?
|
100
|
-
end
|
101
|
-
|
102
|
-
#
|
103
|
-
# Prints all information associated to the breakpoint
|
104
|
-
#
|
105
|
-
def inspect
|
106
|
-
meths = %w[id pos source expr hit_condition hit_count hit_value enabled?]
|
107
|
-
values = meths.map { |field| "#{field}: #{send(field)}" }.join(", ")
|
108
|
-
"#<Byebug::Breakpoint #{values}>"
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|