byebug 4.0.5 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|