class Metasm::Gui::DbgWindow

Attributes

dbg_widget[RW]

Public Instance Methods

build_menu() click to toggle source
# File metasm/gui/debug.rb, line 1256
def build_menu
        filemenu = new_menu
        addsubmenu(filemenu, '_attach process') { @dbg_widget.prompt_attach }
        addsubmenu(filemenu, 'create _process') { @dbg_widget.prompt_createprocess }
        addsubmenu(filemenu, 'open _dasm window') { DasmWindow.new }
        addsubmenu(filemenu)
        addsubmenu(filemenu, 'QUIT') { destroy }

        addsubmenu(@menu, filemenu, '_File')

        dbgmenu = new_menu
        addsubmenu(dbgmenu, 'continue', '<f5>') { @dbg_widget.dbg_continue }
        addsubmenu(dbgmenu, 'step over', '<f10>') { @dbg_widget.dbg_stepover }
        addsubmenu(dbgmenu, 'step into', '<f11>') { @dbg_widget.dbg_singlestep }
        addsubmenu(dbgmenu, '_kill target') { @dbg_widget.dbg.kill }
        addsubmenu(dbgmenu, '_detach target') { @dbg_widget.dbg.detach }
        addsubmenu(dbgmenu)
        addsubmenu(dbgmenu, 'QUIT') { destroy }

        addsubmenu(@menu, dbgmenu, '_Debug')

        codeviewmenu = new_menu
        addsubmenu(codeviewmenu, '_listing') { @dbg_widget.code.focus_addr(@dbg_widget.code.curaddr, :listing) }
        addsubmenu(codeviewmenu, '_graph') { @dbg_widget.code.focus_addr(@dbg_widget.code.curaddr, :graph) }
        addsubmenu(codeviewmenu, 'raw _opcodes') { @dbg_widget.code.focus_addr(@dbg_widget.code.curaddr, :opcodes) }

        dataviewmenu = new_menu
        addsubmenu(dataviewmenu, '_hexa') { @dbg_widget.mem.focus_addr(@dbg_widget.mem.curaddr, :hex) }
        addsubmenu(dataviewmenu, 'raw _opcodes') { @dbg_widget.mem.focus_addr(@dbg_widget.mem.curaddr, :opcodes) }
        addsubmenu(dataviewmenu, '_c struct') { @dbg_widget.mem.focus_addr(@dbg_widget.mem.curaddr, :cstruct) }

        focusmenu = new_menu
        addsubmenu(focusmenu, '_regs') { @dbg_widget.regs.grab_focus ; @dbg_widget.redraw }
        addsubmenu(focusmenu, '_data') { @dbg_widget.mem.grab_focus ; @dbg_widget.redraw }
        addsubmenu(focusmenu, '_code') { @dbg_widget.code.grab_focus ; @dbg_widget.redraw }
        addsubmenu(focusmenu, 'conso_le', '.') { @dbg_widget.console.grab_focus ; @dbg_widget.redraw }

        viewmenu = new_menu
        addsubmenu(viewmenu, codeviewmenu, '_code display')
        addsubmenu(viewmenu, dataviewmenu, '_data display')
        addsubmenu(viewmenu, focusmenu, '_focus')
        addsubmenu(viewmenu, 'data _watch') { @dbg_widget.prompt_datawatch }
        addsubmenu(@menu, viewmenu, '_Views')
end
display(dbg) click to toggle source

show a new DbgWidget

# File metasm/gui/debug.rb, line 1249
def display(dbg)
        @dbg_widget = DbgWidget.new(dbg)
        @dbg_widget.win = self
        self.widget = @dbg_widget
        @dbg_widget
end
initialize_window(dbg = nil, title='metasm debugger') click to toggle source
# File metasm/gui/debug.rb, line 1242
def initialize_window(dbg = nil, title='metasm debugger')
        dbg, title = title, dbg if dbg.kind_of?(::String) or title.kind_of?(Debugger)
        self.title = title
        display(dbg) if dbg
end