byebug 9.1.0 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +24 -3
  3. data/CONTRIBUTING.md +39 -18
  4. data/GUIDE.md +16 -17
  5. data/README.md +64 -52
  6. data/exe/byebug +6 -0
  7. data/ext/byebug/breakpoint.c +1 -1
  8. data/ext/byebug/byebug.c +16 -16
  9. data/ext/byebug/byebug.h +40 -26
  10. data/ext/byebug/context.c +26 -26
  11. data/ext/byebug/extconf.rb +7 -5
  12. data/ext/byebug/threads.c +8 -8
  13. data/lib/byebug.rb +3 -1
  14. data/lib/byebug/attacher.rb +17 -3
  15. data/lib/byebug/breakpoint.rb +25 -3
  16. data/lib/byebug/command.rb +20 -14
  17. data/lib/byebug/command_list.rb +3 -1
  18. data/lib/byebug/commands.rb +39 -37
  19. data/lib/byebug/commands/break.rb +33 -15
  20. data/lib/byebug/commands/catch.rb +16 -14
  21. data/lib/byebug/commands/condition.rb +11 -9
  22. data/lib/byebug/commands/continue.rb +9 -7
  23. data/lib/byebug/commands/debug.rb +7 -5
  24. data/lib/byebug/commands/delete.rb +11 -9
  25. data/lib/byebug/commands/disable.rb +8 -6
  26. data/lib/byebug/commands/disable/breakpoints.rb +7 -5
  27. data/lib/byebug/commands/disable/display.rb +7 -5
  28. data/lib/byebug/commands/display.rb +11 -9
  29. data/lib/byebug/commands/down.rb +10 -8
  30. data/lib/byebug/commands/edit.rb +10 -8
  31. data/lib/byebug/commands/enable.rb +8 -6
  32. data/lib/byebug/commands/enable/breakpoints.rb +7 -5
  33. data/lib/byebug/commands/enable/display.rb +7 -5
  34. data/lib/byebug/commands/finish.rb +8 -6
  35. data/lib/byebug/commands/frame.rb +11 -9
  36. data/lib/byebug/commands/help.rb +7 -5
  37. data/lib/byebug/commands/history.rb +7 -5
  38. data/lib/byebug/commands/info.rb +11 -9
  39. data/lib/byebug/commands/info/breakpoints.rb +17 -11
  40. data/lib/byebug/commands/info/display.rb +16 -7
  41. data/lib/byebug/commands/info/file.rb +12 -10
  42. data/lib/byebug/commands/info/line.rb +5 -3
  43. data/lib/byebug/commands/info/program.rb +8 -6
  44. data/lib/byebug/commands/interrupt.rb +8 -4
  45. data/lib/byebug/commands/irb.rb +9 -7
  46. data/lib/byebug/commands/kill.rb +9 -7
  47. data/lib/byebug/commands/list.rb +41 -46
  48. data/lib/byebug/commands/method.rb +10 -8
  49. data/lib/byebug/commands/next.rb +8 -6
  50. data/lib/byebug/commands/pry.rb +10 -8
  51. data/lib/byebug/commands/quit.rb +7 -5
  52. data/lib/byebug/commands/restart.rb +13 -11
  53. data/lib/byebug/commands/save.rb +9 -7
  54. data/lib/byebug/commands/set.rb +12 -10
  55. data/lib/byebug/commands/show.rb +7 -5
  56. data/lib/byebug/commands/source.rb +7 -5
  57. data/lib/byebug/commands/step.rb +8 -6
  58. data/lib/byebug/commands/thread.rb +11 -9
  59. data/lib/byebug/commands/thread/current.rb +6 -4
  60. data/lib/byebug/commands/thread/list.rb +7 -5
  61. data/lib/byebug/commands/thread/resume.rb +7 -5
  62. data/lib/byebug/commands/thread/stop.rb +6 -4
  63. data/lib/byebug/commands/thread/switch.rb +6 -4
  64. data/lib/byebug/commands/tracevar.rb +10 -8
  65. data/lib/byebug/commands/undisplay.rb +10 -8
  66. data/lib/byebug/commands/untracevar.rb +8 -6
  67. data/lib/byebug/commands/up.rb +10 -8
  68. data/lib/byebug/commands/var.rb +12 -10
  69. data/lib/byebug/commands/var/all.rb +7 -5
  70. data/lib/byebug/commands/var/args.rb +6 -4
  71. data/lib/byebug/commands/var/const.rb +9 -7
  72. data/lib/byebug/commands/var/global.rb +5 -3
  73. data/lib/byebug/commands/var/instance.rb +6 -4
  74. data/lib/byebug/commands/var/local.rb +6 -4
  75. data/lib/byebug/commands/where.rb +9 -7
  76. data/lib/byebug/context.rb +7 -5
  77. data/lib/byebug/core.rb +25 -25
  78. data/lib/byebug/errors.rb +4 -2
  79. data/lib/byebug/frame.rb +16 -16
  80. data/lib/byebug/helpers/bin.rb +28 -7
  81. data/lib/byebug/helpers/eval.rb +8 -6
  82. data/lib/byebug/helpers/file.rb +4 -2
  83. data/lib/byebug/helpers/frame.rb +5 -3
  84. data/lib/byebug/helpers/parse.rb +5 -3
  85. data/lib/byebug/helpers/path.rb +7 -5
  86. data/lib/byebug/helpers/reflection.rb +2 -0
  87. data/lib/byebug/helpers/string.rb +4 -2
  88. data/lib/byebug/helpers/thread.rb +10 -8
  89. data/lib/byebug/helpers/toggle.rb +10 -8
  90. data/lib/byebug/helpers/var.rb +8 -6
  91. data/lib/byebug/history.rb +7 -5
  92. data/lib/byebug/interface.rb +13 -11
  93. data/lib/byebug/interfaces/local_interface.rb +4 -4
  94. data/lib/byebug/interfaces/remote_interface.rb +21 -9
  95. data/lib/byebug/interfaces/script_interface.rb +2 -0
  96. data/lib/byebug/interfaces/test_interface.rb +5 -3
  97. data/lib/byebug/option_setter.rb +14 -12
  98. data/lib/byebug/printers/base.rb +6 -6
  99. data/lib/byebug/printers/plain.rb +8 -6
  100. data/lib/byebug/printers/texts/base.yml +3 -3
  101. data/lib/byebug/processors/command_processor.rb +11 -12
  102. data/lib/byebug/processors/control_processor.rb +4 -6
  103. data/lib/byebug/processors/post_mortem_processor.rb +4 -2
  104. data/lib/byebug/processors/script_processor.rb +7 -3
  105. data/lib/byebug/remote.rb +45 -65
  106. data/lib/byebug/remote/client.rb +55 -0
  107. data/lib/byebug/remote/server.rb +47 -0
  108. data/lib/byebug/runner.rb +26 -19
  109. data/lib/byebug/setting.rb +10 -4
  110. data/lib/byebug/settings/autoirb.rb +5 -3
  111. data/lib/byebug/settings/autolist.rb +5 -3
  112. data/lib/byebug/settings/autopry.rb +5 -3
  113. data/lib/byebug/settings/autosave.rb +4 -2
  114. data/lib/byebug/settings/basename.rb +4 -2
  115. data/lib/byebug/settings/callstyle.rb +3 -3
  116. data/lib/byebug/settings/fullpath.rb +4 -2
  117. data/lib/byebug/settings/histfile.rb +5 -3
  118. data/lib/byebug/settings/histsize.rb +4 -2
  119. data/lib/byebug/settings/linetrace.rb +4 -2
  120. data/lib/byebug/settings/listsize.rb +4 -2
  121. data/lib/byebug/settings/post_mortem.rb +4 -2
  122. data/lib/byebug/settings/savefile.rb +4 -2
  123. data/lib/byebug/settings/stack_on_error.rb +4 -2
  124. data/lib/byebug/settings/width.rb +3 -1
  125. data/lib/byebug/source_file_formatter.rb +71 -0
  126. data/lib/byebug/subcommands.rb +6 -4
  127. data/lib/byebug/version.rb +1 -1
  128. metadata +8 -5
  129. data/bin/byebug +0 -9
