byebug 5.0.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -1
  3. data/CONTRIBUTING.md +35 -13
  4. data/GUIDE.md +256 -198
  5. data/README.md +5 -11
  6. data/ext/byebug/byebug.c +5 -43
  7. data/ext/byebug/byebug.h +6 -1
  8. data/ext/byebug/context.c +4 -5
  9. data/lib/byebug/command.rb +64 -64
  10. data/lib/byebug/command_list.rb +32 -0
  11. data/lib/byebug/commands.rb +37 -0
  12. data/lib/byebug/commands/break.rb +45 -37
  13. data/lib/byebug/commands/catch.rb +52 -28
  14. data/lib/byebug/commands/condition.rb +19 -13
  15. data/lib/byebug/commands/continue.rb +15 -11
  16. data/lib/byebug/commands/delete.rb +18 -12
  17. data/lib/byebug/commands/disable.rb +9 -10
  18. data/lib/byebug/commands/disable/breakpoints.rb +13 -11
  19. data/lib/byebug/commands/disable/display.rb +13 -11
  20. data/lib/byebug/commands/display.rb +32 -24
  21. data/lib/byebug/commands/down.rb +18 -14
  22. data/lib/byebug/commands/edit.rb +42 -26
  23. data/lib/byebug/commands/enable.rb +9 -3
  24. data/lib/byebug/commands/enable/breakpoints.rb +13 -11
  25. data/lib/byebug/commands/enable/display.rb +13 -11
  26. data/lib/byebug/commands/finish.rb +23 -14
  27. data/lib/byebug/commands/frame.rb +21 -18
  28. data/lib/byebug/commands/help.rb +39 -16
  29. data/lib/byebug/commands/history.rb +16 -10
  30. data/lib/byebug/commands/info.rb +8 -5
  31. data/lib/byebug/commands/info/breakpoints.rb +16 -14
  32. data/lib/byebug/commands/info/display.rb +18 -18
  33. data/lib/byebug/commands/info/file.rb +22 -22
  34. data/lib/byebug/commands/info/line.rb +13 -11
  35. data/lib/byebug/commands/info/program.rb +13 -17
  36. data/lib/byebug/commands/interrupt.rb +13 -11
  37. data/lib/byebug/commands/irb.rb +16 -10
  38. data/lib/byebug/commands/kill.rb +19 -13
  39. data/lib/byebug/commands/list.rb +35 -24
  40. data/lib/byebug/commands/method.rb +25 -15
  41. data/lib/byebug/commands/next.rb +15 -13
  42. data/lib/byebug/commands/pry.rb +18 -11
  43. data/lib/byebug/commands/ps.rb +21 -23
  44. data/lib/byebug/commands/quit.rb +17 -11
  45. data/lib/byebug/commands/restart.rb +28 -24
  46. data/lib/byebug/commands/save.rb +23 -15
  47. data/lib/byebug/commands/set.rb +26 -19
  48. data/lib/byebug/commands/show.rb +20 -14
  49. data/lib/byebug/commands/source.rb +15 -14
  50. data/lib/byebug/commands/step.rb +15 -13
  51. data/lib/byebug/commands/thread.rb +8 -4
  52. data/lib/byebug/commands/thread/current.rb +11 -11
  53. data/lib/byebug/commands/thread/list.rb +14 -14
  54. data/lib/byebug/commands/thread/resume.rb +14 -14
  55. data/lib/byebug/commands/thread/stop.rb +14 -14
  56. data/lib/byebug/commands/thread/switch.rb +15 -14
  57. data/lib/byebug/commands/tracevar.rb +20 -16
  58. data/lib/byebug/commands/undisplay.rb +22 -18
  59. data/lib/byebug/commands/untracevar.rb +13 -11
  60. data/lib/byebug/commands/up.rb +18 -14
  61. data/lib/byebug/commands/var.rb +10 -3
  62. data/lib/byebug/commands/var/all.rb +15 -13
  63. data/lib/byebug/commands/var/args.rb +37 -0
  64. data/lib/byebug/commands/var/const.rb +25 -14
  65. data/lib/byebug/commands/var/global.rb +13 -11
  66. data/lib/byebug/commands/var/instance.rb +13 -11
  67. data/lib/byebug/commands/var/local.rb +13 -11
  68. data/lib/byebug/commands/where.rb +15 -11
  69. data/lib/byebug/context.rb +71 -73
  70. data/lib/byebug/core.rb +45 -26
  71. data/lib/byebug/errors.rb +27 -0
  72. data/lib/byebug/frame.rb +181 -0
  73. data/lib/byebug/helpers/eval.rb +67 -26
  74. data/lib/byebug/helpers/file.rb +18 -3
  75. data/lib/byebug/helpers/frame.rb +36 -39
  76. data/lib/byebug/helpers/parse.rb +15 -13
  77. data/lib/byebug/helpers/path.rb +21 -0
  78. data/lib/byebug/helpers/reflection.rb +17 -0
  79. data/lib/byebug/helpers/thread.rb +20 -14
  80. data/lib/byebug/helpers/toggle.rb +10 -5
  81. data/lib/byebug/helpers/var.rb +36 -15
  82. data/lib/byebug/interface.rb +27 -9
  83. data/lib/byebug/option_setter.rb +93 -0
  84. data/lib/byebug/printers/base.rb +3 -0
  85. data/lib/byebug/printers/plain.rb +4 -14
  86. data/lib/byebug/printers/texts/base.yml +2 -7
  87. data/lib/byebug/processors/command_processor.rb +101 -102
  88. data/lib/byebug/processors/control_processor.rb +20 -0
  89. data/lib/byebug/processors/post_mortem_processor.rb +16 -0
  90. data/lib/byebug/processors/script_processor.rb +49 -0
  91. data/lib/byebug/remote.rb +13 -7
  92. data/lib/byebug/runner.rb +39 -65
  93. data/lib/byebug/setting.rb +4 -1
  94. data/lib/byebug/settings/post_mortem.rb +0 -16
  95. data/lib/byebug/settings/savefile.rb +1 -4
  96. data/lib/byebug/subcommands.rb +27 -29
  97. data/lib/byebug/version.rb +4 -1
  98. metadata +14 -29
  99. data/lib/byebug/commands/eval.rb +0 -43
  100. data/lib/byebug/commands/info/args.rb +0 -39
  101. data/lib/byebug/commands/info/catch.rb +0 -39
  102. data/lib/byebug/commands/pp.rb +0 -41
  103. data/lib/byebug/commands/putl.rb +0 -43
  104. data/lib/byebug/processor.rb +0 -43
  105. data/lib/byebug/processors/control_command_processor.rb +0 -48
  106. data/lib/byebug/settings/verbose.rb +0 -20
  107. data/lib/byebug/state.rb +0 -12
  108. data/lib/byebug/states/control_state.rb +0 -26
  109. data/lib/byebug/states/regular_state.rb +0 -187
  110. data/lib/byebug/subcommand_list.rb +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96c7056e0b0872cdba9ffbc43941b6c804ee5db8
4
- data.tar.gz: c06eaaf13304aca7e289301fa61a7c0735f16647
3
+ metadata.gz: f0c3c3868ab03af89e252040738d248a93ee7fd5
4
+ data.tar.gz: 86c48afc3df76c6ad06f71e4f187cf7ebfb4d753
5
5
  SHA512:
6
- metadata.gz: 1fbf5703563d4b88ec8b5b843704a51b78d4f47f5f9e6735942fc1a75c881f440ff4569220e0c6c4f101bda57e1ec16f3089cf26fa3b068c32b97246ee60fd7e
7
- data.tar.gz: 0ddec536c7c8ae53485105eaf226946d1fcc3510cd1b0a3220f446d18fbbe2433068de2e922ce44192dc5c559ad5fb74d9a76264327f273be3f127b6f32201f0
6
+ metadata.gz: f1afe8ff550a182da17c136b3a49030f8370974e3c9b5e818da6f8c5d3c6e4fbe78731ee1840d848e7fbac0baa0b87ea031df44f4c316f69c6ac162bcd523187
7
+ data.tar.gz: 4c1abe7a5407b9483ebdc7f7c14ac2f142434b699566a06127759593917b466b8986e4cff3b583206a5bd72ac56d9fc38c1dff6ff4b9421ca246885b251f7d74
@@ -1,4 +1,29 @@
1
- ## 5.0.0
1
+ ## 6.0.0 - 2015-08-17
2
+ ### Removed
3
+ * `autoeval` setting. I haven't heard of anyone setting it to false.
4
+ * `pp`, `putl`, `eval`. People just want to evaluate Ruby code, so the less
5
+ magic the better. Most of the people probably were not aware that `byebug`
6
+ was overriding stuff like `pp` or `eval`. Only keeping `ps` as the single
7
+ "enhanced evaluation" command.
8
+ * `verbose` setting.
9
+ * `info catch` command. Use `catch` without arguments instead.
10
+ * `R` command alias for `restart`.
11
+
12
+ ### Changed
13
+ * `info args` is now `var args`.
14
+ * `interrupt` is now aliased to `int`, not to `i`.
15
+ * API to define custom commands and subcommands (see the Command class).
16
+
17
+ ### Fixed
18
+ * [#140](https://github.com/deivid-rodriguez/byebug/issues/140). `help` command
19
+ not showing the list of available commands and their descriptions.
20
+ * [#147](https://github.com/deivid-rodriguez/byebug/issues/147). Setting
21
+ breakpoints at symlinked files.
22
+
23
+ ### Added
24
+ * API to define custom command processors (see the CommandProcessor class).
25
+
26
+ ## 5.0.0 - 2015-05-18
2
27
  ### Fixed
3
28
  * [#136](https://github.com/deivid-rodriguez/byebug/issues/136). `frame`
4
29
  command not working with negative numbers (thanks @ark6).
@@ -1,30 +1,52 @@
1
1
  ## Getting started
2
2
 
3
- The following steps should help you getting started:
3
+ ### Development dependencies
4
4
 
5
- * `Byebug` depends on the TracePoint API provided by `ruby-core`. This is a
5
+ * `Byebug` depends on Ruby's TracePoint API provided by `ruby-core`. This is a
6
6
  young API and a lot of bugs have been recently corrected, so make sure you
7
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.
8
+
9
+ * The recommended tool to manage development dependencies is `bundler`. Run
10
+ `gem install bundler` to install it.
11
+
12
+ * Running `bundle install` inside a local clone of `byebug` will get development
13
+ dependencies installed.
14
+
15
+
16
+ ### Running the test suite
17
+
16
18
  * Make sure you compile the C-extension using `bundle exec rake compile`.
17
19
  Otherwise you won't be able to use `byebug`.
20
+
18
21
  * Run the test suite using the default rake task (`bundle exec rake`). This
19
22
  task is composed of 2 subtasks: `bundle exec rake compile` && `bundle exec rake
20
23
  test`.
21
24
 
22
- After having done this, just read the code and improve it! Your contribution is
23
- appreciated a lot!
25
+ * If you want to run specific tests, use the provided test runner, like so:
26
+
27
+ - Specific test files. For example,
28
+ `script/minitest_runner test/commands/break_test.rb`
29
+
30
+ - Specific test classes. For example,
31
+ `script/minitest_runner Byebug::BreakAtLinesTestCase`
32
+
33
+ - Specific tests. For example,
34
+ `script/minitest_runner test_catch_removes_specific_catchpoint`
35
+
36
+ - You can combine any of them and you will get the union of all filters. For
37
+ example: `script/minitest_runner Byebug::BreakAtLinesTestCase
38
+ test_catch_removes_specific_catchpoint`
39
+
40
+
41
+ ### Code style
42
+
43
+ * Byebug uses [overcommit][] to enforce code style. Install the git hooks using
44
+ `bundle exec overcommit --install`. They will review your changes before they
45
+ are committed, checking they are consistent with the project's code style.
24
46
 
25
47
  [overcommit]: https://github.com/brigade/overcommit/
26
48
 
27
- ## Byebug as a C-extension
49
+ ### Byebug as a C-extension
28
50
 
29
51
  Byebug is a gem developed as a C-extension. The debugger internal's
30
52
  functionality is implemented in C (the interaction with the TracePoint API).
data/GUIDE.md CHANGED
@@ -157,10 +157,9 @@ Really quit? (y/n)
157
157
  y
158
158
  ```
159
159
 
160
- So far, so good. As you can see from the above to get out of `byebug`, one
161
- can issue a `quit` command (`q` and `exit` are just as good). If you want to
162
- quit without being prompted, suffix the command with an exclamation mark, e.g.,
163
- `q!`.
160
+ So far, so good. As you can see from the above, to get out of `byebug`, one
161
+ can issue a `quit` command (or the abbreviation `q`). If you want to quit
162
+ without being prompted, suffix the command with an exclamation mark, e.g., `q!`.
164
163
 
165
164
 
166
165
  ### Second Sample Session: Delving Deeper
@@ -206,54 +205,194 @@ $ byebug path/to/hanoi.rb
206
205
  9: hanoi(n - 1, c, b, a) if n - 1 > 0
207
206
  10: end
208
207
  (byebug) private_methods
209
- [:public, :private, :include, :using, :define_method, :default_src_encoding, ...
208
+ public
209
+ private
210
+ include
211
+ using
212
+ define_method
213
+ default_src_encoding
214
+ DelegateClass
215
+ Digest
216
+ timeout
217
+ initialize_copy
218
+ initialize_dup
219
+ initialize_clone
220
+ sprintf
221
+ format
222
+ Integer
223
+ Float
224
+ String
225
+ Array
226
+ Hash
227
+ warn
228
+ raise
229
+ fail
230
+ global_variables
231
+ __method__
232
+ __callee__
233
+ __dir__
234
+ eval
235
+ local_variables
236
+ iterator?
237
+ block_given?
238
+ catch
239
+ throw
240
+ loop
241
+ respond_to_missing?
242
+ trace_var
243
+ untrace_var
244
+ at_exit
245
+ syscall
246
+ open
247
+ printf
248
+ print
249
+ putc
250
+ puts
251
+ gets
252
+ readline
253
+ select
254
+ readlines
255
+ `
256
+ p
257
+ test
258
+ srand
259
+ rand
260
+ trap
261
+ load
262
+ require
263
+ require_relative
264
+ autoload
265
+ autoload?
266
+ proc
267
+ lambda
268
+ binding
269
+ caller
270
+ caller_locations
271
+ exec
272
+ fork
273
+ exit!
274
+ system
275
+ spawn
276
+ sleep
277
+ exit
278
+ abort
279
+ Rational
280
+ Complex
281
+ set_trace_func
282
+ gem_original_require
283
+ Pathname
284
+ pp
285
+ y
286
+ URI
287
+ rubygems_require
288
+ initialize
289
+ singleton_method_added
290
+ singleton_method_removed
291
+ singleton_method_undefined
292
+ method_missing
293
+ (byebug) private_methods.member?(:hanoi)
294
+ false
210
295
  ```
211
296
 
212
297
  `private_methods` is not a byebug command but a Ruby feature. By default, when
213
298
  `byebug` doesn't understand a command, it will evaluate it as if it was a Ruby
214
- command. If you don't want this behaviour, you can use `set noautoeval` or
215
- even drop it in your `.byebugrc` file if you want that behaviour permanently.
216
- The output of `private_methods`, thought, is unwieldy for our purpose: check
217
- whether `hanoi` method is in the list. Fortunately, byebug has nice formatting
218
- features: we can sort the output and put it into columns list using the print
219
- command `ps`. It also has a `width` setting that let's us adapt the width of
220
- the output so that it nicely fits our screen.
299
+ command. You can use any Ruby to inspect your program's state at the place it
300
+ is stopped. Additional, `byebug` provides a specific evaluation command, `ps`
301
+ that automatically enhances the evaluated results a bit. For example, it
302
+ automatically sorts arrays.
303
+
304
+ ```
305
+ [:Array,
306
+ :Complex,
307
+ :DelegateClass,
308
+ :Digest,
309
+ :Float,
310
+ :Hash,
311
+ :Integer,
312
+ :Pathname,
313
+ :Rational,
314
+ :String,
315
+ :URI,
316
+ :__callee__,
317
+ :__dir__,
318
+ :__method__,
319
+ :`,
320
+ :abort,
321
+ :at_exit,
322
+ :autoload,
323
+ :autoload?,
324
+ :binding,
325
+ :block_given?,
326
+ :caller,
327
+ :caller_locations,
328
+ :catch,
329
+ :default_src_encoding,
330
+ :define_method,
331
+ :eval,
332
+ :exec,
333
+ :exit,
334
+ :exit!,
335
+ :fail,
336
+ :fork,
337
+ :format,
338
+ :gem_original_require,
339
+ :gets,
340
+ :global_variables,
341
+ :include,
342
+ :initialize,
343
+ :initialize_clone,
344
+ :initialize_copy,
345
+ :initialize_dup,
346
+ :iterator?,
347
+ :lambda,
348
+ :load,
349
+ :local_variables,
350
+ :loop,
351
+ :method_missing,
352
+ :open,
353
+ :p,
354
+ :pp,
355
+ :print,
356
+ :printf,
357
+ :private,
358
+ :proc,
359
+ :public,
360
+ :putc,
361
+ :puts,
362
+ :raise,
363
+ :rand,
364
+ :readline,
365
+ :readlines,
366
+ :require,
367
+ :require_relative,
368
+ :respond_to_missing?,
369
+ :rubygems_require,
370
+ :select,
371
+ :set_trace_func,
372
+ :singleton_method_added,
373
+ :singleton_method_removed,
374
+ :singleton_method_undefined,
375
+ :sleep,
376
+ :spawn,
377
+ :sprintf,
378
+ :srand,
379
+ :syscall,
380
+ :system,
381
+ :test,
382
+ :throw,
383
+ :timeout,
384
+ :trace_var,
385
+ :trap,
386
+ :untrace_var,
387
+ :using,
388
+ :warn,
389
+ :y]
221
390
 
222
- ```bash
223
- (byebug) set width 80
224
- Maximum width of byebug's output is 80
225
- (byebug) ps private_methods
226
- Array default_src_encoding open sleep
227
- Complex define_method p spawn
228
- Digest eval pp sprintf
229
- Float exec print srand
230
- Hash exit printf syscall
231
- Integer exit! private system
232
- Pathname fail proc test
233
- Rational fork public throw
234
- String format putc timeout
235
- URI gem_original_require puts trace_var
236
- __callee__ gets raise trap
237
- __dir__ global_variables rand untrace_var
238
- __method__ include readline using
239
- ` initialize readlines warn
240
- abort initialize_clone require y
241
- at_exit initialize_copy require_relative
242
- autoload initialize_dup respond_to_missing?
243
- autoload? iterator? rubygems_require
244
- binding lambda select
245
- block_given? load set_trace_func
246
- caller local_variables singleton_method_added
247
- caller_locations loop singleton_method_removed
248
- catch method_missing singleton_method_undefined
249
- (byebug)
250
391
  ```
251
392
 
252
393
  Now let's see what happens after stepping:
253
394
 
254
395
  ```bash
255
- (byebug) private_methods.member?(:hanoi)
256
- false
257
396
  (byebug) step
258
397
 
259
398
  [5, 14] in /path/to/hanoi.rb
@@ -1146,7 +1285,7 @@ letter option name, such as `-h`. The list of options is detailed below:
1146
1285
 
1147
1286
  #### -h | --help
1148
1287
 
1149
- It causes `byebug` to print some basic help and exit
1288
+ It causes `byebug` to print some basic help and exit.
1150
1289
 
1151
1290
 
1152
1291
  #### -v | --version
@@ -1233,12 +1372,14 @@ You can also request the execution of a command file with the `source` command
1233
1372
 
1234
1373
  ### Quitting byebug
1235
1374
 
1236
- To exit `byebug`, use the `quit` command (abbreviated `q` and aliased `exit`).
1237
- Normally if you are in an interactive session, this command will prompt to ask
1238
- if you really want to quit. If you don't want any questions asked, enter
1239
- `quit unconditionally` (abbreviated `q!`). Another way to terminate byebug is to
1240
- use the `kill` command. This does the more forceful `kill -9`. It can be used in
1241
- cases where `quit` doesn't work (I haven't seen those yet).
1375
+ To exit `byebug`, use the `quit` command (abbreviated to `q`). Normally, if you
1376
+ are in an interactive session, this command will prompt to ask if you really
1377
+ want to quit. If you want to quit without being prompted, enter `quit
1378
+ unconditionally` (abbreviated to `q!`).
1379
+
1380
+ Another way to terminate byebug is to use the `kill` command. This does the
1381
+ more forceful `kill -9`. It can be used in cases where `quit` doesn't work (I
1382
+ haven't seen those yet).
1242
1383
 
1243
1384
 
1244
1385
  ### Calling byebug from inside your program
@@ -1335,8 +1476,8 @@ Multiple commands can be put on a line by separating each with a semicolon `;`.
1335
1476
  You can disable the meaning of a semicolon to separate commands by escaping it
1336
1477
  with a backslash.
1337
1478
 
1338
- For example, if you have [autoeval]() set, which is the default, you might want
1339
- to enter the following code to compute the 5th Fibonacci number.
1479
+ For example, you might want to enter the following code to compute the 5th
1480
+ Fibonacci number.
1340
1481
 
1341
1482
  ```bash
1342
1483
  (byebug) fib1=0; fib2=1; 5.times {|temp| temp=fib1; fib1=fib2; fib2 += temp }
@@ -1389,26 +1530,61 @@ short list of named classes of commands
1389
1530
 
1390
1531
  ```bash
1391
1532
  (byebug) help
1392
- Type "help <command-name>" for help on a specific command
1393
-
1394
- Available commands:
1395
- backtrace delete enable help method ps save step where
1396
- break disable eval info next putl set trace catch
1397
- display exit irb p quit show undisplay condition down
1398
- finish kill pp skip up continue edit frame list
1399
- pry restart source var
1533
+
1534
+ break -- Sets breakpoints in the source code
1535
+ catch -- Handles exception catchpoints
1536
+ condition -- Sets conditions on breakpoints
1537
+ continue -- Runs until program ends, hits a breakpoint or reaches a line
1538
+ delete -- Deletes breakpoints
1539
+ disable -- Disables breakpoints or displays
1540
+ display -- Evaluates expressions every time the debugger stops
1541
+ down -- Moves to a lower frame in the stack trace
1542
+ edit -- Edits source files
1543
+ enable -- Enables breakpoints or displays
1544
+ finish -- Runs the program until frame returns
1545
+ frame -- Moves to a frame in the call stack
1546
+ help -- Helps you using byebug
1547
+ history -- Shows byebug's history of commands
1548
+ info -- Shows several informations about the program being debugged
1549
+ interrupt -- Interrupts the program
1550
+ irb -- Starts an IRB session
1551
+ kill -- Sends a signal to the current process
1552
+ list -- Lists lines of source code
1553
+ method -- Shows methods of an object, class or module
1554
+ next -- Runs one or more lines of code
1555
+ pry -- Starts a Pry session
1556
+ ps -- Evaluates an expression and prettyprints & sort the result
1557
+ quit -- Exits byebug
1558
+ restart -- Restarts the debugged program
1559
+ save -- Saves current byebug session to a file
1560
+ set -- Modifies byebug settings
1561
+ show -- Shows byebug settings
1562
+ source -- Restores a previously saved byebug session
1563
+ step -- Steps into blocks or methods one or more times
1564
+ thread -- Commands to manipulate threads
1565
+ tracevar -- Enables tracing of a global variable
1566
+ undisplay -- Stops displaying all or some expressions when program stops
1567
+ untracevar -- Stops tracing a global variable
1568
+ up -- Moves to a higher frame in the stack trace
1569
+ var -- Shows variables and its values
1570
+ where -- Displays the backtrace
1571
+
1400
1572
  ```
1401
1573
 
1402
- With a command name as `help` argument, `byebug` displays short information on how to
1403
- use that command.
1574
+ With a command name, `help` displays information on how to use the command.
1404
1575
 
1405
1576
  ```bash
1406
1577
  (byebug) help list
1407
- l[ist] list forward
1408
- l[ist] - list backward
1409
- l[ist] = list current line
1410
- l[ist] nn-mm list given lines
1411
- * NOTE - to turn on autolist, use 'set autolist'
1578
+
1579
+ l[ist][[-=]][ nn-mm]
1580
+
1581
+ Lists lines of source code
1582
+
1583
+ Lists lines forward from current line or from the place where code was
1584
+ last listed. If "list-" is specified, lists backwards instead. If
1585
+ "list=" is specified, lists from current line regardless of where code
1586
+ was last listed. A line range can also be specified to list specific
1587
+ sections of code.
1412
1588
  (byebug)
1413
1589
  ```
1414
1590
 
@@ -1461,10 +1637,10 @@ With an integer argument, list info on that breakpoint.
1461
1637
 
1462
1638
  #### Quit
1463
1639
 
1464
- To exit `byebug`, type `quit` (abbreviated `q` and aliased `exit`). Normally if
1465
- you are in an interactive session, this command will prompt you to confirm you
1466
- really want to quit. If you don't want any questions asked, enter
1467
- `quit unconditionally` (abbreviated `q!`).
1640
+ To exit `byebug`, type `quit` (abbreviated to `q`). Normally, if you are in an
1641
+ interactive session, this command will prompt you to confirm you really want to
1642
+ quit. If you want to quit without being prompted, enter `quit unconditionally`
1643
+ (abbreviated to `q!`).
1468
1644
 
1469
1645
  #### Restart
1470
1646
 
@@ -1529,135 +1705,17 @@ later. To do that, use `disable display` or `enable display` followed by the
1529
1705
  expression number.
1530
1706
 
1531
1707
 
1532
- ### Print Commands
1708
+ ### Evaluation of expressions: display
1533
1709
 
1534
- One way to examine and change data in your script is with the `eval` command
1535
- (abbreviated `p`). `byebug` by default evaluates any input that is not
1536
- recognized as a command, so in most situations `eval` is not necessary and
1537
- `byebug` will work like a REPL. One case where it's necessary could be when
1538
- trying to print a variable called `n`. In this case, you have no choice because
1710
+ To examine and change data in your script you can just evaluate any Ruby code
1711
+ from `byebug`'s prompt. Any input that is not recognized as a command will be
1712
+ evaluated, so `byebug` essentially works as a REPL. If you want to evaluate
1713
+ something that conflicts with a `byebug` command, just use Ruby's `eval`. For
1714
+ example, if you want to print a variable called `n `, type `eval n` because
1539
1715
  typing just `n` will execute `byebug`'s command `next`.
1540
1716
 
1541
- A similar command to `eval|p` is `pp` which tries to pretty print the result.
1542
-
1543
- If the value you want to print is an array, sometimes a columnized list looks
1544
- nicer. Use `putl` for that. Notice however that entries are sorted to run down
1545
- first rather than across. If the value is not an array `putl` will just call
1546
- pretty-print.
1547
-
1548
- Sometimes you may want to print the array not only columnized, but sorted as
1549
- well. The list of byebug help commands appears this way, and so does the output
1550
- of the `method` commands. Use `ps` for that. If the value is not an array `ps`
1551
- will just call pretty-print.
1552
-
1553
- ```bash
1554
- (byebug) Kernel.instance_methods
1555
- [:nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, :clone,
1556
- :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze,
1557
- :frozen?, :to_s, :inspect, :methods, :singleton_methods, :protected_methods,
1558
- :private_methods, :public_methods, :instance_variables, :instance_variable_get,
1559
- :instance_variable_set, :instance_variable_defined?, :remove_instance_variable,
1560
- :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?,
1561
- :extend, :display, :method, :public_method, :define_singleton_method,
1562
- :object_id, :to_enum, :enum_for, :gem, :pretty_inspect, :byebug]
1563
- (byebug) p Kernel.instance_methods
1564
- [:nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, :clone,
1565
- :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze,
1566
- :frozen?, :to_s, :inspect, :methods, :singleton_methods, :protected_methods,
1567
- :private_methods, :public_methods, :instance_variables, :instance_variable_get,
1568
- :instance_variable_set, :instance_variable_defined?, :remove_instance_variable,
1569
- :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?,
1570
- :extend, :display, :method, :public_method, :define_singleton_method,
1571
- :object_id, :to_enum, :enum_for, :gem, :pretty_inspect, :byebug]
1572
- (byebug) pp Kernel.instance_methods
1573
- [:nil?,
1574
- :===,
1575
- :=~,
1576
- :!~,
1577
- :eql?,
1578
- :hash,
1579
- :<=>,
1580
- :class,
1581
- :singleton_class,
1582
- :clone,
1583
- :dup,
1584
- :taint,
1585
- :tainted?,
1586
- :untaint,
1587
- :untrust,
1588
- :untrusted?,
1589
- :trust,
1590
- :freeze,
1591
- :frozen?,
1592
- :to_s,
1593
- :inspect,
1594
- :methods,
1595
- :singleton_methods,
1596
- :protected_methods,
1597
- :private_methods,
1598
- :public_methods,
1599
- :instance_variables,
1600
- :instance_variable_get,
1601
- :instance_variable_set,
1602
- :instance_variable_defined?,
1603
- :remove_instance_variable,
1604
- :instance_of?,
1605
- :kind_of?,
1606
- :is_a?,
1607
- :tap,
1608
- :send,
1609
- :public_send,
1610
- :respond_to?,
1611
- :extend,
1612
- :display,
1613
- :method,
1614
- :public_method,
1615
- :define_singleton_method,
1616
- :object_id,
1617
- :to_enum,
1618
- :enum_for,
1619
- :gem,
1620
- :pretty_inspect,
1621
- :byebug]
1622
- (byebug) putl Kernel.instance_methods
1623
- nil? trust is_a?
1624
- === freeze tap
1625
- =~ frozen? send
1626
- !~ to_s public_send
1627
- eql? inspect respond_to?
1628
- hash methods extend
1629
- <=> singleton_methods display
1630
- class protected_methods method
1631
- singleton_class private_methods public_method
1632
- clone public_methods singleton_method
1633
- dup instance_variables define_singleton_method
1634
- itself instance_variable_get object_id
1635
- taint instance_variable_set to_enum
1636
- tainted? instance_variable_defined? enum_for
1637
- untaint remove_instance_variable gem
1638
- untrust instance_of? pretty_inspect
1639
- untrusted? kind_of?
1640
- (byebug) ps Kernel.instance_methods
1641
- !~ instance_of? public_send
1642
- <=> instance_variable_defined? remove_instance_variable
1643
- === instance_variable_get respond_to?
1644
- =~ instance_variable_set send
1645
- class instance_variables singleton_class
1646
- clone is_a? singleton_method
1647
- define_singleton_method itself singleton_methods
1648
- display kind_of? taint
1649
- dup method tainted?
1650
- enum_for methods tap
1651
- eql? nil? to_enum
1652
- extend object_id to_s
1653
- freeze pretty_inspect trust
1654
- frozen? private_methods untaint
1655
- gem protected_methods untrust
1656
- hash public_method untrusted?
1657
- ```
1658
-
1659
1717
  Finally, if you need more advanced functionality from REPL's, you can enter
1660
- `irb` or `pry` using `irb` or `pry` commands. The bindings environment will be
1718
+ `irb` or `pry` using `irb` or `pry` commands. The binding's environment will be
1661
1719
  set to the current state in the program. When you leave the repl and go back to
1662
1720
  `byebug`'s command prompt we show the file, line and text position of the
1663
1721
  program. If you issue a `list` without location information, the default
@@ -1698,7 +1756,7 @@ def triangle(n)
1698
1756
  (byebug)
1699
1757
  ```
1700
1758
 
1701
- ### Printing variables
1759
+ ### Printing variables: var
1702
1760
 
1703
1761
  Byebug can print many different information about variables. Such as
1704
1762
  * `var const <object>`. Show the constants of `<object>`. This is basically
@@ -1712,8 +1770,8 @@ basically listing `<object>.instance_variables`.
1712
1770
  * `method instance <object>`. Show methods of `<object>`. Basically this is the
1713
1771
  same as running `ps <object>.instance_methods(false)`.
1714
1772
  * `method <class-or-module>`. Show methods of the class or module
1715
- `<class-or-module>`. Basically this is the same as running
1716
- `ps <class-or-module>.methods`.
1773
+ `<class-or-module>`. Basically this is the same as running `ps
1774
+ <class-or-module>.methods`.
1717
1775
 
1718
1776
  ### Examining Program Source Files: list
1719
1777