Sha256: 8c0091706f60feac03d4b9d2365c78e8ece32a28418d438e633c10c5fe46b6ee
Contents?: true
Size: 1.8 KB
Versions: 2
Compression:
Stored size: 1.8 KB
Contents
# -*- coding: utf-8 -*- # Copyright (C) 2010-2012 Rocky Bernstein <rockyb@rubyforge.net> require_relative '../base/subcmd' class Trepan::Subcommand::SetSp < Trepan::Subcommand unless defined?(HELP) Trepanning::Subcommand.set_name_prefix(__FILE__, self) HELP = 'set sp INTEGER-EXPRESSION Set VM stack-pointer register (SP) to INTEGER-EXPRESSION. Warning: this is potentially dangerous. ' SHORT_HELP = 'Set a stack pointer register' IN_LIST = true MIN_ABBREV = 'sp'.size end def run(args) # FIXME handle c-return # unless %w(return c-return).member?(@proc.event) if args.size < 4 errmsg "Too few arguments - the 'sp' command requires number and a value" return end msg_on_error = "set SP requires an integer index" index = @proc.get_an_int(args[2], :msg_on_error => msg_on_error ) return unless index new_val_str = args[3..-1].join(' ') begin new_val = @proc.debug_eval(new_val_str) rescue StandardError, ScriptError => e return end msg("Old value was: %s" % @proc.frame.sp(index).inspect) @proc.frame.sp_set(index, new_val).inspect msg("New value is: %s" % new_val.inspect) end end if __FILE__ == $0 # Demo it. require_relative '../../mock' require_relative '../../subcmd' name = File.basename(__FILE__, '.rb') # FIXME: DRY the below code dbgr, cmd = MockTrepan::setup('set') subcommand = Trepan::Subcommand::SetSp.new(cmd) testcmdMgr = Trepan::Subcmd.new(subcommand) def subcommand.msg(message) puts message end def subcommand.msg_nocr(message) print message end def subcommand.errmsg(message) puts message end subcommand.run(%w(20)) name = File.basename(__FILE__, '.rb') subcommand.summary_help(name) end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
trepanning-1.93.35 | processor/command/set_subcmd/sp.rb |
trepanning-1.93.32 | processor/command/set_subcmd/sp.rb |