@@ -1,5 +1,7 @@
1
- require 'byebug/command'
2
- require 'byebug/helpers/parse'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/command"
4
+ require "byebug/helpers/parse"
3
5
 
4
6
  module Byebug
5
7
  #
@@ -16,25 +18,25 @@ module Byebug
16
18
  end
17
19
 
18
20
  def self.description
19
- <<-EOD
21
+ <<-DESCRIPTION
20
22
  c[ont[inue]][ <line_number>]
21
23
 
22
24
  #{short_description}
23
- EOD
25
+ DESCRIPTION
24
26
  end
25
27
 
26
28
  def self.short_description
27
- 'Runs until program ends, hits a breakpoint or reaches a line'
29
+ "Runs until program ends, hits a breakpoint or reaches a line"
28
30
  end
29
31
 
30
32
  def execute
31
33
  if @match[1]
32
- num, err = get_int(@match[1], 'Continue', 0, nil)
34
+ num, err = get_int(@match[1], "Continue", 0, nil)
33
35
  return errmsg(err) unless num
34
36
 
35
37
  filename = File.expand_path(frame.file)
36
38
  unless Breakpoint.potential_line?(filename, num)
37
- return errmsg(pr('continue.errors.unstopped_line', line: num))
39
+ return errmsg(pr("continue.errors.unstopped_line", line: num))
38
40
  end
