byebug 4.0.5 → 5.0.0
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 +72 -34
- data/CONTRIBUTING.md +26 -31
- data/README.md +3 -3
- data/lib/byebug/breakpoint.rb +2 -1
- data/lib/byebug/command.rb +27 -49
- data/lib/byebug/commands/break.rb +21 -15
- data/lib/byebug/commands/catch.rb +9 -15
- data/lib/byebug/commands/condition.rb +12 -15
- data/lib/byebug/commands/continue.rb +8 -11
- data/lib/byebug/commands/delete.rb +9 -12
- data/lib/byebug/commands/disable.rb +32 -0
- data/lib/byebug/commands/disable/breakpoints.rb +38 -0
- data/lib/byebug/commands/disable/display.rb +39 -0
- data/lib/byebug/commands/display.rb +18 -51
- data/lib/byebug/commands/down.rb +39 -0
- data/lib/byebug/commands/edit.rb +8 -14
- data/lib/byebug/commands/enable.rb +25 -0
- data/lib/byebug/commands/enable/breakpoints.rb +38 -0
- data/lib/byebug/commands/enable/display.rb +39 -0
- data/lib/byebug/commands/eval.rb +10 -192
- data/lib/byebug/commands/finish.rb +11 -12
- data/lib/byebug/commands/frame.rb +17 -182
- data/lib/byebug/commands/help.rb +18 -18
- data/lib/byebug/commands/history.rb +9 -10
- data/lib/byebug/commands/info.rb +17 -190
- data/lib/byebug/commands/info/args.rb +39 -0
- data/lib/byebug/commands/info/breakpoints.rb +59 -0
- data/lib/byebug/commands/info/catch.rb +39 -0
- data/lib/byebug/commands/info/display.rb +42 -0
- data/lib/byebug/commands/info/file.rb +81 -0
- data/lib/byebug/commands/info/line.rb +31 -0
- data/lib/byebug/commands/info/program.rb +51 -0
- data/lib/byebug/commands/interrupt.rb +5 -9
- data/lib/byebug/commands/irb.rb +5 -9
- data/lib/byebug/commands/kill.rb +6 -12
- data/lib/byebug/commands/list.rb +47 -19
- data/lib/byebug/commands/method.rb +8 -14
- data/lib/byebug/commands/next.rb +36 -0
- data/lib/byebug/commands/pp.rb +41 -0
- data/lib/byebug/commands/pry.rb +5 -9
- data/lib/byebug/commands/ps.rb +44 -0
- data/lib/byebug/commands/putl.rb +43 -0
- data/lib/byebug/commands/quit.rb +8 -12
- data/lib/byebug/commands/restart.rb +6 -12
- data/lib/byebug/commands/save.rb +30 -39
- data/lib/byebug/commands/set.rb +19 -21
- data/lib/byebug/commands/show.rb +10 -16
- data/lib/byebug/commands/source.rb +6 -12
- data/lib/byebug/commands/step.rb +36 -0
- data/lib/byebug/commands/thread.rb +13 -130
- data/lib/byebug/commands/thread/current.rb +35 -0
- data/lib/byebug/commands/thread/list.rb +41 -0
- data/lib/byebug/commands/thread/resume.rb +45 -0
- data/lib/byebug/commands/thread/stop.rb +41 -0
- data/lib/byebug/commands/thread/switch.rb +43 -0
- data/lib/byebug/commands/tracevar.rb +8 -14
- data/lib/byebug/commands/undisplay.rb +12 -15
- data/lib/byebug/commands/untracevar.rb +5 -11
- data/lib/byebug/commands/up.rb +39 -0
- data/lib/byebug/commands/var.rb +15 -94
- data/lib/byebug/commands/var/all.rb +37 -0
- data/lib/byebug/commands/var/const.rb +38 -0
- data/lib/byebug/commands/var/global.rb +33 -0
- data/lib/byebug/commands/var/instance.rb +35 -0
- data/lib/byebug/commands/var/local.rb +35 -0
- data/lib/byebug/commands/where.rb +47 -0
- data/lib/byebug/core.rb +10 -0
- data/lib/byebug/helpers/eval.rb +47 -0
- data/lib/byebug/helpers/file.rb +46 -0
- data/lib/byebug/helpers/frame.rb +76 -0
- data/lib/byebug/helpers/parse.rb +74 -0
- data/lib/byebug/helpers/string.rb +24 -0
- data/lib/byebug/helpers/thread.rb +53 -0
- data/lib/byebug/helpers/toggle.rb +56 -0
- data/lib/byebug/helpers/var.rb +45 -0
- data/lib/byebug/history.rb +2 -4
- data/lib/byebug/interface.rb +5 -3
- data/lib/byebug/interfaces/local_interface.rb +3 -1
- data/lib/byebug/interfaces/remote_interface.rb +3 -1
- data/lib/byebug/interfaces/test_interface.rb +6 -2
- data/lib/byebug/printers/plain.rb +1 -1
- data/lib/byebug/processors/command_processor.rb +9 -11
- data/lib/byebug/processors/control_command_processor.rb +1 -1
- data/lib/byebug/remote.rb +3 -0
- data/lib/byebug/runner.rb +5 -3
- data/lib/byebug/setting.rb +2 -18
- data/lib/byebug/settings/savefile.rb +21 -0
- data/lib/byebug/states/regular_state.rb +15 -6
- data/lib/byebug/subcommand_list.rb +33 -0
- data/lib/byebug/subcommands.rb +53 -0
- data/lib/byebug/version.rb +1 -1
- metadata +45 -6
- data/lib/byebug/commands/enable_disable.rb +0 -132
- data/lib/byebug/commands/stepping.rb +0 -75
- data/lib/byebug/helper.rb +0 -131
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96c7056e0b0872cdba9ffbc43941b6c804ee5db8
|
4
|
+
data.tar.gz: c06eaaf13304aca7e289301fa61a7c0735f16647
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fbf5703563d4b88ec8b5b843704a51b78d4f47f5f9e6735942fc1a75c881f440ff4569220e0c6c4f101bda57e1ec16f3089cf26fa3b068c32b97246ee60fd7e
|
7
|
+
data.tar.gz: 0ddec536c7c8ae53485105eaf226946d1fcc3510cd1b0a3220f446d18fbbe2433068de2e922ce44192dc5c559ad5fb74d9a76264327f273be3f127b6f32201f0
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,34 @@
|
|
1
|
+
## 5.0.0
|
2
|
+
### Fixed
|
3
|
+
* [#136](https://github.com/deivid-rodriguez/byebug/issues/136). `frame`
|
4
|
+
command not working with negative numbers (thanks @ark6).
|
5
|
+
|
6
|
+
### Added
|
7
|
+
* IDE support and a new command/subcommand API for plugins.
|
8
|
+
* Add a "savefile" setting holding the file where "save" command saves current
|
9
|
+
debugger's state.
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
* `disable` no longer disable all breakpoints, it just shows command's help
|
13
|
+
instead. To disable all breakpoints now you need to do `disable breakpoints`
|
14
|
+
(or `dis b`). Similarly, you can't no longer use `dis 1 2 3` but need to do
|
15
|
+
`dis b 1 2 3` to disable specific breakpoints. The same applies to the `enable`
|
16
|
+
command.
|
17
|
+
|
18
|
+
### Removed
|
19
|
+
* `help set <setting>` no longer works. `help set` includes that same output and
|
20
|
+
it's not verbose enough so that this is a problem. Same with `help show
|
21
|
+
<setting>`.
|
22
|
+
|
1
23
|
## 4.0.5 - 2015-04-02
|
2
24
|
### Fixed
|
3
|
-
* #131
|
25
|
+
* [#131](https://github.com/deivid-rodriguez/byebug/issues/131)
|
4
26
|
* Thread commands help format should be consistent with the rest of the help
|
5
27
|
system now.
|
6
28
|
|
7
29
|
## 4.0.4 - 2015-03-27
|
8
30
|
### Fixed
|
9
|
-
* #127
|
31
|
+
* [#127](https://github.com/deivid-rodriguez/byebug/issues/127)
|
10
32
|
|
11
33
|
## 4.0.3 - 2015-03-19
|
12
34
|
### Fixed
|
@@ -14,13 +36,15 @@ system now.
|
|
14
36
|
|
15
37
|
## 4.0.2 - 2015-03-16
|
16
38
|
### Fixed
|
17
|
-
*
|
18
|
-
|
39
|
+
* [#118](https://github.com/deivid-rodriguez/byebug/issues/118). Remove
|
40
|
+
`rb-readline` as a dependency and show a help message whenever requiring
|
41
|
+
`readline` fails instead.
|
19
42
|
|
20
43
|
## 4.0.1 - 2015-03-13
|
21
44
|
### Fixed
|
22
45
|
* .yml files needed for printers support were missing from the release... :S
|
23
|
-
* Add `
|
46
|
+
* [#118](https://github.com/deivid-rodriguez/byebug/issues/118). Add `readline`
|
47
|
+
as a dependency.
|
24
48
|
|
25
49
|
## 4.0.0 - 2015-03-13
|
26
50
|
### Added
|
@@ -35,9 +59,10 @@ requiring readline fails instead (#118)
|
|
35
59
|
### Changed
|
36
60
|
- A lot of internal refactoring.
|
37
61
|
- `tracevar` now requires the full global variable name (with "$").
|
38
|
-
- `catch`
|
39
|
-
working anyways
|
40
|
-
- `step` is now
|
62
|
+
- [#92](https://github.com/deivid-rodriguez/byebug/issues/92). The `catch`
|
63
|
+
command is not allowed in post_mortem mode anymore. It was not working anyways.
|
64
|
+
- [#85](https://github.com/deivid-rodriguez/byebug/issues/85). `step` is now
|
65
|
+
more user friendly when used in combination with `up`.
|
41
66
|
- `var const` can now be called without an argument and will show constants in
|
42
67
|
the current scope.
|
43
68
|
- `break` with a class name now creates breakpoints regardless of class not
|
@@ -48,17 +73,21 @@ created anyways.
|
|
48
73
|
- Code reloading issues.
|
49
74
|
- `set fullpath` was not showing fullpaths. Now it is.
|
50
75
|
- `up`, `down` and `frame` commands now work in post_mortem mode (#93).
|
51
|
-
-
|
76
|
+
- rc file (`.byebugrc`) loading: invalid commands are just ignored instead of
|
52
77
|
aborting, global (home) rc file is now properly loaded before project's file.
|
53
|
-
-
|
78
|
+
- [#93](https://github.com/deivid-rodriguez/byebug/issues/93). Backtraces not
|
79
|
+
working in `post_mortem` mode.
|
54
80
|
- 'cmd1 ; cmd2 ; ...; cmdN' syntax which allows running several commands
|
55
81
|
sequentially.
|
56
|
-
-
|
57
|
-
|
82
|
+
- [#101](https://github.com/deivid-rodriguez/byebug/issues/101). `finish`
|
83
|
+
command not stopping at the correct line.
|
84
|
+
- [#106](https://github.com/deivid-rodriguez/byebug/issues/106). `break` with
|
85
|
+
namespaced class, like `break A::B#c` should now work.
|
58
86
|
- Command history is now persisted before exiting byebug.
|
59
87
|
- Setting breakpoint in a method would stop not only at the beginning of the
|
60
88
|
method but also at the beginning of every block inside the method.
|
61
|
-
-
|
89
|
+
- [#122](https://github.com/deivid-rodriguez/byebug/issues/122). Setting
|
90
|
+
breakpoints on module methods (@x-yuri).
|
62
91
|
|
63
92
|
### Removed
|
64
93
|
- `autoreload` setting as it's not necessary anymore. Code should always be up
|
@@ -82,12 +111,14 @@ autoevaluate it.
|
|
82
111
|
|
83
112
|
## 3.5.1 - 2014-09-29
|
84
113
|
### Fixed
|
85
|
-
-
|
114
|
+
- [#79](https://github.com/deivid-rodriguez/byebug/issues/79). Windows
|
115
|
+
installation.
|
86
116
|
- `condition` command not properly detecting invalid breakpoint ids.
|
87
117
|
|
88
118
|
## 3.5.0 - 2014-09-28
|
89
119
|
### Fixed
|
90
|
-
- Byebug's history
|
120
|
+
- [#81](https://github.com/deivid-rodriguez/byebug/issues/81). Byebug's history
|
121
|
+
messing up other programs using Readline.
|
91
122
|
- Readline's history not being properly saved and inmediately available.
|
92
123
|
- User not being notified when trying to debug a non existent script.
|
93
124
|
|
@@ -98,14 +129,14 @@ autoevaluate it.
|
|
98
129
|
|
99
130
|
## 3.4.2 - 2014-09-26
|
100
131
|
### Fixed
|
101
|
-
-
|
102
|
-
ruby -Itest
|
103
|
-
|
104
|
-
|
132
|
+
- [#67](https://github.com/deivid-rodriguez/byebug/issues/67). Debugging
|
133
|
+
commands invoked by ruby executable, as in `byebug -- ruby -Itest a_test.rb
|
134
|
+
-n test_something`.
|
105
135
|
|
106
136
|
## 3.4.1 - 2014-09-25
|
107
137
|
### Fixed
|
108
|
-
- Use of threads
|
138
|
+
- [#54](https://github.com/deivid-rodriguez/byebug/issues/54). Use of threads
|
139
|
+
inside `eval` command.
|
109
140
|
- `list` command not listing backwards after reaching the end of the file.
|
110
141
|
|
111
142
|
## 3.4.0 - 2014-09-01
|
@@ -138,16 +169,17 @@ default behaviour though.
|
|
138
169
|
|
139
170
|
## 3.2.0 - 2014-08-02
|
140
171
|
### Fixed
|
141
|
-
-
|
142
|
-
|
143
|
-
-
|
172
|
+
- [#71](https://github.com/deivid-rodriguez/byebug/issues/71). Remote debugging
|
173
|
+
(thanks @shuky19).
|
174
|
+
- [#69](https://github.com/deivid-rodriguez/byebug/issues/69). `source` command
|
175
|
+
(thanks @Olgagr).
|
144
176
|
|
145
177
|
### Removed
|
146
178
|
- `post_mortem` activation through `Byebug.post_mortem`. Use `set post_mortem`
|
147
179
|
instead.
|
148
180
|
- `info stack` command. Use `where` instead.
|
149
181
|
- `method iv` command. Use `var instance` instead.
|
150
|
-
-
|
182
|
+
- [#77](https://github.com/deivid-rodriguez/byebug/issues/77). Warning.
|
151
183
|
|
152
184
|
## 3.1.2 - 2014-04-23
|
153
185
|
### Fixed
|
@@ -179,8 +211,8 @@ global variable tracing.
|
|
179
211
|
- Plain `byebug` not working when `pry-byebug` installed.
|
180
212
|
- `post_mortem` mode.
|
181
213
|
- Command history not being saved after regular program termination.
|
182
|
-
- (
|
183
|
-
@zmoazeni
|
214
|
+
- [#54](https://github.com/deivid-rodriguez/byebug/issues/54). (Again) calling
|
215
|
+
`Byebug.start` with `Timeout.timeout` (thanks @zmoazeni).
|
184
216
|
|
185
217
|
### Added
|
186
218
|
- Allow disabling `post_mortem` mode.
|
@@ -191,7 +223,7 @@ like shell's `history` command.
|
|
191
223
|
- `show/set history filename` is now `show/set histfile`
|
192
224
|
- `show/set history size` is now `show/set histsize`
|
193
225
|
- `show/set history save` is now `show/set autosave`
|
194
|
-
- `finish`
|
226
|
+
- `finish` semantics, see
|
195
227
|
[61f9b4d](https://github.com/deivid-rodriguez/byebug/commit/61f9b4d).
|
196
228
|
- Use `per project` history file by default.
|
197
229
|
|
@@ -200,8 +232,12 @@ like shell's `history` command.
|
|
200
232
|
command work is always saved now.
|
201
233
|
|
202
234
|
## 2.7.0 - 2014-02-24
|
203
|
-
|
204
|
-
-
|
235
|
+
### Fixed
|
236
|
+
- [#52](https://github.com/deivid-rodriguez/byebug/issues/52). `IGNORED_FILES`
|
237
|
+
slowing down startup.
|
238
|
+
- [#53](https://github.com/deivid-rodriguez/byebug/issues/53) and
|
239
|
+
[#54](https://github.com/deivid-rodriguez/byebug/issues/54). Calling
|
240
|
+
`Byebug.start` with `Timeout.timeout`.
|
205
241
|
|
206
242
|
## 2.6.0 - 2014-02-08
|
207
243
|
### Fixed
|
@@ -213,13 +249,14 @@ command work is always saved now.
|
|
213
249
|
|
214
250
|
## 2.4.1 - 2013-12-05
|
215
251
|
### Fixed
|
216
|
-
-
|
252
|
+
- [#40](https://github.com/deivid-rodriguez/byebug/issues/40). Installation
|
253
|
+
error in Mac OSX (thanks @luislavena).
|
217
254
|
|
218
255
|
## 2.4.0 - 2013-12-02
|
219
256
|
### Fixed
|
220
257
|
- `thread list` showing too many threads.
|
221
|
-
- Fix setting post mortem mode with
|
222
|
-
post mortem functionality available as specifying
|
258
|
+
- Fix setting post mortem mode with `set post_mortem`. Now this is the only
|
259
|
+
post mortem functionality available as specifying `Byebug.post_mortem` with a
|
223
260
|
block has been removed in this version.
|
224
261
|
|
225
262
|
### Added
|
@@ -250,7 +287,8 @@ library (thanks @nobu).
|
|
250
287
|
|
251
288
|
## 2.2.1 - 2013-09-24
|
252
289
|
### Fixed
|
253
|
-
-
|
290
|
+
- [#26](https://github.com/deivid-rodriguez/byebug/issues/26). Compilation issue
|
291
|
+
introduced in `2.2.0`.
|
254
292
|
|
255
293
|
### Changed
|
256
294
|
- `show/set stack_trace_on_error` is now `show/set stack_on_error`.
|
@@ -289,7 +327,7 @@ library (thanks @nobu).
|
|
289
327
|
- `jump` command. It had never worked.
|
290
328
|
|
291
329
|
### Changed
|
292
|
-
-
|
330
|
+
- Several internal refactorings.
|
293
331
|
|
294
332
|
## 1.8.2 - 2013-08-16
|
295
333
|
### Fixed
|
data/CONTRIBUTING.md
CHANGED
@@ -1,3 +1,29 @@
|
|
1
|
+
## Getting started
|
2
|
+
|
3
|
+
The following steps should help you getting started:
|
4
|
+
|
5
|
+
* `Byebug` depends on the TracePoint API provided by `ruby-core`. This is a
|
6
|
+
young API and a lot of bugs have been recently corrected, so make sure you
|
7
|
+
always have the lastest patch level release installed.
|
8
|
+
* Get a local clone of `byebug`'s source code.
|
9
|
+
* Run `bundle install` to get development & test dependencies installed.
|
10
|
+
* Install the [overcommit][] hooks using `bundle exec overcommit --install`.
|
11
|
+
They will review your changes before they are committed, checking they are
|
12
|
+
consistent with the project's code style. If you're changing C files, make sure
|
13
|
+
you have the GNU indent utility installed in your system. `sudo apt-get install
|
14
|
+
indent` for linux or `brew install gnu-indent --with-default-names` should do
|
15
|
+
the job.
|
16
|
+
* Make sure you compile the C-extension using `bundle exec rake compile`.
|
17
|
+
Otherwise you won't be able to use `byebug`.
|
18
|
+
* Run the test suite using the default rake task (`bundle exec rake`). This
|
19
|
+
task is composed of 2 subtasks: `bundle exec rake compile` && `bundle exec rake
|
20
|
+
test`.
|
21
|
+
|
22
|
+
After having done this, just read the code and improve it! Your contribution is
|
23
|
+
appreciated a lot!
|
24
|
+
|
25
|
+
[overcommit]: https://github.com/brigade/overcommit/
|
26
|
+
|
1
27
|
## Byebug as a C-extension
|
2
28
|
|
3
29
|
Byebug is a gem developed as a C-extension. The debugger internal's
|
@@ -8,34 +34,3 @@ or the feature you are willing to add. You can learn more about C-extensions
|
|
8
34
|
[here](http://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1.html)
|
9
35
|
or
|
10
36
|
[here](http://tenderlovemaking.com/2010/12/11/writing-ruby-c-extensions-part-2.html).
|
11
|
-
|
12
|
-
|
13
|
-
## Prerequisites
|
14
|
-
|
15
|
-
`Byebug` depends on the TracePoint API provided by `ruby-core`. This is a young
|
16
|
-
API and a lot of bugs have been recently corrected. Without this fixes,
|
17
|
-
`byebug` will fail to work properly, so make sure you have always the last
|
18
|
-
patch level releases of Ruby installed.
|
19
|
-
|
20
|
-
Also, if you are developing on linux, make sure you have the GNU indent utility
|
21
|
-
installed for automatic check of code style in C files. If you're developing in
|
22
|
-
MacOSX, just make sure you keep a consistent style if you edit the C-extension
|
23
|
-
files. Travis CI will do the automatic check anyways.
|
24
|
-
|
25
|
-
|
26
|
-
## Getting started
|
27
|
-
|
28
|
-
Once you have a local clone of `byebug`, you can start digging in the source
|
29
|
-
code. First run `bundle install` to get development & test dependencies
|
30
|
-
installed. Also make sure you compile the C-extension using `bundle exec rake
|
31
|
-
compile`, otherwise you won't be able to use your local clone. You can also run
|
32
|
-
the test suite as the default rake task (`bundle exec rake`). This task is
|
33
|
-
composed of 4 subtasks:
|
34
|
-
|
35
|
-
bundle exec rake compile # compiles the C-extension
|
36
|
-
bundle exec rake test # Run the test suite
|
37
|
-
bundle exec rake rubocop # Run RuboCop's checks on the Ruby files
|
38
|
-
bundle exec rake ccop # Run `indent`'s checks on the C files
|
39
|
-
|
40
|
-
After having done this, just read the code and improve it! Your contribution is
|
41
|
-
appreciated a lot!
|
data/README.md
CHANGED
@@ -97,7 +97,7 @@ are debugging rails, start the server and once the execution gets to your
|
|
97
97
|
`frame` | |
|
98
98
|
`help` | |
|
99
99
|
`history` | |
|
100
|
-
`info` | | `args` `breakpoints` `catch` `display` `file` `
|
100
|
+
`info` | | `args` `breakpoints` `catch` `display` `file` `line` `program`
|
101
101
|
`irb` | |
|
102
102
|
`kill` | |
|
103
103
|
`list` | |
|
@@ -110,8 +110,8 @@ are debugging rails, start the server and once the execution gets to your
|
|
110
110
|
`quit` | `exit` |
|
111
111
|
`restart` | |
|
112
112
|
`save` | |
|
113
|
-
`set` | | `autoeval` `autoirb` `autolist` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `stack_on_error` `verbose` `width`
|
114
|
-
`show` | | `autoeval` `autoirb` `autolist` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `stack_on_error` `verbose` `width`
|
113
|
+
`set` | | `autoeval` `autoirb` `autolist` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `savefile` `stack_on_error` `verbose` `width`
|
114
|
+
`show` | | `autoeval` `autoirb` `autolist` `autosave` `basename` `callstyle` `fullpath` `histfile` `histsize` `linetrace` `listsize` `post_mortem` `savefile` `stack_on_error` `verbose` `width`
|
115
115
|
`source` | |
|
116
116
|
`step` | |
|
117
117
|
`thread` | | `current` `list` `resume` `stop` `switch`
|
data/lib/byebug/breakpoint.rb
CHANGED
@@ -48,7 +48,8 @@ module Byebug
|
|
48
48
|
# @param filename [String] File name to inspect for possible breakpoints
|
49
49
|
#
|
50
50
|
def self.potential_lines(filename)
|
51
|
-
name
|
51
|
+
name = "#{Time.new.to_i}_#{rand(2**31)}"
|
52
|
+
lines = {}
|
52
53
|
iseq = RubyVM::InstructionSequence.compile(File.read(filename), name)
|
53
54
|
|
54
55
|
iseq.disasm.each_line do |line|
|
data/lib/byebug/command.rb
CHANGED
@@ -1,29 +1,36 @@
|
|
1
1
|
require 'columnize'
|
2
2
|
require 'forwardable'
|
3
|
-
require 'byebug/
|
3
|
+
require 'byebug/helpers/string'
|
4
4
|
|
5
5
|
module Byebug
|
6
6
|
#
|
7
7
|
# Parent class of all byebug commands.
|
8
8
|
#
|
9
|
-
# Subclasses need to implement a `regexp` and an `execute`
|
9
|
+
# Subclasses need to implement a `regexp` method and an `execute` method.
|
10
10
|
#
|
11
11
|
class Command
|
12
12
|
extend Forwardable
|
13
13
|
|
14
|
-
include
|
15
|
-
include FileFunctions
|
16
|
-
|
17
|
-
Subcmd = Struct.new(:name, :min, :help)
|
14
|
+
include Helpers::StringHelper
|
18
15
|
|
19
16
|
def initialize(state)
|
20
|
-
@match
|
17
|
+
@match = nil
|
18
|
+
@state = state
|
21
19
|
end
|
22
20
|
|
23
21
|
def match(input)
|
24
22
|
@match = regexp.match(input)
|
25
23
|
end
|
26
24
|
|
25
|
+
def_delegators :'self.class', :to_name, :description
|
26
|
+
|
27
|
+
#
|
28
|
+
# Default help text for a command.
|
29
|
+
#
|
30
|
+
def help
|
31
|
+
prettify(description)
|
32
|
+
end
|
33
|
+
|
27
34
|
def_delegator :"Byebug.printer", :print, :pr
|
28
35
|
def_delegator :"Byebug.printer", :print_collection, :prc
|
29
36
|
def_delegator :"Byebug.printer", :print_variables, :prv
|
@@ -65,8 +72,6 @@ module Byebug
|
|
65
72
|
end
|
66
73
|
|
67
74
|
class << self
|
68
|
-
include StringFunctions
|
69
|
-
|
70
75
|
attr_accessor :allow_in_control
|
71
76
|
attr_writer :allow_in_post_mortem, :always_run
|
72
77
|
|
@@ -78,49 +83,22 @@ module Byebug
|
|
78
83
|
@always_run ||= 0
|
79
84
|
end
|
80
85
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
output
|
86
|
+
#
|
87
|
+
# Name of the command, as executed by the user.
|
88
|
+
#
|
89
|
+
def to_name
|
90
|
+
name.gsub(/^Byebug::/, '').gsub(/Command$/, '').downcase
|
87
91
|
end
|
88
92
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
nil
|
98
|
-
end
|
99
|
-
|
100
|
-
def format_subcmd(subcmd_name)
|
101
|
-
subcmd = find(self::Subcommands, subcmd_name)
|
102
|
-
return "Invalid \"#{names.join('|')}\" " \
|
103
|
-
"subcommand \"#{args[1]}\"." unless subcmd
|
104
|
-
|
105
|
-
"\n #{subcmd.help}.\n\n"
|
106
|
-
end
|
107
|
-
|
108
|
-
def format_subcmds
|
109
|
-
header = names.join('|')
|
110
|
-
s = " List of \"#{header}\" subcommands:\n --\n"
|
111
|
-
w = self::Subcommands.map(&:name).max_by(&:size).size
|
112
|
-
self::Subcommands.each do |subcmd|
|
113
|
-
s += format(" %s %-#{w}s -- %s\n", header, subcmd.name, subcmd.help)
|
114
|
-
end
|
115
|
-
s + "\n"
|
116
|
-
end
|
117
|
-
|
118
|
-
def commands
|
119
|
-
@commands ||= []
|
120
|
-
end
|
93
|
+
#
|
94
|
+
# Available subcommands for the current command
|
95
|
+
#
|
96
|
+
# A subcommand is any class defined inside the parent's command class
|
97
|
+
#
|
98
|
+
def subcommands
|
99
|
+
const_list = constants(false).map { |const| const_get(const, false) }
|
121
100
|
|
122
|
-
|
123
|
-
commands << klass
|
101
|
+
const_list.select { |c| c.is_a?(Class) }
|
124
102
|
end
|
125
103
|
end
|
126
104
|
end
|
@@ -1,10 +1,15 @@
|
|
1
1
|
require 'byebug/command'
|
2
|
+
require 'byebug/helpers/file'
|
3
|
+
require 'byebug/helpers/parse'
|
2
4
|
|
3
5
|
module Byebug
|
4
6
|
#
|
5
7
|
# Implements breakpoint functionality
|
6
8
|
#
|
7
9
|
class BreakCommand < Command
|
10
|
+
include Helpers::FileHelper
|
11
|
+
include Helpers::ParseHelper
|
12
|
+
|
8
13
|
self.allow_in_post_mortem = false
|
9
14
|
self.allow_in_control = true
|
10
15
|
|
@@ -13,7 +18,7 @@ module Byebug
|
|
13
18
|
end
|
14
19
|
|
15
20
|
def execute
|
16
|
-
return puts(
|
21
|
+
return puts(help) unless @match[1]
|
17
22
|
|
18
23
|
b = line_breakpoint(@match[1]) || method_breakpoint(@match[1])
|
19
24
|
|
@@ -27,25 +32,24 @@ module Byebug
|
|
27
32
|
errmsg(e.message)
|
28
33
|
end
|
29
34
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
35
|
+
def short_description
|
36
|
+
'Set breakpoint to some position, (optionally) if expr == true'
|
37
|
+
end
|
34
38
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
+
def description
|
40
|
+
<<-EOD
|
41
|
+
b[reak] [file:]line [if expr]
|
42
|
+
b[reak] [module::...]class(.|#)method [if expr]
|
39
43
|
|
40
|
-
|
41
|
-
|
42
|
-
end
|
44
|
+
#{short_description}
|
45
|
+
EOD
|
43
46
|
end
|
44
47
|
|
45
48
|
private
|
46
49
|
|
47
50
|
def line_breakpoint(loc)
|
48
|
-
line
|
51
|
+
line = loc.match(/^(\d+)$/)
|
52
|
+
file_line = loc.match(/^([^:]+):(\d+)$/)
|
49
53
|
return nil unless line || file_line
|
50
54
|
|
51
55
|
f, l = line ? [@state.file, line[1]] : [file_line[1], file_line[2]]
|
@@ -57,7 +61,8 @@ module Byebug
|
|
57
61
|
|
58
62
|
def method_breakpoint(location)
|
59
63
|
location.match(/([^.#]+)[.#](.+)/) do |match|
|
60
|
-
k
|
64
|
+
k = bb_warning_eval(match[1])
|
65
|
+
m = match[2]
|
61
66
|
|
62
67
|
klass = k && k.is_a?(Module) ? k.name : match[1]
|
63
68
|
method = m.intern
|
@@ -67,7 +72,8 @@ module Byebug
|
|
67
72
|
end
|
68
73
|
|
69
74
|
def check_errors(file, line)
|
70
|
-
path
|
75
|
+
path = File.expand_path(file)
|
76
|
+
deco_path = normalize(file)
|
71
77
|
|
72
78
|
fail(pr('break.errors.source', file: deco_path)) unless File.exist?(path)
|
73
79
|
|