Class: Debugger::Context
- Inherits:
-
Object
- Object
- Debugger::Context
- Defined in:
- lib/ruby-debug.rb,
ext/ruby_debug.c
Defined Under Namespace
Classes: Frame
Instance Method Summary collapse
-
#frames ⇒ Array
Returns an array of frames.
-
#ignore ⇒ Boolean
Returns the ignore flag for the current context.
-
#tracking=(bool) ⇒ Object
Controls the ignore flag for this context.
- #interrupt ⇒ Object
-
#resume ⇒ nil
Resumes the thread from the suspended mode.
-
#step_over(steps) ⇒ Object
Steps over a
steps
number of times. -
#stop_frame(frame) ⇒ Object
Stops when a frame with number
frame
is activated. -
#stop_next=(steps) ⇒ Object
Stops the current context after a number
steps
are made. -
#suspend ⇒ nil
Suspends the thread when it is running.
-
#thnum ⇒ Integer
Returns the context’s number.
-
#thread ⇒ Object
Returns a thread this context is associated with.
-
#tracing ⇒ Boolean
Returns the tracing flag for the current context.
-
#tracking=(bool) ⇒ Object
Controls the tracing for this context.
Instance Method Details
#frames ⇒ Array
Returns an array of frames.
1277 1278 1279 1280 1281 1282 1283 1284 |
# File 'ext/ruby_debug.c', line 1277 static VALUE context_frames(VALUE self) { debug_context_t *debug_context; Data_Get_Struct(self, debug_context_t, debug_context); return debug_context->frames; } |
#ignore ⇒ Boolean
Returns the ignore flag for the current context.
1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 |
# File 'ext/ruby_debug.c', line 1401 static VALUE context_ignore(VALUE self) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); return CTX_FL_TEST(debug_context, CTX_FL_IGNORE) ? Qtrue : Qfalse; } |
#tracking=(bool) ⇒ Object
Controls the ignore flag for this context.
1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 |
# File 'ext/ruby_debug.c', line 1418 static VALUE context_set_ignore(VALUE self, VALUE value) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); if(RTEST(value)) CTX_FL_SET(debug_context, CTX_FL_IGNORE); else CTX_FL_UNSET(debug_context, CTX_FL_IGNORE); return value; } |
#interrupt ⇒ Object
17 18 19 |
# File 'lib/ruby-debug.rb', line 17 def interrupt self.stop_next = 1 end |
#resume ⇒ nil
Resumes the thread from the suspended mode.
1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 |
# File 'ext/ruby_debug.c', line 1342 static VALUE context_resume(VALUE self) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); if(!CTX_FL_TEST(debug_context, CTX_FL_SUSPEND)) rb_raise(rb_eRuntimeError, "Thread is not suspended."); CTX_FL_UNSET(debug_context, CTX_FL_SUSPEND); rb_thread_run(debug_context->thread); return Qnil; } |
#step_over(steps) ⇒ Object
Steps over a steps
number of times.
1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 |
# File 'ext/ruby_debug.c', line 1222 static VALUE context_step_over(int argc, VALUE *argv, VALUE self) { VALUE lines, frame; debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); if(RARRAY(debug_context->frames)->len == 0) rb_raise(rb_eRuntimeError, "No frames collected."); rb_scan_args(argc, argv, "11", &lines, &frame); debug_context->stop_line = FIX2INT(lines); if(argc == 1) { debug_context->dest_frame = RARRAY(debug_context->frames)->len; } else { if(FIX2INT(frame) < 0 && FIX2INT(frame) >= RARRAY(debug_context->frames)->len) rb_raise(rb_eRuntimeError, "Destination frame is out of range."); debug_context->dest_frame = FIX2INT(frame); } return Qnil; } |
#stop_frame(frame) ⇒ Object
Stops when a frame with number frame
is activated. Implements up
and down
commands.
1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 |
# File 'ext/ruby_debug.c', line 1256 static VALUE context_stop_frame(VALUE self, VALUE frame) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); if(FIX2INT(frame) < 0 && FIX2INT(frame) >= RARRAY(debug_context->frames)->len) rb_raise(rb_eRuntimeError, "Stop frame is out of range."); debug_context->stop_frame = FIX2INT(frame); return frame; } |
#stop_next=(steps) ⇒ Object
Stops the current context after a number steps
are made.
1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 |
# File 'ext/ruby_debug.c', line 1201 static VALUE context_stop_next(VALUE self, VALUE steps) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); if(FIX2INT(steps) < 0) rb_raise(rb_eRuntimeError, "Steps argument can't be negative."); debug_context->stop_next = FIX2INT(steps); return steps; } |
#suspend ⇒ nil
Suspends the thread when it is running.
1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 |
# File 'ext/ruby_debug.c', line 1322 static VALUE context_suspend(VALUE self) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); if(CTX_FL_TEST(debug_context, CTX_FL_SUSPEND)) rb_raise(rb_eRuntimeError, "Already suspended."); CTX_FL_SET(debug_context, CTX_FL_SUSPEND); return Qnil; } |
#thnum ⇒ Integer
Returns the context’s number.
1307 1308 1309 1310 1311 1312 1313 1314 |
# File 'ext/ruby_debug.c', line 1307 static VALUE context_thnum(VALUE self) { debug_context_t *debug_context; Data_Get_Struct(self, debug_context_t, debug_context); return INT2FIX(debug_context->thnum); } |
#thread ⇒ Object
Returns a thread this context is associated with.
1292 1293 1294 1295 1296 1297 1298 1299 |
# File 'ext/ruby_debug.c', line 1292 static VALUE context_thread(VALUE self) { debug_context_t *debug_context; Data_Get_Struct(self, debug_context_t, debug_context); return debug_context->thread; } |
#tracing ⇒ Boolean
Returns the tracing flag for the current context.
1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 |
# File 'ext/ruby_debug.c', line 1363 static VALUE context_tracing(VALUE self) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); return CTX_FL_TEST(debug_context, CTX_FL_TRACING) ? Qtrue : Qfalse; } |
#tracking=(bool) ⇒ Object
Controls the tracing for this context.
1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 |
# File 'ext/ruby_debug.c', line 1380 static VALUE context_set_tracing(VALUE self, VALUE value) { debug_context_t *debug_context; debug_check_started(); Data_Get_Struct(self, debug_context_t, debug_context); if(RTEST(value)) CTX_FL_SET(debug_context, CTX_FL_TRACING); else CTX_FL_UNSET(debug_context, CTX_FL_TRACING); return value; } |