39
41
 
40
42
  Breakpoint.add(filename, num)
@@ -1,5 +1,7 @@
1
- require 'byebug/command'
2
- require 'byebug/helpers/eval'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/command"
4
+ require "byebug/helpers/eval"
3
5
 
4
6
  module Byebug
5
7
  #
@@ -13,18 +15,18 @@ module Byebug
13
15
  end
14
16
 
15
17
  def self.description
16
- <<-EOD
18
+ <<-DESCRIPTION
17
19
  debug <expression>
18
20
 
19
21
  #{short_description}
20
22
 
21
23
  Allows, for example, setting breakpoints on expressions evaluated from
22
24
  the debugger's prompt.
23
- EOD
25
+ DESCRIPTION
24
26
  end
25
27
 
26
28
  def self.short_description
27
- 'Spawns a subdebugger'
29
+ "Spawns a subdebugger"
28
30
  end
29
31
 
30
32
  def execute
@@ -1,5 +1,7 @@
1
- require 'byebug/command'
2
- require 'byebug/helpers/parse'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/command"
4
+ require "byebug/helpers/parse"
3
5
 
4
6
  module Byebug
5
7
  #
@@ -16,23 +18,23 @@ module Byebug
16
18
  end
17
19
 
18
20
  def self.description
19
- <<-EOD
21
+ <<-DESCRIPTION
20
22
  del[ete][ nnn...]
21
23
 
22
24
  #{short_description}
23
25
 
24
26
  Without and argument, deletes all breakpoints. With integer arguments,
25
27
  it deletes specific breakpoints.
26
- EOD
28
+ DESCRIPTION
27
29
  end
28
30
 
29
31
  def self.short_description
30
- 'Deletes breakpoints'
32
+ "Deletes breakpoints"
31
33
  end
32
34
 
33
35
  def execute
34
36
  unless @match[1]
35
- if confirm(pr('break.confirmations.delete_all'))
37
+ if confirm(pr("break.confirmations.delete_all"))
36
38
  Byebug.breakpoints.clear
37
39
  end
38
40
 
@@ -40,14 +42,14 @@ module Byebug
40
42
  end
41
43
 
42
44
  @match[1].split(/ +/).each do |number|
43
- pos, err = get_int(number, 'Delete', 1)
45
+ pos, err = get_int(number, "Delete", 1)
44
46
 
45
47
  return errmsg(err) unless pos
46
48
 
47
49
  if Breakpoint.remove(pos)
48
- puts(pr('break.messages.breakpoint_deleted', pos: pos))
50
+ puts(pr("break.messages.breakpoint_deleted", pos: pos))
49
51
  else
50
- errmsg(pr('break.errors.no_breakpoint_delete', pos: pos))
52
+ errmsg(pr("break.errors.no_breakpoint_delete", pos: pos))
51
53
  end
52
54
  end
53
55
  end
@@ -1,7 +1,9 @@
1
- require 'byebug/subcommands'
1
+ # frozen_string_literal: true
2
2
 
3
- require 'byebug/commands/disable/breakpoints'
4
- require 'byebug/commands/disable/display'
3
+ require "byebug/subcommands"
4
+
5
+ require "byebug/commands/disable/breakpoints"
6
+ require "byebug/commands/disable/display"
5
7
 
6
8
  module Byebug
7
9
  #
@@ -17,15 +19,15 @@ module Byebug
17
19
  end
18
20
 
19
21
  def self.description
20
- <<-EOD
22
+ <<-DESCRIPTION
21
23
  dis[able][[ breakpoints| display)][ n1[ n2[ ...[ nn]]]]]
22
24
 
23
25
  #{short_description}
24
- EOD
26
+ DESCRIPTION
25
27
  end
26
28
 
27
29
  def self.short_description
28
- 'Disables breakpoints or displays'
30
+ "Disables breakpoints or displays"
29
31
  end
30
32
  end
31
33
  end
@@ -1,4 +1,6 @@
1
- require 'byebug/helpers/toggle'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/helpers/toggle"
2
4
 
3
5
  module Byebug
4
6
  #
@@ -18,22 +20,22 @@ module Byebug
18
20
  end
19
21
 
