byebug 10.0.1 → 11.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +352 -285
  3. data/CONTRIBUTING.md +6 -34
  4. data/GUIDE.md +9 -8
  5. data/LICENSE +18 -18
  6. data/README.md +83 -72
  7. data/exe/byebug +1 -1
  8. data/ext/byebug/breakpoint.c +1 -1
  9. data/ext/byebug/byebug.c +9 -14
  10. data/ext/byebug/byebug.h +9 -7
  11. data/ext/byebug/context.c +19 -6
  12. data/ext/byebug/locker.c +4 -4
  13. data/ext/byebug/threads.c +3 -3
  14. data/lib/byebug.rb +1 -1
  15. data/lib/byebug/attacher.rb +4 -4
  16. data/lib/byebug/command.rb +2 -2
  17. data/lib/byebug/command_list.rb +1 -1
  18. data/lib/byebug/commands.rb +38 -37
  19. data/lib/byebug/commands/break.rb +10 -14
  20. data/lib/byebug/commands/catch.rb +4 -8
  21. data/lib/byebug/commands/condition.rb +3 -5
  22. data/lib/byebug/commands/continue.rb +27 -9
  23. data/lib/byebug/commands/debug.rb +2 -2
  24. data/lib/byebug/commands/delete.rb +3 -5
  25. data/lib/byebug/commands/disable.rb +4 -4
  26. data/lib/byebug/commands/disable/breakpoints.rb +1 -1
  27. data/lib/byebug/commands/disable/display.rb +1 -1
  28. data/lib/byebug/commands/display.rb +2 -2
  29. data/lib/byebug/commands/down.rb +3 -3
  30. data/lib/byebug/commands/edit.rb +2 -1
  31. data/lib/byebug/commands/enable.rb +3 -3
  32. data/lib/byebug/commands/enable/breakpoints.rb +1 -1
  33. data/lib/byebug/commands/enable/display.rb +1 -1
  34. data/lib/byebug/commands/finish.rb +2 -2
  35. data/lib/byebug/commands/frame.rb +3 -3
  36. data/lib/byebug/commands/help.rb +2 -2
  37. data/lib/byebug/commands/history.rb +2 -2
  38. data/lib/byebug/commands/info.rb +6 -6
  39. data/lib/byebug/commands/info/breakpoints.rb +2 -4
  40. data/lib/byebug/commands/info/display.rb +1 -3
  41. data/lib/byebug/commands/info/file.rb +2 -4
  42. data/lib/byebug/commands/interrupt.rb +1 -1
  43. data/lib/byebug/commands/irb.rb +2 -4
  44. data/lib/byebug/commands/kill.rb +3 -5
  45. data/lib/byebug/commands/list.rb +4 -4
  46. data/lib/byebug/commands/method.rb +2 -2
  47. data/lib/byebug/commands/next.rb +2 -2
  48. data/lib/byebug/commands/pry.rb +3 -5
  49. data/lib/byebug/commands/quit.rb +4 -4
  50. data/lib/byebug/commands/restart.rb +3 -3
  51. data/lib/byebug/commands/save.rb +1 -1
  52. data/lib/byebug/commands/set.rb +3 -3
  53. data/lib/byebug/commands/show.rb +1 -1
  54. data/lib/byebug/commands/skip.rb +85 -0
  55. data/lib/byebug/commands/source.rb +2 -4
  56. data/lib/byebug/commands/step.rb +2 -2
  57. data/lib/byebug/commands/thread.rb +6 -6
  58. data/lib/byebug/commands/thread/current.rb +1 -1
  59. data/lib/byebug/commands/thread/list.rb +1 -1
  60. data/lib/byebug/commands/thread/resume.rb +2 -4
  61. data/lib/byebug/commands/thread/stop.rb +1 -1
  62. data/lib/byebug/commands/thread/switch.rb +1 -1
  63. data/lib/byebug/commands/tracevar.rb +2 -5
  64. data/lib/byebug/commands/undisplay.rb +5 -6
  65. data/lib/byebug/commands/untracevar.rb +1 -1
  66. data/lib/byebug/commands/up.rb +3 -3
  67. data/lib/byebug/commands/var.rb +8 -8
  68. data/lib/byebug/commands/var/all.rb +1 -1
  69. data/lib/byebug/commands/var/args.rb +1 -1
  70. data/lib/byebug/commands/var/const.rb +2 -4
  71. data/lib/byebug/commands/var/instance.rb +1 -1
  72. data/lib/byebug/commands/var/local.rb +1 -1
  73. data/lib/byebug/commands/where.rb +2 -2
  74. data/lib/byebug/context.rb +4 -4
  75. data/lib/byebug/core.rb +10 -9
  76. data/lib/byebug/frame.rb +2 -2
  77. data/lib/byebug/helpers/frame.rb +1 -1
  78. data/lib/byebug/helpers/parse.rb +1 -3
  79. data/lib/byebug/helpers/string.rb +0 -3
  80. data/lib/byebug/helpers/toggle.rb +2 -4
  81. data/lib/byebug/helpers/var.rb +1 -1
  82. data/lib/byebug/history.rb +1 -1
  83. data/lib/byebug/interface.rb +6 -6
  84. data/lib/byebug/interfaces/local_interface.rb +1 -1
  85. data/lib/byebug/interfaces/remote_interface.rb +1 -1
  86. data/lib/byebug/interfaces/script_interface.rb +2 -1
  87. data/lib/byebug/printers/base.rb +4 -5
  88. data/lib/byebug/printers/plain.rb +1 -1
  89. data/lib/byebug/processors/command_processor.rb +2 -2
  90. data/lib/byebug/processors/control_processor.rb +1 -1
  91. data/lib/byebug/processors/post_mortem_processor.rb +1 -1
  92. data/lib/byebug/processors/script_processor.rb +1 -1
  93. data/lib/byebug/remote.rb +3 -3
  94. data/lib/byebug/remote/client.rb +2 -0
  95. data/lib/byebug/runner.rb +7 -7
  96. data/lib/byebug/setting.rb +2 -2
  97. data/lib/byebug/settings/autoirb.rb +2 -2
  98. data/lib/byebug/settings/autolist.rb +2 -2
  99. data/lib/byebug/settings/autopry.rb +2 -2
  100. data/lib/byebug/settings/autosave.rb +1 -1
  101. data/lib/byebug/settings/basename.rb +1 -1
  102. data/lib/byebug/settings/callstyle.rb +2 -2
  103. data/lib/byebug/settings/fullpath.rb +1 -1
  104. data/lib/byebug/settings/histfile.rb +1 -1
  105. data/lib/byebug/settings/histsize.rb +1 -1
  106. data/lib/byebug/settings/linetrace.rb +1 -1
  107. data/lib/byebug/settings/listsize.rb +1 -1
  108. data/lib/byebug/settings/post_mortem.rb +1 -1
  109. data/lib/byebug/settings/savefile.rb +1 -1
  110. data/lib/byebug/settings/stack_on_error.rb +1 -1
  111. data/lib/byebug/settings/width.rb +1 -1
  112. data/lib/byebug/source_file_formatter.rb +2 -2
  113. data/lib/byebug/subcommands.rb +2 -2
  114. data/lib/byebug/version.rb +1 -1
  115. metadata +9 -9
