byebug 5.0.0 → 6.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.
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