20
22
  def self.description
21
- <<-EOD
23
+ <<-DESCRIPTION
22
24
  dis[able] b[reakpoints][ <id1> <id2> .. <idn>]
23
25
 
24
26
  #{short_description}
25
27
 
26
28
  Give breakpoint numbers (separated by spaces) as arguments or no
27
29
  argument at all if you want to disable every breakpoint.
28
- EOD
30
+ DESCRIPTION
29
31
  end
30
32
 
31
33
  def self.short_description
32
- 'Disable all or specific breakpoints.'
34
+ "Disable all or specific breakpoints."
33
35
  end
34
36
 
35
37
  def execute
36
- enable_disable_breakpoints('disable', @match[1])
38
+ enable_disable_breakpoints("disable", @match[1])
37
39
  end
38
40
  end
39
41
  end
@@ -1,4 +1,6 @@
1
- require 'byebug/helpers/toggle'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/helpers/toggle"
2
4
 
3
5
  module Byebug
4
6
  #
@@ -18,7 +20,7 @@ module Byebug
18
20
  end
19
21
 
20
22
  def self.description
21
- <<-EOD
23
+ <<-DESCRIPTION
22
24
  dis[able] d[isplay][ <id1> <id2> .. <idn>]
23
25
 
24
26
  #{short_description}
@@ -26,15 +28,15 @@ module Byebug
26
28
  Arguments are the code numbers of the expressions to disable. Do "info
27
29
  display" to see the current list of code numbers. If no arguments are
28
30
  specified, all displays are disabled.
29
- EOD
31
+ DESCRIPTION
30
32
  end
31
33
 
32
34
  def self.short_description
33
- 'Disables expressions to be displayed when program stops.'
35
+ "Disables expressions to be displayed when program stops."
34
36
  end
35
37
 
36
38
  def execute
37
- enable_disable_display('disable', @match[1])
39
+ enable_disable_display("disable", @match[1])
38
40
  end
39
41
  end
40
42
  end
@@ -1,5 +1,7 @@
1
- require 'byebug/command'
2
- require 'byebug/helpers/eval'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/command"
4
+ require "byebug/helpers/eval"
3
5
 
4
6
  module Byebug
5
7
  #
@@ -16,18 +18,18 @@ module Byebug
16
18
  end
17
19
 
18
20
  def self.description
19
- <<-EOD
21
+ <<-DESCRIPTION
20
22
  disp[lay][ <expression>]
21
23
 
22
24
  #{short_description}
23
25
 
24
26
  If <expression> specified, adds <expression> into display expression
25
27
  list. Otherwise, it lists all expressions.
26
- EOD
28
+ DESCRIPTION
27
29
  end
28
30
 
29
31
  def self.short_description
30
- 'Evaluates expressions every time the debugger stops'
32
+ "Evaluates expressions every time the debugger stops"
31
33
  end
32
34
 
33
35
  def execute
@@ -40,13 +42,13 @@ module Byebug
40
42
  private
41
43
 
42
44
  def display_expression(exp)
