debug 1.0.0.beta1 → 1.0.0.beta6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99f9de5fc37782d330788a745b34666e07d37c9e168eb7b0361d3b51b8247b56
4
- data.tar.gz: 3e6941a9b066ec0965e576b87c8e0cc0bc787571fa5331ca962d906611c368e5
3
+ metadata.gz: fffc4898e989a76e77a9076407cc1ba6d31b13a531e739c8972afe71bf049285
4
+ data.tar.gz: 190c18099e1078e00786dde75819b0b793647cd9508b0577e88d93d6a06c045c
5
5
  SHA512:
6
- metadata.gz: a279de53e047d52c18c0b1c726da4bbf6efbd116f2957f3fa1c106fec929bb0dc903274d9fce8bb03a787f7ca31edd09d54a09b572027485c5a985205e518582
7
- data.tar.gz: 5c436bdfa54ab8d2ece8c07fdac31481f0a9e4922ac433e871c09dd0b161d812eaf7c417189e0e9582421d8405a5169ec826065930c3a7441fdd72953c2786de
6
+ metadata.gz: 647e6c227bded49c962b8d6934557a26930664f5f1ddd57fd596c6651b1c655c1c77e64d5cbba28d2125cdd8a27817e33dc94d465d01f6b43b7f0be61ee30a35
7
+ data.tar.gz: ceb4dbf7b9479dc54ff5af725e973985493650ca9aaebd16878c4669fa037ae2ee1ec9ddddf83eb25dd65dc2057d0419a74005ec5d74c98585d855eb918e53bb
@@ -0,0 +1,34 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ matrix:
22
+ ruby-version: ['2.6', '2.7', '3.0', 'head', 'debug']
23
+
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby-version }}
32
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
33
+ - name: Run tests
34
+ run: bundle exec rake
data/.gitignore CHANGED
@@ -6,4 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ *.bundle
9
10
  /Gemfile.lock
