Context and further resources
Even though you can get 90% of debugging done with up to 5 basic byebug commands, it comes in handy with it's features for many use cases beyond that to make your life easier.
For this cheatsheat I tried to structure the most useful commands by different use cases, such that a practical oriented overview of all the commands can be gathered by going over this cheatsheet. For some commands I added some tips for their usage and further details on their subcommands
- For most of the commands shortly explained here, there are some examples along with a listing of all commands in the byebug guide Show archive.org snapshot
- The linked cheatsheet at the bottom Show archive.org snapshot also includes some examples and all the aliases to every command with a different useful structuring of most of these commands
- You can also use the
helpcommand anytime during a bybebug session to find out more about commands
Cheatsheet
General
-
quit-- Exits byebug -
help <cmd> <subcmd>-- show information about any command with it's aliases and parameters- Can be used as
help,help <cmd>andhelp <cmd> <subcmd>, ...
- Can be used as
-
history-- display history of commands -
irb-- starts an irb console which helps to execute any command that conflicts with byebug Show archive.org snapshot
Navigation within the executed program
Breakpoints
-
continue [n]-- Runs until program ends, hits a breakpoint or reaches linen -
continue!- execute to end of program by ignoring all breakpoints -
skip-- Runs until the next breakpoint as long as it is different from the current one
Lines
-
step [n]-- Steps into blocks or methodsntimes. If you accidentallystepped, you can return withfinish 1. -
next [n]-- Runsnlines of code within the same frame
Stacktrace
-
frame [n]-- Moves to a frame in then-th call stack- You can use
whereto find out the numbers
- You can use
-
finish [n]-- Runs the program until then-th frame returns -
up-- Moves to a higher frame in the stack trace -
down-- Moves to a lower frame in the stack trace
Find out context for the current debugging session (or breakpoint)
-
where-- Displays the backtrace -
list [[-=]] [ nn-mm]-- Lists coming lines of source code from last breakpoint-
list-lists previous code lines -
list=lists code from current line around that line -
list d-flists lines fromdtof
-
-
info [subcommand]-- Shows several informations about the program and the current debugging session,
[subcommand]can be any of:breakpoints-
display-- displayed variables -
file,line,program -
argsof the current stack frame
# Show archive.org snapshot Find out variables and methods
-
var [type] [object]-- Shows specified variables and its values,
[type](and possibly[object]) can be used as:-
const <object>-- listing variables and their values in<object>.constant -
instance <object>-- listing<object>.instance_variables. -
instance-- instance_variables of self. -
local-- local variables. -
global-- global variables
-
-
method-- shows variables of specified object, class or module-
method instance <object>-- The same as running<object>.instance_methods(false). -
method <class-or-module>-- The same as running<class-or-module>.methods.
-
Commands to change (or add) behavior at breakpoints
-
display/undisplay [<expression>]- display or undisplays an expression at stopped breakpoint-
enable/disable [id]can be used activate and deactivate displayed values -
info displaycan be used to show all id's of displayed variables
-
-
condition <i>[ <expression>]-- Sets conditions on breakpointito stop only when<expression>is true-
info breakpointscan be used to show all id's of breakpoints
-
-
catch <exception>-- Catches the specified exception- You can use the subcommands to turn off catching all together or only for specific exceptions:
catch offcatch <exception> off
- You can use the subcommands to turn off catching all together or only for specific exceptions:
-
thread-- Commands to manipulate threads- If you ever have to deal with threads
byebugsupports stopping, switching, resuming and listing all current threadsstopped at the breakpoint
- If you ever have to deal with threads
Commands add (or delete) breakpoint(s)
-
break [n]- Set breakpoint at linenin the current file- Can be used to add breakpoints at any file with
break [<file>:]<line>
- Can be used to add breakpoints at any file with
-
delete-- All breakpoints can be deleted by using thedeletecommand- Use
info breakpointsto find out the breakpoint's id
- Use
Shortcuts
While debugging you don't have to type out all commands presented above. For most of them it is enough to type the first letter, e.g.:
-
cinstead ofcontinue- You can also use
c!
- You can also use
-
sinstead ofstep -
l=instead oflist=
Posted by Felix Eschey to makandra dev (2023-07-06 11:51)