Bird
Raised Fist0
Rubyprogramming~20 mins

Debugging with pry and byebug in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby Debugging Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output when using pry to inspect a variable?
Consider the following Ruby code snippet using pry. What will be printed when the program hits the binding.pry line and you type x in the pry console?
Ruby
require 'pry'
x = 10
binding.pry
puts "Done"
A10
Bnil
CError: undefined local variable or method `x`
DNothing is printed
Attempts:
2 left
💡 Hint
Remember that binding.pry pauses execution and lets you inspect variables in the current scope.
❓ Predict Output
intermediate
2:00remaining
What happens when byebug hits a breakpoint?
Given this Ruby code using byebug, what will be the output when the program pauses at byebug and you type y + 5 in the debugger console?
Ruby
require 'byebug'
y = 7
byebug
puts y + 3
A10
B12
CError: undefined local variable or method `y`
DNothing, program continues without pause
Attempts:
2 left
💡 Hint
Byebug pauses execution and lets you evaluate expressions in the current context.
❓ Predict Output
advanced
2:00remaining
What error does this code raise when using pry incorrectly?
What error will this Ruby code raise when run?
Ruby
require 'pry'
Pry.start
x = 5
ANo error, program runs fine
BRuntimeError: Pry session already started
CNoMethodError: undefined method `start` for Pry:Module
DSyntaxError: unexpected end-of-input
Attempts:
2 left
💡 Hint
Check if Pry.start is a valid method call.
❓ Predict Output
advanced
2:00remaining
What is the output after continuing from a byebug breakpoint?
Given this Ruby code, what will be printed after you type continue in the byebug console?
Ruby
require 'byebug'
x = 3
byebug
x += 4
puts x
A7
BNothing, program stuck at breakpoint
CError: undefined local variable or method `x`
D3
Attempts:
2 left
💡 Hint
After continuing, the program runs the next lines normally.
🧠 Conceptual
expert
3:00remaining
Which option correctly explains the difference between pry and byebug?
Choose the best explanation of how pry and byebug differ in Ruby debugging.
APry only works with Rails apps; byebug only works with Ruby scripts.
BPry and byebug are identical tools with different names.
CPry is used for performance profiling; byebug is used for syntax checking.
DPry is an interactive REPL allowing live code inspection and modification; byebug is a step-by-step debugger focused on breakpoints and stepping through code.
Attempts:
2 left
💡 Hint
Think about how each tool lets you interact with running code.

Practice

(1/5)
1. What is the main purpose of using binding.pry or byebug in Ruby code?
easy
A. To pause the program and inspect variables at a specific point
B. To speed up the execution of the program
C. To automatically fix syntax errors
D. To compile Ruby code into machine code

Solution

  1. Step 1: Understand the role of debugging tools

    Both binding.pry and byebug are used to pause program execution.
  2. Step 2: Inspect variables and program state

    When paused, you can check variable values and program flow to find issues.
  3. Final Answer:

    To pause the program and inspect variables at a specific point -> Option A
  4. Quick Check:

    Debugging tools pause and inspect = A [OK]
Hint: They pause code to check variables and flow [OK]
Common Mistakes:
  • Thinking they speed up code
  • Believing they fix errors automatically
  • Confusing with code compilation
2. Which of the following is the correct way to insert a breakpoint using Pry in Ruby code?
easy
A. debug.pry
B. breakpoint.pry
C. pry.binding
D. binding.pry

Solution

  1. Step 1: Recall Pry syntax for breakpoints

    The correct syntax to pause execution with Pry is binding.pry.
  2. Step 2: Check other options for correctness

    Other options like breakpoint.pry, pry.binding, and debug.pry are invalid method calls.
  3. Final Answer:

    binding.pry -> Option D
  4. Quick Check:

    Correct Pry breakpoint syntax = D [OK]
Hint: Use exactly 'binding.pry' to pause with Pry [OK]
Common Mistakes:
  • Swapping method and object order
  • Using non-existent methods
  • Forgetting to require 'pry'
3. What will be the output when running this Ruby code with byebug inserted?
def add(a, b)
  byebug
  a + b
end

puts add(2, 3)
medium
A. 5
B. byebug error
C. nil
D. SyntaxError

Solution

  1. Step 1: Understand what byebug does

    It pauses execution allowing inspection but does not change the return value.
  2. Step 2: Trace the function call and output

    The method add(2, 3) returns 5, which is printed by puts.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    byebug pauses but output is 5 [OK]
Hint: byebug pauses but returns normal output [OK]
Common Mistakes:
  • Expecting byebug to change output
  • Thinking byebug causes errors
  • Confusing pause with program stop
4. You inserted binding.pry in your Ruby code, but when you run it, the program does not pause. What is the most likely reason?
medium
A. You used byebug instead of binding.pry
B. You forgot to require the 'pry' gem in your code
C. The Ruby version does not support debugging
D. You placed binding.pry after the return statement

Solution

  1. Step 1: Check if 'pry' gem is loaded

    Without require 'pry', binding.pry is undefined and won't pause.
  2. Step 2: Verify placement and usage

    Using binding.pry correctly requires the gem loaded; placing after return stops execution before breakpoint.
  3. Final Answer:

    You forgot to require the 'pry' gem in your code -> Option B
  4. Quick Check:

    Missing require 'pry' stops pause [OK]
Hint: Always require 'pry' before using binding.pry [OK]
Common Mistakes:
  • Not requiring the gem
  • Placing breakpoint after return
  • Confusing pry with byebug usage
5. You want to debug a method that processes a list of numbers and stops only when a number is negative. Which debugging tool and approach is best to use?
hard
A. Use puts statements to print all numbers
B. Insert byebug at the start of the method without any condition
C. Insert binding.pry inside the loop with a condition to pause only if the number is negative
D. Run the program without breakpoints and guess the error

Solution

  1. Step 1: Understand conditional breakpoints

    Using binding.pry with a condition lets you pause only when needed, saving time.
  2. Step 2: Compare other options

    Using byebug without condition pauses every time, puts is less interactive, guessing is ineffective.
  3. Final Answer:

    Insert binding.pry inside the loop with a condition to pause only if the number is negative -> Option C
  4. Quick Check:

    Conditional breakpoint with binding.pry = A [OK]
Hint: Use conditional binding.pry to pause only on negative numbers [OK]
Common Mistakes:
  • Pausing unconditionally causing many stops
  • Relying only on print statements
  • Ignoring debugging tools
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard