File tree Expand file tree Collapse file tree 5 files changed +52
-8
lines changed
Expand file tree Collapse file tree 5 files changed +52
-8
lines changed Original file line number Diff line number Diff line change @@ -117,6 +117,7 @@ if options.dispatcher_port != -1
117117 else
118118 require_relative '../lib/ruby-debug-ide/multiprocess'
119119 end
120+ Debugger ::MultiProcess . do_monkey
120121
121122 ENV [ 'DEBUGGER_STORED_RUBYLIB' ] = ENV [ 'RUBYLIB' ]
122123 old_opts = ENV [ 'RUBYOPT' ] || ''
@@ -140,8 +141,6 @@ Debugger.evaluation_timeout = options.evaluation_timeout
140141Debugger . catchpoint_deleted_event = options . catchpoint_deleted_event || options . rm_protocol_extensions
141142Debugger . value_as_nested_element = options . value_as_nested_element || options . rm_protocol_extensions
142143
143- Debugger . attached = true
144-
145144if options . attach_mode
146145 if Debugger ::FRONT_END == "debase"
147146 Debugger . init_variables
Original file line number Diff line number Diff line change @@ -136,9 +136,9 @@ def regexp
136136 end
137137
138138 def execute
139- Debugger . attached = false
140139 Debugger . stop
141140 Debugger . interface . close
141+ Debugger ::MultiProcess . undo_monkey
142142 Debugger . control_thread = nil
143143 Thread . current . exit #@control_thread is a current thread
144144 end
Original file line number Diff line number Diff line change 1- if RUBY_VERSION < " 1.9"
1+ if RUBY_VERSION < ' 1.9'
22 require 'ruby-debug-ide/multiprocess/pre_child'
3- require 'ruby-debug-ide/multiprocess/monkey'
43else
54 require_relative 'multiprocess/pre_child'
6- require_relative 'multiprocess/monkey'
5+ end
6+
7+ module Debugger
8+ module MultiProcess
9+ class << self
10+ def do_monkey
11+ load File . expand_path ( File . dirname ( __FILE__ ) + '/multiprocess/monkey.rb' )
12+ end
13+
14+ def undo_monkey
15+ if ENV [ 'IDE_PROCESS_DISPATCHER' ]
16+ load File . expand_path ( File . dirname ( __FILE__ ) + '/multiprocess/unmonkey.rb' )
17+ ruby_opts = ENV [ 'RUBYOPT' ] . split ( ' ' )
18+ ENV [ 'RUBYOPT' ] = ruby_opts . keep_if { |opt | !opt . end_with? ( 'ruby-debug-ide/multiprocess/starter' ) } . join ( ' ' )
19+ end
20+ end
21+ end
22+ end
723end
Original file line number Diff line number Diff line change @@ -2,8 +2,6 @@ module Debugger
22 module MultiProcess
33 class << self
44 def pre_child ( options = nil )
5- return unless Debugger . attached
6-
75 require 'socket'
86 require 'ostruct'
97
Original file line number Diff line number Diff line change 1+ module Debugger
2+ module MultiProcess
3+ def self . restore_fork
4+ %Q{
5+ alias fork pre_debugger_fork
6+ }
7+ end
8+
9+ def self . restore_exec
10+ %Q{
11+ alias exec pre_debugger_exec
12+ }
13+ end
14+ end
15+ end
16+
17+ module Kernel
18+ class << self
19+ module_eval Debugger ::MultiProcess . restore_fork
20+ module_eval Debugger ::MultiProcess . restore_exec
21+ end
22+ module_eval Debugger ::MultiProcess . restore_fork
23+ module_eval Debugger ::MultiProcess . restore_exec
24+ end
25+
26+ module Process
27+ class << self
28+ module_eval Debugger ::MultiProcess . restore_fork
29+ module_eval Debugger ::MultiProcess . restore_exec
30+ end
31+ end
You can’t perform that action at this time.
0 commit comments