@@ -21,8 +21,8 @@ abide by its terms.
21
21
  always have the lastest patch level release installed.
22
22
  * The recommended tool to manage development dependencies is `bundler`. Run
23
23
  `gem install bundler` to install it.
24
- * Running `bin/bundle install` inside a local clone of `byebug` will get
25
- development dependencies installed.
24
+ * Running `bundle install` inside a local clone of `byebug` will get development
25
+ dependencies installed.
26
26
 
27
27
  ## Running the test suite
28
28
 
@@ -43,36 +43,8 @@ abide by its terms.
43
43
 
44
44
  ## Code style
45
45
 
46
- * Byebug uses [codeclimate][] to enforce code style. You can run codeclimate
47
- checks locally using the [codeclimate CLI][] with `codeclimate analyze`.
48
-
49
- * It also uses some extra style checks that are not available in codeclimate.
50
- You can run those using `bin/rake lint`. These tasks are:
51
-
52
- * Linting of c-files using `clang-format`. Configuration is specific to
53
- clang-format 3.8, you may need some extra work to get that installed on macOS,
54
- see below.
55
-
56
- * Checking correct executable bit on repository files.
57
-
58
- [codeclimate]: https://codeclimate.com/github/deivid-rodriguez/byebug
59
- [codeclimate CLI]: https://github.com/codeclimate/codeclimate
60
-
61
- ### Runnning `clang-format` on macOS
62
-
63
- At the moment byebug uses older `clang-format` version to enforce C codestyle than
64
- can be found in Homebrew. If you are planning to change some C source here it is
65
- recommended to use [direnv][] to hook that older version into your shell:
66
-
67
- * Install [direnv][] as described in their README
68
- * Install `clang-format@3.8` with `brew install clang-format@3.8`
69
- * In byebug source code directory do `echo 'export PATH="/usr/local/opt/clang-format@3.8/bin:$PATH"' > .envrc`
70
- * Allow direnv to use that `.envrc` file with `direnv allow`
71
-
72
- With that your `$PATH` will be updated to use older `clang-format` every time you `cd`
73
- into byebug source code folder. It will reverted back when you `cd` out of it as well.
74
-
75
- [direnv]: https://github.com/direnv/direnv/
46
+ * Byebug uses several style checks to check code style consistent. You can run
47
+ those using `bin/rake lint`.
76
48
 
