debug 1.2.0 → 1.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6eba8a00eaa711138e43036c5adb97834f1a87e586f8a5a3f580875e4d78e5c
4
- data.tar.gz: 26ed8ac77bb93ab2a9f67fac6c4ef4481fbcdd227f116aaff78e808a2343b13b
3
+ metadata.gz: a6251dbcd2eb75a8b4932a740fe0294da996c7bcaaaa965f42353144786b5c0a
4
+ data.tar.gz: 328c4949a62eeb5277d8d6882c1a7da565b2c5aaa4c2fc5cf52850ca7e454240
5
5
  SHA512:
6
- metadata.gz: b459267a95928388d1bf53bab8bf51fc8d5a6d0db0bc2fbaa55f740b1b446aad2294e45cc2b70471ccf8bb1daada458f239f08c7ceb7588774f08796a7838620
7
- data.tar.gz: 86d06a4ec76943e26af39a26120c8a3a906d3fcecca195a662e63b9be2b7b9a1ba82bd2fba177205b436cde89be9214988e0f2cccc0f7fb2dcbf7226e92886e9
6
+ metadata.gz: 7c8c83768d7d9eca50f18018dc9255a54234ee9c048d9885d54d46399e7bf9910ca87f85a9cd804108ec319ec985095016b00b1ab0d45a787fb55ef96b2a9483
7
+ data.tar.gz: 24c87a5fbef8a8c1851ffea1b21c53613389d0c8fa46a3a205562aa2c98f6515ad863e97a5ee8857914a0363110ef277bc961b8d04902b0a5f537f133f6f18af
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Your environment**
11
+
12
+ * `ruby -v`:
13
+ * `rdbg -v`:
14
+
15
+ **Describe the bug**
16
+ A clear and concise description of what the bug is.
17
+
18
+ **To Reproduce**
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Additional context**
24
+ Add any other context about the problem here.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: Custom issue template
3
+ about: Blank issue
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Your proposal**
11
+ What is your idea?
12
+
13
+ **Additional context**
14
+ Add any other context or screenshots about the feature request here.
data/Rakefile CHANGED
@@ -7,14 +7,17 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList["test/**/*_test.rb"]
8
8
  end
9
9
 
10
- require "rake/extensiontask"
11
-
12
- task :build => :compile
13
-
14
- Rake::ExtensionTask.new("debug") do |ext|
15
- ext.lib_dir = "lib/debug"
10
+ begin
11
+ require "rake/extensiontask"
12
+ task :build => :compile
13
+
14
+ Rake::ExtensionTask.new("debug") do |ext|
15
+ ext.lib_dir = "lib/debug"
16
+ end
17
+ rescue LoadError
16
18
  end
17
19
 
20
+
18
21
  task :default => [:clobber, :compile, 'README.md', :test]
19
22
 
