There is one misconception about Ruby that's widespread both in and outside the Ruby community. The misconception is: Ruby does not have debuggers. Some argue that this is a problem of Ruby. Others try to interpret this perceived lack of debugging tools as wisdom and good style.

But no matter of the point of view: it's still a misconception. Ruby does indeed have debugging tools - actually quite a lot. Let's have a look at the available tools, both debugging GUIs, debugger implementations and debugging support in the various Ruby implementations.

What's a debugger?

Debugging GUIs and interfaces

interactive

Debugger protocol or connecting to the backend

telnet

VM support or debugging backend

language runtime

tracing

set_trace_func

breakpoint functionality

suspended

not

modifying

code

AST

opcodes

runtimes

built-in

Rubinius

regular opcode

special opcode

Debuggers and IDE support by Ruby implementation

Matz' Ruby Implementation (MRI)

Ruby/MRI

Debugging backends

GUI

JRuby

Debugging backends

GUI

set_trace_func

Rubinius

Debugging backends

GUI

sexp [method]

[method]

IronRuby

Debugging backends

GUI

The rest of the field

disclaimer

Related Sponsored Content 3 Common Pitfalls in Microservice Integration – And How to Avoid Them