43
- print pr('display.result', n: Byebug.displays.size,
45
+ print pr("display.result", n: Byebug.displays.size,
44
46
  exp: exp,
45
47
  result: eval_expr(exp))
46
48
  end
47
49
 
48
50
  def print_display_expressions
49
- result = prc('display.result', Byebug.displays) do |item, index|
51
+ result = prc("display.result", Byebug.displays) do |item, index|
50
52
  active, exp = item
51
53
 
52
54
  { n: index + 1, exp: exp, result: eval_expr(exp) } if active
@@ -57,8 +59,8 @@ module Byebug
57
59
 
58
60
  def eval_expr(expression)
59
61
  error_eval(expression).inspect
60
- rescue
61
- '(undefined)'
62
+ rescue StandardError
63
+ "(undefined)"
62
64
  end
63
65
  end
64
66
  end
@@ -1,7 +1,9 @@
1
- require 'pathname'
2
- require 'byebug/command'
3
- require 'byebug/helpers/frame'
4
- require 'byebug/helpers/parse'
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+ require "byebug/command"
5
+ require "byebug/helpers/frame"
6
+ require "byebug/helpers/parse"
5
7
 
6
8
  module Byebug
7
9
  #
@@ -18,21 +20,21 @@ module Byebug
18
20
  end
19
21
 
20
22
  def self.description
21
- <<-EOD
23
+ <<-DESCRIPTION
22
24
  down[ count]
23
25
 
24
26
  #{short_description}
25
27
 
26
28
  Use the "bt" command to find out where you want to go.
27
- EOD
29
+ DESCRIPTION
28
30
  end
29
31
 
30
32
  def self.short_description
31
- 'Moves to a lower frame in the stack trace'
33
+ "Moves to a lower frame in the stack trace"
32
34
  end
33
35
 
34
36
  def execute
35
- pos, err = parse_steps(@match[1], 'Down')
37
+ pos, err = parse_steps(@match[1], "Down")
36
38
  return errmsg(err) unless pos
37
39
 
38
40
  jump_frames(-pos)
@@ -1,4 +1,6 @@
1
- require 'byebug/command'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/command"
2
4
 
3
5
  module Byebug
4
6
  #
@@ -13,7 +15,7 @@ module Byebug
13
15
  end
14
16
 
15
17
  def self.description
16
- <<-EOD
18
+ <<-DESCRIPTION
17
19
  edit[ file:lineno]
18
20
 
19
21
  #{short_description}
@@ -21,17 +23,17 @@ module Byebug
21
23
  With no argumnt, edits file containing most re line listed. Editing
22
24
  targets can also be specified to start editing at a specific line in a
23
25
  specific file
24
- EOD
26
+ DESCRIPTION
25
27
  end
26
28
 
27
29
  def self.short_description
28
- 'Edits source files'
30
+ "Edits source files"
29
31
  end
30
32
 
31
33
  def execute
32
34
  file, line = location(@match[1])
33
- return edit_error('not_exist', file) unless File.exist?(file)
34
- return edit_error('not_readable', file) unless File.readable?(file)
35
+ return edit_error("not_exist", file) unless File.exist?(file)
36
+ return edit_error("not_readable", file) unless File.readable?(file)
35
37
 
36
38
  cmd = line ? "#{editor} +#{line} #{file}" : "#{editor} #{file}"
37
39
 
@@ -43,7 +45,7 @@ module Byebug
43
45
  def location(matched)
44
46
  if matched.nil?
45
47
  file = frame.file
46
- return errmsg(pr('edit.errors.state')) unless file
48
+ return errmsg(pr("edit.errors.state")) unless file
47
49
  line = frame.line
48
50
  elsif (@pos_match = /([^:]+)[:]([0-9]+)/.match(matched))
49
51
  file, line = @pos_match.captures
@@ -56,7 +58,7 @@ module Byebug
56
58
  end
57
59
 
58
60
  def editor
59
- ENV['EDITOR'] || 'vim'
61
+ ENV["EDITOR"] || "vim"
60
62
  end
61
63
 
62
64
  def edit_error(type, file)
@@ -1,7 +1,9 @@
1
- require 'byebug/subcommands'
1
+ # frozen_string_literal: true
2
2
 
3
- require 'byebug/commands/enable/breakpoints'
4
- require 'byebug/commands/enable/display'
3
+ require "byebug/subcommands"
4
+
5
+ require "byebug/commands/enable/breakpoints"
6
+ require "byebug/commands/enable/display"
5
7
 
6
8
  module Byebug
7
9
  #
@@ -17,15 +19,15 @@ module Byebug
17
19
  end
18
20
 
19
21
  def self.description
20
- <<-EOD
22
+ <<-DESCRIPTION
21
23
  en[able][[ b[reakpoints]| d[isplay])][ n1[ n2[ ...[ nn]]]]]
22
24
 
23
25
  #{short_description}
24
- EOD
26
+ DESCRIPTION
25
27
  end
26
28
 
27
29
  def self.short_description
28
- 'Enables breakpoints or displays'
30
+ "Enables breakpoints or displays"
29
31
  end
30
32
  end
31
33
  end
@@ -1,4 +1,6 @@
1
- require 'byebug/helpers/toggle'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/helpers/toggle"
2
4
 
3
5
  module Byebug
4
6
  #
@@ -18,22 +20,22 @@ module Byebug
18
20
  end
19
21
 
20
22
  def self.description
21
- <<-EOD
23
+ <<-DESCRIPTION
22
24
  en[able] b[reakpoints][ <ids>]
23
25
 
24
26
  #{short_description}
25
27
 
26
28
  Give breakpoint numbers (separated by spaces) as arguments or no
27
29
  argument at all if you want to enable every breakpoint.
28
- EOD
30
+ DESCRIPTION
29
31
  end
30
32
 
31
33
  def self.short_description
32
- 'Enable all or specific breakpoints'
34
+ "Enable all or specific breakpoints"
33
35
  end
34
36
 
35
37
  def execute
36
- enable_disable_breakpoints('enable', @match[1])
38
+ enable_disable_breakpoints("enable", @match[1])
37
39
  end
38
40
  end
39
41
  end