20
23
  file 'README.md' => ['lib/debug/session.rb', 'lib/debug/config.rb',
data/debug.gemspec CHANGED
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
  spec.extensions = ['ext/debug/extconf.rb']
27
27
 
28
- spec.add_dependency "irb" # for its color_printer class, which was added after 1.3
28
+ spec.add_dependency "irb", ">= 1.3.6" # for its color_printer class, which was added after 1.3
29
29
  spec.add_dependency "reline", ">= 0.2.7"
30
30
  end
@@ -437,7 +437,7 @@ module DEBUGGER__
437
437
  end
438
438
  end
439
439
 
440
- rescue ArgumentError => e
440
+ rescue ArgumentError
441
441
  raise if retried
442
442
  retried = true
443
443
 
@@ -458,7 +458,7 @@ module DEBUGGER__
458
458
  @override_method = true if @method
459
459
  retry
460
460
  end
461
- rescue Exception => e
461
+ rescue Exception
462
462
  raise unless added
463
463
  end
464
464
 
data/lib/debug/client.rb CHANGED
@@ -13,9 +13,37 @@ module DEBUGGER__
13
13
  class CommandLineOptionError < Exception; end
14
14
 
15
15
  class Client
16
- def initialize argv
17
- return util(argv) if String === argv
16
+ class << self
17
+ def util name
18
+ case name
19
+ when 'gen-sockpath'
20
+ puts DEBUGGER__.create_unix_domain_socket_name
21
+ when 'list-socks'
22
+ cleanup_unix_domain_sockets
23
+ puts list_connections
24
+ else
25
+ raise "Unknown utility: #{name}"
26
+ end
27
+ end
18
28
 
29
+ def cleanup_unix_domain_sockets
30
+ Dir.glob(DEBUGGER__.create_unix_domain_socket_name_prefix + '*') do |file|
31
+ if /(\d+)$/ =~ file
32
+ begin
33
+ Process.kill(0, $1.to_i)
34
+ rescue Errno::ESRCH
35
+ File.unlink(file)
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ def list_connections
42
+ Dir.glob(DEBUGGER__.create_unix_domain_socket_name_prefix + '*')
43
+ end
44
+ end
45
+
46
+ def initialize argv
19
47
  @console = Console.new
20
48
 
21
49
  case argv.size
@@ -48,34 +76,6 @@ module DEBUGGER__
48
76
  @console.readline "(rdbg:remote) "
49
77
  end
50
78
 
51
- def util name
52
- case name
53
- when 'gen-sockpath'
54
- puts DEBUGGER__.create_unix_domain_socket_name
55
- when 'list-socks'
56
- cleanup_unix_domain_sockets
57
- puts list_connections
58
- else
59
- raise "Unknown utility: #{name}"
60
- end
61
- end
62
-
63
- def cleanup_unix_domain_sockets
64
- Dir.glob(DEBUGGER__.create_unix_domain_socket_name_prefix + '*') do |file|
65
- if /(\d+)$/ =~ file
66
- begin
67
- Process.kill(0, $1.to_i)
68
- rescue Errno::ESRCH
69
- File.unlink(file)
70
- end
71
- end
72
- end
73
- end
74
-
75
- def list_connections
76
- Dir.glob(DEBUGGER__.create_unix_domain_socket_name_prefix + '*')
77
- end
78
-
79
79
  def connect_unix name = nil
80
80
  if name
81
81
  if File.exist? name
@@ -84,8 +84,9 @@ module DEBUGGER__
84
84
  @s = Socket.unix(File.join(DEBUGGER__.unix_domain_socket_dir, name))
85
85
  end
86
86
  else
87
- cleanup_unix_domain_sockets
88
- files = list_connections
87
+ Client.cleanup_unix_domain_sockets
88
+ files = Client.list_connections
89
+
89
90
  case files.size
90
91
  when 0
91
92
  $stderr.puts "No debug session is available."
data/lib/debug/color.rb CHANGED
@@ -17,9 +17,25 @@ end
17
17
  module DEBUGGER__
18
18
  module Color
19
19
  if defined? IRB::Color.colorize
20
+ begin
21
+ IRB::Color.colorize('', [:DIM], colorable: true)
22
+ SUPPORT_COLORABLE_OPTION = true
23
+ rescue ArgumentError
24
+ end
25
+
26
+ if defined? SUPPORT_COLORABLE_OPTION
27
+ def irb_colorize str, color
28
+ IRB::Color.colorize str, color, colorable: true
29
+ end
30
+ else
31
+ def irb_colorize str, color
32
+ IRB::Color.colorize str, color
33
+ end
34
+ end
35
+
20
36
  def colorize str, color
21
37
  if !CONFIG[:no_color]
22
- IRB::Color.colorize str, color, colorable: true
38
+ irb_colorize str, color
23
39
  else
24
40
  str
25
41
  end
@@ -63,8 +79,14 @@ module DEBUGGER__
63
79
  end
64
80
 
65
81
  if defined? IRB::Color.colorize_code
66
- def colorize_code code
67
- IRB::Color.colorize_code(code, colorable: true)
82
+ if SUPPORT_COLORABLE_OPTION
83
+ def colorize_code code
84
+ IRB::Color.colorize_code(code, colorable: true)
85
+ end
86
+ else
87
+ def colorize_code code
88
+ IRB::Color.colorize_code(code)
89
+ end
68
90
  end
69
91
  else
70
92
  def colorize_code code
data/lib/debug/config.rb CHANGED
@@ -313,7 +313,7 @@ module DEBUGGER__
313
313
 
314
314
  o.on('--util=NAME', 'Utility mode (used by tools)') do |name|
315
315
  require_relative 'client'
316
- Client.new(name)
316
+ Client.util(name)
317
317
  exit
318
318
  end
319
319
 
@@ -352,9 +352,26 @@ module DEBUGGER__
352
352
  ## Unix domain socket configuration
353
353
 
354
354
  def self.unix_domain_socket_dir
355
+ require 'tmpdir'
356
+
355
357
  case
356
358
  when path = CONFIG[:sock_dir]
357
359
  when path = ENV['XDG_RUNTIME_DIR']
360
+ when tmpdir = Dir.tmpdir
361
+ path = File.join(tmpdir, "ruby-debug-sock-#{Process.uid}")
362
+
363
+ if File.exist?(path)
364
+ fs = File.stat(path)
365
+ unless (dir_uid = fs.uid) == (uid = Process.uid)
366
+ raise "#{path} uid is #{dir_uid}, but Process.uid is #{uid}"
367
+ end
368
+ unless (dir_mode = fs.mode) == 040700 # 4: dir, 7:rwx
369
+ raise "#{path}'s mode is #{dir_mode.to_s(8)} (should be 040700)"
370
+ end
371
+ else
372
+ d = Dir.mktmpdir
373
+ File.rename(d, path)
374
+ end
358
375
  when home = ENV['HOME']
359
376
  path = File.join(home, '.ruby-debug-sock')
360
377
 
@@ -9,10 +9,10 @@ module DEBUGGER__
9
9
  )
10
10
 
11
11
  # extend FrameInfo with debug.so
12
- if File.exist? File.join(__dir__, 'debug.so')
12
+ begin
13
13
  require_relative 'debug.so'
14
- else
15
- require_relative 'debug'
14
+ rescue LoadError
15
+ require 'debug/debug.so'
16
16
  end
17
17
 
18
18
  class FrameInfo
@@ -182,7 +182,7 @@ module DEBUGGER__
182
182
  @q_msg << 'continue'
183
183
  when 'attach'
184
184
  send_response req
185
- Process.kill(:SIGINT, Process.pid)
185
+ Process.kill(:SIGURG, Process.pid)
186
186
  when 'disconnect'
187
187
  send_response req
188
188
  @q_msg << 'continue'
@@ -205,7 +205,7 @@ module DEBUGGER__
205
205
  exit
206
206
  when 'pause'
207
207
  send_response req
208
- Process.kill(:SIGINT, Process.pid)
208
+ Process.kill(:SIGURG, Process.pid)
209
209
  when 'reverseContinue'
210
210
  send_response req,
211
211
  success: false, message: 'cancelled',
@@ -256,7 +256,7 @@ module DEBUGGER__
256
256
  def event type, *args
257
257
  case type
258
258
  when :suspend_bp
259
- _i, bp = *args
259
+ _i, bp, tid = *args
260
260
  if bp.kind_of?(CatchBreakpoint)
261
261
  reason = 'exception'
262
262
  text = bp.description
@@ -268,24 +268,26 @@ module DEBUGGER__
268
268
  send_event 'stopped', reason: reason,
269
269
  description: text,
270
270
  text: text,
271
- threadId: 1,
271
+ threadId: tid,
272
272
  allThreadsStopped: true
273
273
  when :suspend_trap
274
+ _sig, tid = *args
274
275
  send_event 'stopped', reason: 'pause',
275
- threadId: 1,
276
+ threadId: tid,
276
277
  allThreadsStopped: true
277
278
  when :suspended
279
+ tid, = *args
278
280
  send_event 'stopped', reason: 'step',
279
- threadId: 1,
281
+ threadId: tid,
280
282
  allThreadsStopped: true
281
283
  end
282
284
  end
283
285
  end
284
286
 
285
287
  class Session
286
- def find_tc id
288
+ def find_waiting_tc id
287
289
  @th_clients.each{|th, tc|
288
- return tc if tc.id == id
290
+ return tc if tc.id == id && tc.waiting?
289
291
  }
290
292
  return nil
291
293
  end
@@ -306,7 +308,7 @@ module DEBUGGER__
306
308
 
307
309
  when 'stackTrace'
308
310
  tid = req.dig('arguments', 'threadId')
309
- if tc = find_tc(tid)
311
+ if tc = find_waiting_tc(tid)
310
312
  tc << [:dap, :backtrace, req]