11
+ /lib/debug/debug.so
12
+ .ruby-version
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,336 @@
1
+ ## Set Up a Development Environment
2
+
3
+ 1. `$ git clone git@github.com:ruby/debug.git`
4
+ 2. `$ bundle install`
5
+ 3. `$ rake` - this will
6
+ - Compile the C extension locally (which can also be done solely with `rake compile`).
7
+ - Run tests.
8
+ - Re-generate `README.md`.
9
+
10
+ If you spot any problem, please open an issue.
11
+
12
+ ## Run Tests
13
+
14
+ ### Run all tests
15
+
16
+ ```bash
17
+ $ rake test
18
+ ```
19
+
20
+ ### Run specific test(s)
21
+
22
+
23
+ ```bash
24
+ $ ruby test/debug/bp_test.rb # run all tests in the specified file
25
+ $ ruby test/debug/bp_test.rb -h # to see all the test options
26
+ ```
27
+
28
+ ## Generate Tests
29
+ There is a test generator in `debug.rb` project to make it easier to write tests.
30
+ ### Quickstart
31
+ This section shows you how to create test file by test generator. For more advanced informations on creating tests, please take a look at [gentest options](#gentest-options). (You can also check by `$bin/gentest -h`)
32
+ #### 1. Create a target file for debuggee.
33
+ Let's say, we created `target.rb` which is located in top level directory of debugger.
34
+ ```ruby
35
+ module Foo
36
+ class Bar
37
+ def self.a
38
+ "hello"
39
+ end
40
+ end
41
+ Bar.a
42
+ bar = Bar.new
43
+ end
44
+ ```
45
+ #### 2. Run `gentest` as shown in the example below.
46
+ ```shell
47
+ $ bin/gentest target.rb
48
+ ```
49
+ #### 3. Debugger will be executed. You can type any debug commands.
50
+ ```shell
51
+ $ bin/gentest target.rb
52
+ [1, 9] in ~/workspace/debug/target.rb
53
+ => 1| module Foo
54
+ 2| class Bar
55
+ 3| def self.a
56
+ 4| "hello"
57
+ 5| end
58
+ 6| end
59
+ 7| Bar.a
60
+ 8| bar = Bar.new
61
+ 9| end
62
+ =>#0 <main> at ~/workspace/debug/target.rb:1
63
+ INTERNAL_INFO: {"location":"~/workspace/debug/target.rb:1","line":1}
64
+
65
+ (rdbg)s
66
+ s
67
+ [1, 9] in ~/workspace/debug/target.rb
68
+ 1| module Foo
69
+ => 2| class Bar
70
+ 3| def self.a
71
+ 4| "hello"
72
+ 5| end
73
+ 6| end
74
+ 7| Bar.a
75
+ 8| bar = Bar.new
76
+ 9| end
77
+ =>#0 <module:Foo> at ~/workspace/debug/target.rb:2
78
+ #1 <main> at ~/workspace/debug/target.rb:1
79
+ INTERNAL_INFO: {"location":"~/workspace/debug/target.rb:2","line":2}
80
+
81
+ (rdbg)n
82
+ n
83
+ [1, 9] in ~/workspace/debug/target.rb
84
+ 1| module Foo
85
+ 2| class Bar
86
+ => 3| def self.a
87
+ 4| "hello"
88
+ 5| end
89
+ 6| end
90
+ 7| Bar.a
91
+ 8| bar = Bar.new
92
+ 9| end
93
+ =>#0 <class:Bar> at ~/workspace/debug/target.rb:3
94
+ #1 <module:Foo> at ~/workspace/debug/target.rb:2
95
+ #2 <main> at ~/workspace/debug/target.rb:1
96
+ INTERNAL_INFO: {"location":"~/workspace/debug/target.rb:3","line":3}
97
+
98
+ (rdbg)b 7
99
+ b 7
100
+ INTERNAL_INFO: {"location":"~/workspace/debug/target.rb:3","line":3}
101
+
102
+ (rdbg)c
103
+ c
104
+ [2, 9] in ~/workspace/debug/target.rb
105
+ 2| class Bar
106
+ 3| def self.a
107
+ 4| "hello"
108
+ 5| end
109
+ 6| end
110
+ => 7| Bar.a
111
+ 8| bar = Bar.new
112
+ 9| end
113
+ =>#0 <module:Foo> at ~/workspace/debug/target.rb:7
114
+ #1 <main> at ~/workspace/debug/target.rb:1
115
+
116
+ Stop by #0 BP - Line /Users/naotto/workspace/debug/target.rb:7 (line)
117
+ INTERNAL_INFO: {"location":"~/workspace/debug/target.rb:7","line":7}
118
+
119
+ (rdbg)q!
120
+ q!
121
+ ```
122
+ #### 4. The test file will be created as `test/debug/foo_test.rb`.
123
+ If the file already exists, **only method** will be added to it.
124
+ ```ruby
125
+ # frozen_string_literal: true
126
+
127
+ require_relative '../support/test_case'
128
+
129
+ module DEBUGGER__
130
+ class FooTest < TestCase
131
+ def program
132
+ <<~RUBY
133
+ 1| module Foo
134
+ 1| class Bar
135
+ 2| def self.a
136
+ 3| "hello"
137
+ 4| end
138
+ 5| end
139
+ 6| Bar.a
140
+ 7| bar = Bar.new
141
+ 8| end
142
+ RUBY
143
+ end
144
+
145
+ def test_foo
146
+ debug_code(program) do
147
+ type 's'
148
+ assert_line_num 2
149
+ assert_line_text([
150
+ /[1, 9] in .*/,
151
+ / 1| module Foo/,
152
+ /=> 2| class Bar/,
153
+ / 3| def self.a/,
154
+ / 4| "hello"/,
155
+ / 5| end/,
156
+ / 6| end/,
157
+ / 7| Bar.a/,
158
+ / 8| bar = Bar.new/,
159
+ / 9| end/,
160
+ /=>#0 <module:Foo> at .*/,
161
+ / #1 <main> at .*/
162
+ ])
163
+ type 'n'
164
+ assert_line_num 3
165
+ assert_line_text([
166
+ /[1, 9] in .*/,
167
+ / 1| module Foo/,
168
+ / 2| class Bar/,
169
+ /=> 3| def self.a/,
170
+ / 4| "hello"/,
171
+ / 5| end/,
172
+ / 6| end/,
173
+ / 7| Bar.a/,
174
+ / 8| bar = Bar.new/,
175
+ / 9| end/,
176
+ /=>#0 <class:Bar> at .*/,
177
+ / #1 <module:Foo> at .*/,
178
+ / #2 <main> at .*/
179
+ ])
180
+ type 'b 7'
181
+ assert_line_text(//)
182
+ type 'c'
183
+ assert_line_num 7
184
+ assert_line_text([
185
+ /[2, 9] in .*/,
186
+ / 2| class Bar/,
187
+ / 3| def self.a/,
188
+ / 4| "hello"/,
189
+ / 5| end/,
190
+ / 6| end/,
191
+ /=> 7| Bar.a/,
192
+ / 8| bar = Bar.new/,
193
+ / 9| end/,
194
+ /=>#0 <module:Foo> at .*/,
195
+ / #1 <main> at .*/,
196
+ //,
197
+ /Stop by #0 BP - Line .*/
198
+ ])
199
+ type 'q!'
200
+ end
201
+ end
202
+ end
203
+ end
204
+ ```
205
+
206
+ #### gentest options
207
+ You can get more information about `gentest` here.
208
+
209
+ The default method name is `test_foo` and the class name is `FooTest`. The file name will be `[Lowercase letters with "Test" removed from the class name]_test.rb`.
210
+ ```shell
211
+ # run without any options(test method name will be `test_foo`, class name will be `FooTest`, file name will be `foo_test.rb`)
212
+ $ bin/gentest target.rb
213
+ # specify the class name(test method name will be `test_foo`, class name will be `StepTest`, file name will be `step_test.rb`)
214
+ $ bin/gentest target.rb -c StepTest
215
+ # specify the method name(test method name will be `test_step`, class name will be `FooTest`, file name will be `foo_test.rb`)
216
+ $ bin/gentest target.rb -m test_step
217
+ # specify class name and method name(test method name will be `test_step`, class name will be `StepTest`, file name will be `step_test.rb`.)
218
+ $ bin/gentest target.rb -c StepTest -m test_step
219
+ ```
220
+
221
+ ## To Update README
222
+
223
+ This project generates `README.md` from the template `misc/README.md.erb`
224
+
225
+ So **do not** directly update `README.md`. Instead, you should update the template's source and run
226
+
227
+ ```bash
228
+ $ rake
229
+ ```
230
+
231
+ to reflect the changes on `README.md`.
232
+
233
+
234
+ ### When to re-generate `README.md`
235
+
236
+ - After updating `misc/README.md.erb`.
237
+ - After updating `rdbg` executable's options.
238
+ - After updating comments of debugger's commands.
239
+
240
+ ## Manually Test Your Changes
241
+
242
+ You can manually test your changes with a simple Ruby script + a line of command. The following example will help you check:
243
+
244
+ - Breakpoint insertion.
245
+ - Resume from the breakpoint.
246
+ - Backtrace display.
247
+ - Information (local variables, ivars..etc.) display.
248
+ - Debugger exit.
249
+
250
+
251
+ ### Script
252
+
253
+ ```ruby
254
+ # target.rb
255
+ class Foo
256
+ def first_call
257
+ second_call(20)
258
+ end
259
+
260
+ def second_call(num)
261
+ third_call_with_block do |ten|
262
+ forth_call(num, ten)
263
+ end
264
+ end
265
+
266
+ def third_call_with_block(&block)
267
+ @ivar1 = 10; @ivar2 = 20
268
+
269
+ yield(10)
270
+ end
271
+
272
+ def forth_call(num1, num2)
273
+ num1 + num2
274
+ end
275
+ end
276
+
277
+ Foo.new.first_call
278
+ ```
279
+
280
+ ### Command
281
+
282
+ ```
283
+ $ exe/rdbg -e 'b 20;; c ;; bt ;; info ;; q!' -e c target.rb
284
+ ```
285
+
286
+ ### Expect Result
287
+
288
+ ```
289
+ ❯ exe/rdbg -e 'b 20;; c ;; bt ;; info ;; q!' -e c target.rb
290
+ [1, 10] in target.rb
291
+ => 1| class Foo
292
+ 2| def first_call
293
+ 3| second_call(20)
294
+ 4| end
295
+ 5|
296
+ 6| def second_call(num)
297
+ 7| third_call_with_block do |ten|
298
+ 8| forth_call(num, ten)
299
+ 9| end
300
+ 10| end
301
+ =>#0 <main> at target.rb:1
302
+ (rdbg:init) b 20
303
+ #1 line bp /PATH_TO_PROJECT/debug/target.rb:20 (return)
304
+ (rdbg:init) c
305
+ [15, 23] in target.rb
306
+ 15| yield(10)
307
+ 16| end
308
+ 17|
309
+ 18| def forth_call(num1, num2)
310
+ 19| num1 + num2
311
+ => 20| end
312
+ 21| end
313
+ 22|
314
+ 23| Foo.new.first_call
315
+ =>#0 Foo#forth_call(num1=20, num2=10) at target.rb:20 #=> 30
316
+ #1 block{|ten=10|} in second_call at target.rb:8
317
+ # and 4 frames (use `bt' command for all frames)
318
+
319
+ Stop by #1 line bp /PATH_TO_PROJECT/debug/target.rb:20 (return)
320
+ (rdbg:init) bt
321
+ =>#0 Foo#forth_call(num1=20, num2=10) at target.rb:20 #=> 30
322
+ #1 block{|ten=10|} in second_call at target.rb:8
323
+ #2 Foo#third_call_with_block(block=#<Proc:0x00007f8bc32f0c28 target.rb:7>) at target.rb:15
324
+ #3 Foo#second_call(num=20) at target.rb:7
325
+ #4 first_call at target.rb:3
326
+ #5 <main> at target.rb:23
327
+ (rdbg:init) info
328
+ =>#0 Foo#forth_call(num1=20, num2=10) at target.rb:20 #=> 30
329
+ %self => #<Foo:0x00007f8bc32f0ed0>
330
+ %return => 30
331
+ num1 => 20
332
+ num2 => 10
333
+ @ivar1 => 10
334
+ @ivar2 => 20
335
+ (rdbg:init) q!
336
+ ```
data/Gemfile CHANGED
@@ -2,6 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem "rake", "~> 12.0"
5
+ gem "rake"
6
6
  gem "rake-compiler"
7
- gem "minitest", "~> 5.0"
7
+ gem "test-unit", "~> 3.0"
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Ruby](https://github.com/ruby/debug/actions/workflows/ruby.yml/badge.svg?branch=master)](https://github.com/ruby/debug/actions/workflows/ruby.yml?query=branch%3Amaster)
2
+
1
3
  # debug.rb
2
4
 
3
5
  This library provides debugging functionality to Ruby.
@@ -9,7 +11,7 @@ New debug.rb has several advantages:
9
11
  * Remote debugging: Support remote debugging natively.
10
12
  * UNIX domain socket
11
13
  * TCP/IP
12
- * VSCode/DAP integration (TODO)
14
+ * VSCode/DAP integration ([VSCode rdbg Ruby Debugger - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=KoichiSasada.vscode-rdbg))
13
15
  * Extensible: application can introduce debugging support with several methods
14
16
  * By `rdbg` command
15
17
  * By loading libraries with `-r` command line option
@@ -27,6 +29,16 @@ $ gem install debug --pre
27
29
 
28
30
  or specify `-Ipath/to/debug/lib` in `RUBYOPT` or each ruby command-line option, especially for debug this gem development.
29
31
 
32
+ If you use Bundler, write the following line to your Gemfile. And use rdbg command with -c option.
33
+
34
+ ```
35
+ gem "debug", ">= 1.0.0.beta"
36
+ ```
37
+
38
+ ```
39
+ $ rdbg -c bundle exec ruby target.rb
40
+ ```
41
+
30
42
  # How to use
31
43
 
32
44
  ## Invoke with debugger
@@ -49,32 +61,34 @@ To use debugging feature, you can have 3 ways.
49
61
 
50
62
  ### Local debug console
51
63
 
64
+ #### (1) Use `rdbg` command
65
+
52
66
  ```
53
- # (1) Use `rdbg` command
54
67
  $ rdbg target.rb
55
68
  $ rdbg -- -r foo -e expr # -- is required to make clear rdbg options and ruby's options
69
+ ```
56
70
 
57
- # (2) Use `-r debug/run` command line option
71
+ #### (2) Use `-r debug/run` command line option
58
72
 
73
+ ```
59
74
  $ ruby -r debug/run target.rb
75
+ ```
60
76
 
61
- # (3) Write `require 'debug...' in .rb files
77
+ #### (3) Write `require 'debug...'` in .rb files
62
78
 
63
- $ cat target.rb
79
+ ```ruby
80
+ # target.rb
64
81
  require 'debug/run' # start the debug console
65
- ...
66
-
67
- # or
68
82
 
69
- $ cat target.rb
70
- require 'debug/session' # introduce the functionality
71
- DEBUGGER__.console # and start the debug console
83
+ # ... rest of program ...
84
+ ```
72
85
 
86
+ ```
73
87
  $ ruby target.rb
74
88
  ```
75
89
 
76
90
  When you run the program with the debug console, you will see the debug console prompt `(rdbg)`.
77
- The debuggee program (`target.rb`) is suspended at the beggining of `target.rb`.
91
+ The debuggee program (`target.rb`) is suspended at the beginning of `target.rb`.
78
92
 
79
93
  You can type any debugger's command described bellow. "c" or "continue" resume the debuggee program.
80
94
  You can suspend the debuggee program and show the debug console with `Ctrl-C`.
@@ -137,48 +151,51 @@ $ rdbg ~/src/rb/target.rb
137
151
  b => 2
138
152
  c => 3
139
153
 
140
- (rdbg) c # Contineu the program ("c" is a short name of "continue")
154
+ (rdbg) c # Continue the program ("c" is a short name of "continue")
141
155
  [6]
142
156
  ```
143
157
 
144
158
  ### Remote debug (1) UNIX domain socket
145
159
 
160
+ #### (1) Use `rdbg` command
161
+
146
162
  ```
147
- # (1) Use `rdbg` command
148
163
  $ rdbg --open target.rb # or rdbg -O target.rb for shorthand
149
164
  Debugger can attach via UNIX domain socket (/home/ko1/.ruby-debug-sock/ruby-debug-ko1-5042)
150
- ...
165
+ ```
151
166
 
152
- # (2) Use `-r debug/open` command line option
167
+ #### (2) Use `-r debug/open` command line option
153
168
 
169
+ ```
154
170
  $ ruby -r debug/open target.rb
155
171
  Debugger can attach via UNIX domain socket (/home/ko1/.ruby-debug-sock/ruby-debug-ko1-5042)
156
- ...
172
+ ```
173
+
174
+ #### (3) Write `require 'debug/open'` in .rb files
157
175
 
158
- # (3) Write `require 'debug/open' in .rb files
159
- $ cat target.rb
176
+ ```ruby
177
+ # target.rb
160
178
  require 'debug/open' # open the debugger entry point by UNIX domain socket.
161
- ...
162
179
 
163
180
  # or
164
181
 
165
- $ cat target.rb
166
182
  require 'debug/server' # introduce remote debugging feature
167
183
  DEBUGGER__.open # open the debugger entry point by UNIX domain socket.
168
184
  # or DEBUGGER__.open_unix to specify UNIX domain socket.
185
+ ```
169
186
 
187
+ ```
170
188
  $ ruby target.rb
171
189
  Debugger can attach via UNIX domain socket (/home/ko1/.ruby-debug-sock/ruby-debug-ko1-5042)
172
- ...
173
190
  ```
174
191
 
175
192
  It runs target.rb and accept debugger connection within UNIX domain socket.
176
- The debuggee process waits for debugger connection at the beggining of `target.rb` like that:
193
+ The debuggee process waits for debugger connection at the beginning of `target.rb` like that:
177
194
 
178
195
  ```
179
196
  $ rdbg -O ~/src/rb/target.rb
180
197
  DEBUGGER: Debugger can attach via UNIX domain socket (/home/ko1/.ruby-debug-sock/ruby-debug-ko1-29828)
181
- DEBUGGER: wait for debuger connection...
198
+ DEBUGGER: wait for debugger connection...
182
199
  ```
183
200
 
184
201
  You can attach the program with the following command:
@@ -204,7 +221,7 @@ and you can input any debug commands. `c` (or `continue`) continues the debuggee
204
221
  You can detach the debugger from the debugger process with `quit` command.
205
222
  You can re-connect to the debuggee process by `rdbg -A` command again, and the debuggee process suspends the execution (and debugger can input any debug commands).
206
223
 
207
- If you don't want to stop the debuggee process at the beggining of debuggee process (`target.rb`), you can use the fowllowings to specify "non-stop" option.
224
+ If you don't want to stop the debuggee process at the beginning of debuggee process (`target.rb`), you can use the following to specify "non-stop" option.
208
225
 
209
226
  * Use `rdbg -n` option
210
227
  * Set the environment variable `RUBY_DEBUG_NONSTOP=1`
@@ -233,40 +250,49 @@ The socket file is located at
233
250
 
234
251
  You can open the TCP/IP port instead of using UNIX domain socket.
235
252
 
253
+ #### (1) Use `rdbg` command
254
+
236
255
  ```
237
- # (1) Use `rdbg` command
238
256
  $ rdbg -O --port=12345 target.rb
239
257
  # or
240
258
  $ rdbg --open --port=12345 target.rb
241
259
  Debugger can attach via TCP/IP (localhost:12345)
242
- ...
260
+ ```
261
+
262
+ #### (2) Use `-r debug/open` command line option
243
263
 
244
- # (2) Use `-r debug/open` command line option
245
264
 
265
+ ```
246
266
  $ RUBY_DEBUG_PORT=12345 ruby -r debug/open target.rb
247
267
  Debugger can attach via TCP/IP (localhost:12345)
248
- ...
268
+ ```
269
+
270
+ #### (3) Write `require 'debug/open'` in .rb files
249
271
 
250
- # (3) Write `require 'debug/open' in .rb files
251
- $ cat target.rb
272
+ ```ruby
273
+ # target.rb
252
274
  require 'debug/open' # open the debugger entry point.
253
- ...
275
+ ```
254
276
 
255
- # and run with environment variable RUBY_DEBUG_PORT
277
+ and run with environment variable RUBY_DEBUG_PORT
278
+
279
+ ```
256
280
  $ RUBY_DEBUG_PORT=12345 ruby target.rb
257
281
  Debugger can attach via TCP/IP (localhost:12345)
258
- ...
282
+ ```
259
283
 
260
- # or
284
+ or
261
285
 
262
- $ cat target.rb
286
+ ```ruby
287
+ # target.rb
263
288
  require 'debug/server' # introduce remote debugging feature
264
289
  DEBUGGER__.open(port: 12345)
265
290
  # or DEBUGGER__.open_tcp(port: 12345)
291
+ ```
266
292
 
293
+ ```
267
294
  $ ruby target.rb
268
295
  Debugger can attach via TCP/IP (localhost:12345)
269
- ...
270
296
  ```
271
297
 
272
298
  You can also specify the host with the `RUBY_DEBUG_HOST` environment variable. And also `DEBUGGER__.open` method accepts a `host:` keyword parameter. If the host is not given, `localhost` will be used.
@@ -280,25 +306,23 @@ $ rdbg --attach hostname 12345
280
306
 
281
307
  ### Initial scripts
282
308
 
283
- If there are `.rdbgrc` files are there at the current directory and the home directory, files are loaded as initial scripts which contains debugger commands. `RUBY_DEBUG_INIT_SCRIPT` environment variable can specify the initial script file.
284
-
285
- Initial scripts are evaluted at the first suspend timing (generally, it is the beggining of the target script). For example, you can set break points with `break file:123`.
309
+ If there are `~/.rdbgrc`, the file is loaded as initial scripts which contains debugger commands at the beginning of debug session. `RUBY_DEBUG_INIT_SCRIPT` environment variable can specify the initial script file. You can write configurations in a file. For example, you can set break points with `break file:123` in `~/.rdbgrc`.
286
310
 
287
- If there are `.rdbgrc.rb` files at the current directory and the home directory, files are loaded as a ruby script at the initializing timing.
311
+ If there are `~/.rdbgrc.rb` is available, it is loaded as a ruby script at same timing.
288
312
 
289
313
  ### Environment variables
290
314
 
291
315
  You can control debuggee's behavior with environment variables:
292
316
 
293
- * `RUBY_DEBUG_NONSTOP`: 1 for nonstop at the beggining of program.
317
+ * `RUBY_DEBUG_NONSTOP`: 1 for nonstop at the beginning of program.
294
318
  * `RUBY_DEBUG_INIT_SCRIPT`: Initial script path loaded at the first stop.
295
319
  * `RUBY_DEBUG_COMMANDS`: Debug commands invoked at the first stop. Commands should be separated by ';;'.
296
320
  * `RUBY_DEBUG_SHOW_SRC_LINES`: Show n lines source code on breakpoint (default: 10 lines).
297
321
  * `RUBY_DEBUG_SHOW_FRAMES`: Show n frames on breakpoint (default: 2 frames).
298
-
299
322
  * Remote debugging
300
323
  * `RUBY_DEBUG_PORT`: TCP/IP remote debugging: port to open.
301
324
  * `RUBY_DEBUG_HOST`: TCP/IP remote debugging: host (localhost if not given) to open.
325
+ * `RUBY_DEBUG_SOCK_PATH`: UNIX Domain Socket remote debugging: socket path to open.
302
326
  * `RUBY_DEBUG_SOCK_DIR`: UNIX Domain Socket remote debugging: socket directory to open.
303
327
 
304
328
  ## Debug command on the debug console
@@ -308,7 +332,7 @@ You can control debuggee's behavior with environment variables:
308
332
  * [debug command compare sheet - Google Sheets](https://docs.google.com/spreadsheets/d/1TlmmUDsvwK4sSIyoMv-io52BUUz__R5wpu-ComXlsw0/edit?usp=sharing)
309
333
 
310
334
  You can use the following debug commands. Each command should be written in 1 line.
311
- The `[...]` notation means this part can be elimiante. For example, `s[tep]` means `s` or `step` are valid command. `ste` is not valid.
335
+ The `[...]` notation means this part can be eliminate. For example, `s[tep]` means `s` or `step` are valid command. `ste` is not valid.
312
336
  The `<...>` notation means the argument.
313
337
 
314
338
  ### Control flow
@@ -321,10 +345,14 @@ The `<...>` notation means the argument.
321
345
  * Finish this frame. Resume the program until the current frame is finished.
322
346
  * `c[ontinue]`
323
347
  * Resume the program.
324
- * `q[uit]` or exit or `Ctrl-D`
348
+ * `q[uit]` or `Ctrl-D`
325
349
  * Finish debugger (with the debuggee process on non-remote debugging).
326
- * `kill` or `q[uit]!`
327
- * Stop the debuggee process.
350
+ * `q[uit]!`
351
+ * Same as q[uit] but without the confirmation prompt.
352
+ * `kill`
353
+ * Stop the debuggee process with `Kernal#exit!`.
354
+ * `kill!`
355
+ * Same as kill but without the confirmation prompt.
328
356
 
329
357
  ### Breakpoint
330
358
 
@@ -345,8 +373,8 @@ The `<...>` notation means the argument.
345
373
  * Note that this feature is super slow.
346
374
  * `catch <Error>`
347
375
  * Set breakpoint on raising `<Error>`.
348
- * `watch <expr>`
349
- * Stop the execution when the result of <expr> is changed.
376
+ * `watch @ivar`
377
+ * Stop the execution when the result of current scope's `@ivar` is changed.
350
378
  * Note that this feature is super slow.
351
379
  * `del[ete]`
352
380
  * delete all breakpoints.
@@ -366,14 +394,14 @@ The `<...>` notation means the argument.
366
394
  * Show current frame's source code from the line <start> to <end> if given.
367
395
  * `edit`
368
396
  * Open the current file on the editor (use `EDITOR` environment variable).
369
- * Note that editted file will not be reloaded.
397
+ * Note that edited file will not be reloaded.
370
398
  * `edit <file>`
371
399
  * Open <file> on the editor.
372
- * `i[nfo]`
400
+ * `i[nfo]`, `i[nfo] l[ocal[s]]`
373
401
  * Show information about the current frame (local variables)
374
402
  * It includes `self` as `%self` and a return value as `%return`.
375
- * `i[nfo] <expr>`
376
- * Show information about the result of <expr>.
403
+ * `i[nfo] th[read[s]]`
404
+ * Show all threads (same as `th[read]`).
377
405
  * `display`
378
406
  * Show display setting.
379
407
  * `display <expr>`
@@ -388,13 +416,13 @@ The `<...>` notation means the argument.
388
416
  ### Frame control
389
417
 
390
418
  * `f[rame]`
391
- * Show current frame.
419
+ * Show the current frame.
392
420
  * `f[rame] <framenum>`
393
- * Specify frame. Evaluation are run on this frame environement.
421
+ * Specify a current frame. Evaluation are run on specified frame.
394
422
  * `up`
395
- * Specify upper frame.
423
+ * Specify the upper frame.
396
424
  * `down`
397
- * Specify down frame.
425
+ * Specify the lower frame.
398
426
 
399
427
  ### Evaluate
400
428
 
@@ -428,33 +456,50 @@ The `<...>` notation means the argument.
428
456
  exe/rdbg [options] -- [debuggee options]
429
457
 
430
458
  Debug console mode:
431
- -n, --nonstop Do not stop at the beggining of the script.
432
- -e [COMMAND] execute debug command at the beggining of the script.
433
- -O, --open Start debuggee with opning the debagger port.
459
+ -n, --nonstop Do not stop at the beginning of the script.
460
+ -e COMMAND Execute debug command at the beginning of the script.
461
+ -x, --init-script=FILE Execute debug command in the FILE.
462
+ --no-rc Ignore ~/.rdbgrc
463
+ --no-color Disable colorize
464
+ -c, --command Enable command mode.
465
+ The first argument should be a command name in $PATH.
466
+ Example: 'rdbg -c bundle exec rake test'
467
+
468
+ -O, --open Start remote debugging with opening the network port.
434
469
  If TCP/IP options are not given,
435
470
  a UNIX domain socket will be used.
436
- --port=[PORT] Listening TCP/IP port
437
- --host=[HOST] Listening TCP/IP host
471
+ --sock-path=SOCK_PATH UNIX Doman socket path
472
+ --port=PORT Listening TCP/IP port
473
+ --host=HOST Listening TCP/IP host
474
+ --cookie=COOKIE Set a cookie for connection
438
475
 
439
476
  Debug console mode runs Ruby program with the debug console.
440
477
 
441
- exe/rdbg target.rb foo bar starts like 'ruby target.rb foo bar'.
442
- exe/rdbg -- -r foo -e bar starts like 'ruby -r foo -e bar'.
443
- exe/rdbg -O target.rb foo bar starts and accepts attaching with UNIX domain socket.
444
- exe/rdbg -O --port 1234 target.rb foo bar starts accepts attaching with TCP/IP localhost:1234.
445
- exe/rdbg -O --port 1234 -- -r foo -e bar starts accepts attaching with TCP/IP localhost:1234.
478
+ 'rdbg target.rb foo bar' starts like 'ruby target.rb foo bar'.
479
+ 'rdbg -- -r foo -e bar' starts like 'ruby -r foo -e bar'.
480
+ 'rdbg -O target.rb foo bar' starts and accepts attaching with UNIX domain socket.
481
+ 'rdbg -O --port 1234 target.rb foo bar' starts accepts attaching with TCP/IP localhost:1234.
482
+ 'rdbg -O --port 1234 -- -r foo -e bar' starts accepts attaching with TCP/IP localhost:1234.
446
483
 
447
484
  Attach mode:
448
485
  -A, --attach Attach to debuggee process.
449
486
 
450
487
  Attach mode attaches the remote debug console to the debuggee process.
451
488
 
452
- 'exe/rdbg -A' tries to connect via UNIX domain socket.
489
+ 'rdbg -A' tries to connect via UNIX domain socket.
453
490
  If there are multiple processes are waiting for the
454
491
  debugger connection, list possible debuggee names.
455
- 'exe/rdbg -A path' tries to connect via UNIX domain socket with given path name.
456
- 'exe/rdbg -A port' tries to connect localhost:port via TCP/IP.
457
- 'exe/rdbg -A host port' tris to connect host:port via TCP/IP.
492
+ 'rdbg -A path' tries to connect via UNIX domain socket with given path name.
493
+ 'rdbg -A port' tries to connect to localhost:port via TCP/IP.
494
+ 'rdbg -A host port' tries to connect to host:port via TCP/IP.
495
+
496
+ Other options:
497
+ -h, --help Print help
498
+ --util=NAME Utility mode (used by tools)
499
+
500
+ NOTE
501
+ All messages communicated between a debugger and a debuggee are *NOT* encrypted.
502
+ Please use the remote debugging feature carefully.
458
503
 
459
504
  ```
460
505
 
@@ -462,3 +507,8 @@ Attach mode:
462
507
 
463
508
  Bug reports and pull requests are welcome on GitHub at https://github.com/ruby/debug.
464
509
 
510
+ Please also check the [contributing guideline](/CONTRIBUTING.md).
511
+
512
+ # Acknowledgement
513
+
514
+ * Some tests are based on [deivid-rodriguez/byebug: Debugging in Ruby 2](https://github.com/deivid-rodriguez/byebug)