77
49
  ## Byebug as a C-extension
78
50
 
@@ -81,6 +53,6 @@ functionality is implemented in C (the interaction with the TracePoint API).
81
53
  The rest of the gem is implemented in Ruby. Normally you won't need to touch
82
54
  the C-extension, but it will obviously depended on the bug you're trying to fix
83
55
  or the feature you are willing to add. You can learn more about C-extensions
84
- [here](http://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1.html)
56
+ [here](https://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1.html)
85
57
  or
86
- [here](http://tenderlovemaking.com/2010/12/11/writing-ruby-c-extensions-part-2.html).
58
+ [here](https://tenderlovemaking.com/2010/12/11/writing-ruby-c-extensions-part-2.html).
data/GUIDE.md CHANGED
@@ -69,12 +69,12 @@ Now let us step through the program.
69
69
  5: tri = 0
70
70
  6:
71
71
  7: 0.upto(n) { |i| tri += i }
72
- 9: end
73
- 10:
74
- 11: tri
75
- 12: end
76
- 13:
77
- => 14: triangle(3)
72
+ 8:
73
+ 9: tri
74
+ 10: end
75
+ 11:
76
+ => 12: t = triangle(3)
77
+ 13: puts t
78
78
  (byebug) <RET> # hit enter
79
79
 
80
80
  [1, 10] in /path/to/triangle.rb
@@ -613,7 +613,7 @@ We get the same result as if we had run byebug from the outset.
613
613
  ### Debugging Oddities: How debugging Ruby may be different from other languages
614
614
 
615
615
  If you are used to debugging in other languages like C, C++, Perl, Java or even
616
- Bash (see [bashdb](http://bashdb.sf.net)), there may be a number of things that
616
+ Bash (see [bashdb](http://bashdb.sourceforge.net)), there may be a number of things that
617
617
  seem or feel a little bit different and may confuse you. A number of these
618
618
  things aren't oddities of the debugger per se but differences in how Ruby works
619
619
  compared to those other languages. Because Ruby works a little differently from
@@ -1298,7 +1298,7 @@ Running a program from byebug adds a bit of overhead and slows it down a little.
1298
1298
  Furthermore, by necessity, debuggers change the operation of the program they
1299
1299
  are debugging. And this can lead to unexpected and unwanted differences. It has
1300
1300
  happened so often that the term
1301
- [Heisenbugs](http://en.wikipedia.org/wiki/Heisenbug) was coined to describe the
1301
+ [Heisenbugs](https://en.wikipedia.org/wiki/Heisenbug) was coined to describe the
1302
1302
  situation where using a debugger (among other possibilities) changes the
1303
1303
  behavior of the program so that the bug doesn't manifest itself anymore.
1304
1304
 
@@ -1468,6 +1468,7 @@ display a short list of named classes of commands
1468
1468
  save -- Saves current byebug session to a file
1469
1469
  set -- Modifies byebug settings
1470
1470
  show -- Shows byebug settings
1471
+ skip -- Runs until the next breakpoint as long as it is different from the current one
1471
1472
  source -- Restores a previously saved byebug session
1472
1473
  step -- Steps into blocks or methods one or more times
1473
1474
  thread -- Commands to manipulate threads
data/LICENSE CHANGED
@@ -1,23 +1,23 @@
1
- Copyright (c) David Rodríguez <deivid.rodriguez@gmail.com>
1
+ Copyright (c) 2018 David Rodríguez <deivid.rodriguez@riseup.net>
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions
6
- are met:
7
- 1. Redistributions of source code must retain the above copyright
8
- notice, this list of conditions and the following disclaimer.
9
- 2. Redistributions in binary form must reproduce the above copyright
10
- notice, this list of conditions and the following disclaimer in the
11
- documentation and/or other materials provided with the distribution.
5
+ modification, are permitted provided that the following conditions are met:
12
6
 
13
- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
14
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16
- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
7
+ * Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+
10
+ * Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
17
18
  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23
- SUCH DAMAGE.
19
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md CHANGED
@@ -1,27 +1,28 @@
1
1
  # Byebug
2
2
 
3
3
  [![Version][gem]][gem_url]
4
- [![Maintainability][mai]][mai_url]
4
+ [![Tidelift][tid]][tid_url]
5
5
  [![Coverage][cov]][cov_url]
6
6
  [![Gitter][irc]][irc_url]
7
7
 
8
8
  [gem]: https://img.shields.io/gem/v/byebug.svg
9
- [mai]: https://api.codeclimate.com/v1/badges/f1a1bec582752c22da80/maintainability
9
+ [tid]: https://tidelift.com/badges/github/deivid-rodriguez/byebug
10
10
  [cov]: https://api.codeclimate.com/v1/badges/f1a1bec582752c22da80/test_coverage
11
11
  [irc]: https://img.shields.io/badge/IRC%20(gitter)-devs%20%26%20users-brightgreen.svg
12
12
 
13
13
  [gem_url]: https://rubygems.org/gems/byebug
14
- [mai_url]: https://codeclimate.com/github/deivid-rodriguez/byebug/maintainability
14
+ [tid_url]: https://tidelift.com/subscription/pkg/rubygems-byebug?utm_source=rubygems-byebug&utm_medium=readme_badge
15
15
  [cov_url]: https://codeclimate.com/github/deivid-rodriguez/byebug/test_coverage
16
16
  [irc_url]: https://gitter.im/deivid-rodriguez/byebug
17
17
 
18
- Byebug is a simple to use, feature rich debugger for Ruby. It uses the
18
+ Byebug is a simple to use and feature rich debugger for Ruby. It uses the
19
19
  TracePoint API for execution control and the Debug Inspector API for call stack
20
- navigation, so it doesn't depend on internal core sources. It's developed as a C
21
- extension, so it's fast. And it has a full test suite so it's reliable.
20
+ navigation. Therefore, Byebug doesn't depend on internal core sources. Byebug is also
21
+ fast because it is developed as a C extension and reliable because it is supported
22
+ by a full test suite.
22
23
 
23
- It allows you to see what is going on _inside_ a Ruby program while it executes
24
- and offers many of the traditional debugging features such as:
24
+ The debugger permits the ability to understand what is going on _inside_ a Ruby program
25
+ while it executes and offers many of the traditional debugging features such as:
25
26
 
26
27
  * Stepping: Running your program one line at a time.
27
28
  * Breaking: Pausing the program at some event or specified instruction, to
@@ -31,25 +32,25 @@ and offers many of the traditional debugging features such as:
31
32
  * Tracking: Keeping track of the different values of your variables or the
32
33
  different lines executed by your program.
33
34
 
35
+ ## For enterprise
36
+
37
+ Byebug for enterprise is available via the Tidelift Subscription. [Learn
38
+ more][Tidelift for enterprise].
39
+
34
40
  ## Build Status
35
41
 
36
- Linux [![Cir][cir]][cir_url]
37
- macOS [![Tra][tra]][tra_url]
42
+ Linux ![](https://github.com/deivid-rodriguez/byebug/workflows/build/badge.svg)
38
43
  Windows [![Vey][vey]][vey_url]
39
44
 
40
- [cir]: https://circleci.com/gh/deivid-rodriguez/byebug/tree/master.svg?style=svg
41
- [tra]: https://api.travis-ci.org/deivid-rodriguez/byebug.svg?branch=master
42
45
  [vey]: https://ci.appveyor.com/api/projects/status/github/deivid-rodriguez/byebug?svg=true
43
46
 
44
- [cir_url]: https://circleci.com/gh/deivid-rodriguez/byebug/tree/master
45
- [tra_url]: https://travis-ci.org/deivid-rodriguez/byebug
46
47
  [vey_url]: https://ci.appveyor.com/project/deivid-rodriguez/byebug
47
48
 
48
49
  ## Requirements
49
50
 
50
- * Required: MRI 2.2.0 or higher.
51
-
52
- * Recommended: MRI 2.3.0 or higher.
51
+ * _Required_: MRI 2.4.0 or higher.
52
+ * _Recommended_: MRI 2.6.4 or higher (MRI 2.6.0 to 2.6.3 contain a regression
53
+ causing unbalanced call/return events in some cases, breaking the `next` command).
53
54
 
54
55
  ## Install
55
56
 
@@ -57,7 +58,7 @@ Windows [![Vey][vey]][vey_url]
57
58
  gem install byebug
58
59
  ```
59
60
 
60
- Or if you use `bundler`,
61
+ Alternatively, if you use `bundler`:
61
62
 
62
63
  ```shell
63
64
  bundle add byebug --group "development, test"
@@ -67,12 +68,9 @@ bundle add byebug --group "development, test"
67
68
 
68
69
  ### From within the Ruby code
69
70
 
70
- Simply drop
71
-
72
- byebug
73
-
74
- wherever you want to start debugging and the execution will stop there.
75
- If you were debugging Rails, for example, you would add `byebug` to your code.
71
+ Simply include `byebug` wherever you want to start debugging and the execution will
72
+ stop there. For example, if you were debugging Rails, you would add `byebug` to
73
+ your code:
76
74
 
77
75
  ```ruby
78
76
  def index
@@ -81,13 +79,13 @@ def index
81
79
  end
82
80
  ```
83
81
 
84
- And then start a Rails server.
82
+ And then start a Rails server:
85
83
 
86
84
  ```shell
87
85
  bin/rails s
88
86
  ```
89
87
 
90
- Once the execution gets to your `byebug` command you will get a debugging prompt.
88
+ Once the execution gets to your `byebug` command, you will receive a debugging prompt.
91
89
 
92
90
  ### From the command line
93
91
 
@@ -99,49 +97,52 @@ byebug myscript.rb
99
97
 
100
98
  ## Byebug's commands
101
99
 
102
- Command | Aliases | Subcommands
103
- ------- | ------- | -----------
104
- `backtrace` | `bt` `where` |
105
- `break` | |
106
- `catch` | |
107
- `condition` | |
108
- `continue` | |
109
- `debug` | |
110
- `delete` | |
111
- `disable` | | `breakpoints` `display`
112
- `display` | |
113
- `down` | |
114
- `edit` | |
115
- `enable` | | `breakpoints` `display`
116
- `finish` | |
117
- `frame` | |
118
- `help` | |
119
- `history` | |
120
- `info` | | `args` `breakpoints` `catch` `display` `file` `line` `program`
121
- `interrupt` | |
122
- `irb` | |
123
- `kill` | |
124
- `list` | |
125
- `method` | | `instance`
126
- `next` | |
127
- `pry` | |
128
- `quit` | |
129
- `restart` | |
130
- `save` | |
131
- `set` | | `autoirb` `autolist` `autopry` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `savefile` `stack_on_error` `width`
132
- `show` | | `autoirb` `autolist` `autopry` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `savefile` `stack_on_error` `width`
133
- `source` | |
134
- `step` | |
135
- `thread` | | `current` `list` `resume` `stop` `switch`
136
- `tracevar` | |
137
- `undisplay` | |
138
- `untracevar`| |
139
- `up` | |
140
- `var` | | `all` `constant` `global` `instance` `local`
100
+ Command | Aliases | Subcommands
101
+ ------- | ------- | -----------
102
+ `backtrace` | `bt` `w` `where`|
103
+ `break` | `b` |
104
+ `catch` | `cat` |
105
+ `condition` | `cond` |
106
+ `continue` | `c` `cont` |
107
+ `continue!` | `c!` `cont!` |
108
+ `debug` | |
109
+ `delete` | `del` |
110
+ `disable` | `dis` | `breakpoints` `display`
111
+ `display` | `disp` |
112
+ `down` | |
113
+ `edit` | `ed` |
114
+ `enable` | `en` | `breakpoints` `display`
115
+ `finish` | `fin` |
116
+ `frame` | `f` |
117
+ `help` | `h` |
118
+ `history` | `hist` |
119
+ `info` | `i` | `args` `breakpoints` `catch` `display` `file` `line` `program`
120
+ `interrupt` | `int` |
121
+ `irb` | |
122
+ `kill` | |
123
+ `list` | `l` |
124
+ `method` | `m` | `instance`
125
+ `next` | `n` |
126
+ `pry` | |
127
+ `quit` | `q` |
128
+ `quit!` | `q!` |
129
+ `restart` | |
130
+ `save` | `sa` |
131
+ `set` | | `autoirb` `autolist` `autopry` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `savefile` `stack_on_error` `width`
132
+ `show` | | `autoirb` `autolist` `autopry` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `savefile` `stack_on_error` `width`
133
+ `skip` | `sk` |
134
+ `source` | `so` |
135
+ `step` | `s` |
136
+ `thread` | `th` | `current` `list` `resume` `stop` `switch`
137
+ `tracevar` | `tr` |
138
+ `undisplay` | `undisp` |
139
+ `untracevar`| `untr` |
140
+ `up` | |
141
+ `var` | `v` | `all` `constant` `global` `instance` `local`
141
142
 
142
143
  ## Semantic Versioning
143
144
 
144
- Byebug tries to follow [semantic versioning](http://semver.org) and tries to
145
+ Byebug attempts to follow [semantic versioning](https://semver.org) and
145
146
  bump major version only when backwards incompatible changes are released.
146
147
  Backwards compatibility is targeted to [pry-byebug] and any other plugins
147
148
  relying on `byebug`.
@@ -166,10 +167,18 @@ started. Proper documentation will be eventually written.
166
167
 
167
168
  See [Getting Started with Development](CONTRIBUTING.md).
168
169
 
169
- You can also help `byebug` by leaving a small (or big) tip through
170
- [Liberapay][liberapay.com].
170
+ ## Funding
171
+
172
+ Subscribe to [Tidelift][Tidelift support] to ensure byebug stays actively
173
+ maintained, and at the same time get licensing assurances and timely security
174
+ notifications for your open source dependencies.
175
+
176
+ You can also help `byebug` by leaving a small (or big) tip through [Liberapay].
177
+
178
+ ## Security contact information
171
179
 
172
- [![Support via Liberapay][liberapay-button]][liberapay-donate]
180
+ Please use the Tidelift security contact to [report a security vulnerability].
181
+ Tidelift will coordinate the fix and disclosure.
173
182
 
174
183
  ## Credits
175
184
 
@@ -190,6 +199,8 @@ software, especially:
190
199
  [minitest-byebug]: https://github.com/kaspth/minitest-byebug
191
200
  [sublime_debugger]: https://github.com/shuky19/sublime_debugger
192
201
  [atom-byebug]: https://github.com/izaera/atom-byebug
193
- [liberapay.com]: https://liberapay.com
194
- [liberapay-button]: https://liberapay.com/assets/widgets/donate.svg
195
- [liberapay-donate]: https://liberapay.com/byebug/donate
202
+ [Liberapay]: https://liberapay.com/byebug/donate
203
+ [Tidelift]: https://tidelift.com/subscription/pkg/rubygems-byebug?utm_source=rubygems-byebug&utm_medium=readme_text
204
+ [Tidelift for enterprise]: https://tidelift.com/subscription/pkg/rubygems-byebug?utm_source=rubygems-byebug&utm_medium=referral&utm_campaign=github&utm_content=enterprise
205
+ [Tidelift support]: https://tidelift.com/subscription/pkg/rubygems-byebug?utm_source=rubygems-byebug&utm_medium=referral&utm_campaign=github&utm_content=support
206
+ [report a security vulnerability]: https://tidelift.com/security
data/exe/byebug CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require "byebug/runner"
4
+ require_relative "../lib/byebug/runner"
5
5
 
6
6
  Byebug::Runner.new.run
@@ -491,7 +491,7 @@ find_breakpoint_by_method(VALUE breakpoints, VALUE klass, ID mid, VALUE bind,
491
491
  }
492
492
 
493
493
  void
494
- Init_breakpoint(VALUE mByebug)
494
+ Init_byebug_breakpoint(VALUE mByebug)
495
495
  {
496
496
  breakpoint_max = 0;
497
497
 
@@ -244,7 +244,7 @@ call_at_line_check(VALUE ctx, debug_context_t *dc, VALUE breakpoint)
244
244
  if (!NIL_P(breakpoint))
245
245
  call_at_breakpoint(ctx, dc, breakpoint);
246
246
 
247
- reset_stepping_stop_points(dc);
247
+ byebug_reset_stepping_stop_points(dc);
248
248
 
249
249
  call_at_line(ctx, dc);
250
250
  }
@@ -305,14 +305,7 @@ call_event(VALUE trace_point, void *data)
305
305
 
306
306
  CALL_EVENT_SETUP;
307
307
 
308
- /* nil method_id means we are at top level so there can't be a method
309
- * breakpoint here. Just leave then. */
310
308
  msym = rb_tracearg_method_id(trace_arg);
311
- if (NIL_P(msym))
312
- {
313
- EVENT_TEARDOWN;
314
- return;
315
- }
316
309
 
317
310
  mid = SYM2ID(msym);
318
311
  klass = rb_tracearg_defined_class(trace_arg);
@@ -344,7 +337,7 @@ return_event(VALUE trace_point, void *data)
344
337
 
345
338
  if ((dc->steps_out == 0) && (CTX_FL_TEST(dc, CTX_FL_STOP_ON_RET)))
346
339
  {
347
- reset_stepping_stop_points(dc);
340
+ byebug_reset_stepping_stop_points(dc);
348
341
 
349
342
  call_at_return(context, dc, rb_tracearg_return_value(trace_arg));
350
343
  }
@@ -367,7 +360,9 @@ return_event(VALUE trace_point, void *data)
367
360
  * [#7] b_return@/hort/core_ext/numeric/conversions.rb:133 BigDecimal#to_s
368
361
  * [#7] return@:0 Fixnum#to_s # => This guy...
369
362
  */
370
- if (!NIL_P(file))
363
+ if (NIL_P(file))
364
+ rb_warn("The TracePoint API emitted a return event without file information. It might be a bug, please report this.");
365
+ else
371
366
  {
372
367
  line = rb_tracearg_lineno(trace_arg);
373
368
  binding = rb_tracearg_binding(trace_arg);
@@ -393,7 +388,7 @@ end_event(VALUE trace_point, void *data)
393
388
 
394
389
  if ((dc->steps_out == 0) && (CTX_FL_TEST(dc, CTX_FL_STOP_ON_RET)))
395
390
  {
396
- reset_stepping_stop_points(dc);
391
+ byebug_reset_stepping_stop_points(dc);
397
392
 
398
393
  call_at_end(context, dc);
399
394
  }
@@ -436,7 +431,7 @@ raise_event(VALUE trace_point, void *data)
436
431
 
437
432
  raised_exception = rb_tracearg_raised_exception(trace_arg);
438
433
 
439
- if (post_mortem == Qtrue)
434
+ if (post_mortem == Qtrue && !rb_ivar_defined(raised_exception, rb_intern("@__bb_context")))
440
435
  {
441
436
  pm_context = context_dup(dc);
442
437
  rb_ivar_set(raised_exception, rb_intern("@__bb_context"), pm_context);
@@ -747,7 +742,7 @@ Debug_load(int argc, VALUE *argv, VALUE self)
747
742
  if (0 != state)
748
743
  {
749
744
  status = rb_errinfo();
750
- reset_stepping_stop_points(dc);
745
+ byebug_reset_stepping_stop_points(dc);
751
746
  }
752
747
 
753
748
  return status;
@@ -892,7 +887,7 @@ Init_byebug()
892
887
 
893
888
  Init_threads_table(mByebug);
894
889
  Init_byebug_context(mByebug);
895
- Init_breakpoint(mByebug);
890
+ Init_byebug_breakpoint(mByebug);
896
891
 
897
892
  rb_global_variable(&breakpoints);
898
893
  rb_global_variable(&catchpoints);