311
313
  else
312
314
  fail_response req
@@ -315,7 +317,7 @@ module DEBUGGER__
315
317
  frame_id = req.dig('arguments', 'frameId')
316
318
  if @frame_map[frame_id]
317
319
  tid, fid = @frame_map[frame_id]
318
- if tc = find_tc(tid)
320
+ if tc = find_waiting_tc(tid)
319
321
  tc << [:dap, :scopes, req, fid]
320
322
  else
321
323
  fail_response req
@@ -348,7 +350,7 @@ module DEBUGGER__
348
350
  frame_id = ref[1]
349
351
  tid, fid = @frame_map[frame_id]
350
352
 
351
- if tc = find_tc(tid)
353
+ if tc = find_waiting_tc(tid)
352
354
  tc << [:dap, :scope, req, fid]
353
355
  else
354
356
  fail_response req
@@ -357,7 +359,7 @@ module DEBUGGER__
357
359
  when :variable
358
360
  tid, vid = ref[1], ref[2]
359
361
 
360
- if tc = find_tc(tid)
362
+ if tc = find_waiting_tc(tid)
361
363
  tc << [:dap, :variable, req, vid]
362
364
  else
363
365
  fail_response req
@@ -373,7 +375,7 @@ module DEBUGGER__
373
375
  if @frame_map[frame_id]
374
376
  tid, fid = @frame_map[frame_id]
375
377
  expr = req.dig('arguments', 'expression')
376
- if tc = find_tc(tid)
378
+ if tc = find_waiting_tc(tid)
377
379
  tc << [:dap, :evaluate, req, fid, expr]
378
380
  else
379
381
  fail_response req
data/lib/debug/session.rb CHANGED
@@ -25,6 +25,7 @@ require_relative 'tracer'
25
25
 
26
26
  # To prevent loading old lib/debug.rb in Ruby 2.6 to 3.0
27
27
  $LOADED_FEATURES << 'debug.rb'
28
+ $LOADED_FEATURES << File.expand_path(File.join(__dir__, '..', 'debug.rb'))
28
29
  require 'debug' # invalidate the $LOADED_FEATURE cache
29
30
 
30
31
  require 'json' if ENV['RUBY_DEBUG_TEST_MODE']
@@ -215,16 +216,16 @@ module DEBUGGER__
215
216
  case ev_args.first
216
217
  when :breakpoint
217
218
  bp, i = bp_index ev_args[1]
218
- @ui.event :suspend_bp, i, bp
219
+ @ui.event :suspend_bp, i, bp, tc.id
219
220
  when :trap
220
- @ui.event :suspend_trap, sig = ev_args[1]
221
+ @ui.event :suspend_trap, sig = ev_args[1], tc.id
221
222
 
222
223
  if sig == :SIGINT && (@intercepted_sigint_cmd.kind_of?(Proc) || @intercepted_sigint_cmd.kind_of?(String))
223
224
  @ui.puts "#{@intercepted_sigint_cmd.inspect} is registerred as SIGINT handler."
224
225
  @ui.puts "`sigint` command execute it."
225
226
  end
226
227
  else
227
- @ui.event :suspended
228
+ @ui.event :suspended, tc.id
228
229
  end
229
230
 
230
231
  if @displays.empty?
data/lib/debug/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DEBUGGER__
4
- VERSION = "1.2.0"
4
+ VERSION = "1.2.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koichi Sasada
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-29 00:00:00.000000000 Z
11
+ date: 2021-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: irb
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.3.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.3.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: reline
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -48,6 +48,9 @@ extensions:
48
48
  - ext/debug/extconf.rb
49
49
  extra_rdoc_files: []
50
50
  files:
51
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
52
+ - ".github/ISSUE_TEMPLATE/custom.md"
53
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
51
54
  - ".github/workflows/ruby.yml"
52
55
  - ".gitignore"
53
56
  - CONTRIBUTING.md
@@ -106,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
109
  - !ruby/object:Gem::Version
107
110
  version: '0'
108
111
  requirements: []
109
- rubygems_version: 3.1.6
112
+ rubygems_version: 3.3.0.dev
110
113
  signing_key:
111
114
  specification_version: 4
112
115
  summary: Debugging functionality for Ruby