You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: activesupport/lib/active_support/core_ext/kernel/debugger.rb
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
1
moduleKernel
2
2
unlessrespond_to?(:debugger)
3
-
# Starts a debugging session if ruby-debug has been loaded (call rails server --debugger to do load it).
3
+
# Starts a debugging session if the +debugger+ gem has been loaded (call rails server --debugger to do load it).
4
4
defdebugger
5
-
message="\n***** Debugger requested, but was not available (ensure ruby-debug19 is listed in Gemfile/installed as gem): Start server with --debugger to enable *****\n"
5
+
message="\n***** Debugger requested, but was not available (ensure the debugger gem is listed in Gemfile/installed as gem): Start server with --debugger to enable *****\n"
Copy file name to clipboardExpand all lines: guides/source/debugging_rails_applications.textile
+18-21Lines changed: 18 additions & 21 deletions
Original file line number
Diff line number
Diff line change
@@ -191,25 +191,21 @@ Completed in 0.01224 (81 reqs/sec) | DB: 0.00044 (3%) | 302 Found [http://localh
191
191
192
192
Adding extra logging like this makes it easy to search for unexpected or unusual behavior in your logs. If you add extra logging, be sure to make sensible use of log levels, to avoid filling your production logs with useless trivia.
193
193
194
-
h3. Debugging with +ruby-debug+
194
+
h3. Debugging with the +debugger+ gem
195
195
196
196
When your code is behaving in unexpected ways, you can try printing to logs or the console to diagnose the problem. Unfortunately, there are times when this sort of error tracking is not effective in finding the root cause of a problem. When you actually need to journey into your running source code, the debugger is your best companion.
197
197
198
198
The debugger can also help you if you want to learn about the Rails source code but don't know where to start. Just debug any request to your application and use this guide to learn how to move from the code you have written deeper into Rails code.
199
199
200
200
h4. Setup
201
201
202
-
The debugger used by Rails, +ruby-debug+, comes as a gem. To install it, just run:
202
+
Rails uses the +debugger+ gem to set breakpoints and step through live code. To install it, just run:
203
203
204
204
<shell>
205
-
$ sudo gem install ruby-debug
205
+
$ gem install debugger
206
206
</shell>
207
207
208
-
TIP: If you are using Ruby 1.9, you can install a compatible version of +ruby-debug+ by running +sudo gem install ruby-debug19+
209
-
210
-
In case you want to download a particular version or get the source code, refer to the "project's page on rubyforge":http://rubyforge.org/projects/ruby-debug/.
211
-
212
-
Rails has had built-in support for ruby-debug since Rails 2.0. Inside any Rails application you can invoke the debugger by calling the +debugger+ method.
208
+
Rails has had built-in support for debugging since Rails 2.0. Inside any Rails application you can invoke the debugger by calling the +debugger+ method.
213
209
214
210
Here's an example:
215
211
@@ -238,11 +234,11 @@ $ rails server --debugger
238
234
...
239
235
</shell>
240
236
241
-
TIP: In development mode, you can dynamically +require \'ruby-debug\'+ instead of restarting the server, if it was started without +--debugger+.
237
+
TIP: In development mode, you can dynamically +require \'debugger\'+ instead of restarting the server, if it was started without +--debugger+.
242
238
243
239
h4. The Shell
244
240
245
-
As soon as your application calls the +debugger+ method, the debugger will be started in a debugger shell inside the terminal window where you launched your application server, and you will be placed at ruby-debug's prompt +(rdb:n)+. The _n_ is the thread number. The prompt will also show you the next line of code that is waiting to run.
241
+
As soon as your application calls the +debugger+ method, the debugger will be started in a debugger shell inside the terminal window where you launched your application server, and you will be placed at the debugger's prompt +(rdb:n)+. The _n_ is the thread number. The prompt will also show you the next line of code that is waiting to run.
246
242
247
243
If you got there by a browser request, the browser tab containing the request will be hung until the debugger has finished and the trace has finished processing the entire request.
248
244
@@ -270,7 +266,7 @@ continue edit frame method putl set tmate where
270
266
271
267
TIP: To view the help menu for any command use +help <command-name>+ in active debug mode. For example: _+help var+_
272
268
273
-
The next command to learn is one of the most useful: +list+. You can also abbreviate ruby-debug commands by supplying just enough letters to distinguish them from other commands, so you can also use +l+ for the +list+ command.
269
+
The next command to learn is one of the most useful: +list+. You can abbreviate any debugging command by supplying just enough letters to distinguish them from other commands, so you can also use +l+ for the +list+ command.
274
270
275
271
This command shows you where you are in the code by printing 10 lines centered around the current line; the current line in this particular case is line 6 and is marked by +=>+.
276
272
@@ -347,7 +343,7 @@ h4. The Context
347
343
348
344
When you start debugging your application, you will be placed in different contexts as you go through the different parts of the stack.
349
345
350
-
ruby-debug creates a context when a stopping point or an event is reached. The context has information about the suspended program which enables a debugger to inspect the frame stack, evaluate variables from the perspective of the debugged program, and contains information about the place where the debugged program is stopped.
346
+
The debugger creates a context when a stopping point or an event is reached. The context has information about the suspended program which enables a debugger to inspect the frame stack, evaluate variables from the perspective of the debugged program, and contains information about the place where the debugged program is stopped.
351
347
352
348
At any time you can call the +backtrace+ command (or its alias +where+) to print the backtrace of the application. This can be very helpful to know how you got where you are. If you ever wondered about how you got somewhere in your code, then +backtrace+ will supply the answer.
353
349
@@ -463,7 +459,7 @@ h4. Step by Step
463
459
464
460
Now you should know where you are in the running trace and be able to print the available variables. But lets continue and move on with the application execution.
465
461
466
-
Use +step+ (abbreviated +s+) to continue running your program until the next logical stopping point and return control to ruby-debug.
462
+
Use +step+ (abbreviated +s+) to continue running your program until the next logical stopping point and return control to the debugger.
467
463
468
464
TIP: You can also use <tt>step<plus> n</tt> and <tt>step- n</tt> to move forward or backward +n+ steps respectively.
469
465
@@ -485,12 +481,12 @@ class Author < ActiveRecord::Base
485
481
end
486
482
</ruby>
487
483
488
-
TIP: You can use ruby-debug while using +rails console+. Just remember to +require "ruby-debug"+ before calling the +debugger+ method.
484
+
TIP: You can use the debugger while using +rails console+. Just remember to +require "debugger"+ before calling the +debugger+ method.
@@ -603,7 +599,7 @@ A simple quit tries to terminate all threads in effect. Therefore your server wi
603
599
604
600
h4. Settings
605
601
606
-
There are some settings that can be configured in ruby-debug to make it easier to debug your code. Here are a few of the available options:
602
+
The +debugger+ gem can automatically show the code you're stepping through and reload it when you change it in an editor. Here are a few of the available options:
607
603
608
604
* +set reload+: Reload source code when changed.
609
605
* +set autolist+: Execute +list+ command on every breakpoint.
@@ -612,7 +608,7 @@ There are some settings that can be configured in ruby-debug to make it easier t
612
608
613
609
You can see the full list by using +help set+. Use +help set _subcommand_+ to learn about a particular +set+ command.
614
610
615
-
TIP: You can include any number of these configuration lines inside a +.rdebugrc+ file in your HOME directory. ruby-debug will read this file every time it is loaded and configure itself accordingly.
611
+
TIP: You can save these settings in an +.rdebugrc+ file in your home directory. The debugger reads these global settings when it starts.
616
612
617
613
Here's a good start for an +.rdebugrc+:
618
614
@@ -637,7 +633,7 @@ If a Ruby object does not go out of scope, the Ruby Garbage Collector won't swee
637
633
To install it run:
638
634
639
635
<shell>
640
-
$ sudo gem install bleak_house
636
+
$ gem install bleak_house
641
637
</shell>
642
638
643
639
Then setup your application for profiling. Then add the following at the bottom of config/environment.rb:
@@ -703,11 +699,12 @@ There are some Rails plugins to help you to find errors and debug your applicati
0 commit comments